|
使用外健 foreign key
foreign key(当前表里字段名) references 表名(表名里的字段名) on update cascade on delete cascade engine=innodb;
外健 当前表 引用 另一表名 另一表字段名 同步更新串联同步删除串联
1.表的存储引擎要是innodb存储引擎
2.外健字段的类型要匹配
3.被参照字段要有明确的索引(index.unique,primary key)
三.mysql存储引擎 I/O insert out 插进去 读出来
1.mysql 体系结构
mysql是由连接池、sql接口、分析器、优化器、
缓存和缓冲、管理工具、存储引擎、物理存储设备
1.连接池:进程数限制、内存检查、缓存检查等
2.SQL接口:用户通过sql客户发过来的命令,由sql接口接收,sql操作有:
DML数据操作语言:查询,修改,升级数据等
DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等
3.分析器:分析查询语句 事务处理 对象访问权限
4.优化器:优化访问路径、生成执行树
5.缓存和缓冲 保存sql查询结果
6.管理工具,备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道
不需要和mysql-server打交道,他们对应的都是命令。
7.存储引擎:用来管理文件系统,将逻辑结构转换为物理结构的程序。负责为数据库执行实际的数据I/O操作
不同的存储引擎有不同的功能和存储方式;
8.物理存储设备(文件系统)
show engines 查看当前数据库服务器支持哪些存储引擎
show variables like "table_type"显示当前服务器所使用的引擎
变量 如
create talbe 表名(字段列表)engine=存储引擎名;
create table s1(id int)engine=innodb;
show create table s1;
查询是什么搜索引擎
1)更改引擎 <- 法1
alter table 表名 engine=存储引擎名
alter table t1 engine=MyISAM
查看修改后的结果
show create t1\G;
2)更改引擎 <- 法2
mysql_converttable_format --usr=root --password=wsyht123 --socker=/data/3306/mysql.sock --engine-MyISAM wsyht t1 #wsyht是库名,和t1是表名
show variables like "table_type";
显示表类型
vim /etc/my.cnf
在上文件打开如下文件
default-storage-engine=innodb;
默认的存储引擎InnoDB
yg_id 员工编号
yg_name 员工姓名
create table studb.yg_tab(
yg_id int(2) primary key auto_increment,
yg_name varchar(10) not null,
)engine=innodb;
gz_tab
id 工资记录编号
gz_id 员工编号
gz 工资
create table studb.gz_tab(
id int(2) primary key auto_increment,
gz_id int(2) not null,
gz float(7,2),
foreign key(gz_id) references yg_tab(yg_id) on update
cascade on delete cascade)engine=innodb;
insert into studb.yg_tab(yg_name)vlaues("jim");
insert into gz_tab(gz_id,gz)values(1,100000.99);
update yg_tab set yg_id=8 where yg_id=2; 更新表记录
更新yg_tab这个表设置成id=8,条件id=2的编号里修改
myisam
默认使用的存储引擎
独享表空间
不技持事务和事务回滚
支持表锁
innodb
共享表空间
支持事务和事务回滚
支持行锁
事务:你的一次sql操作从开始执行到正确执行结速的这个过程称为事务
事务回滚:
set autocommit=0;
关闭自动提交
接着提交
commit; 提交,出问题执行错误,就要回滚rollback;
start transaction;
开启一个事务
create table t200(id int)engine=innodb; 必须要在innodb的情况下开启事务
insert into t200 values(200);
select *from t200;
rollback;
回滚 回复到之前的状态
commit;提交
锁机制(解决用户的并发访问问题)
锁类型
写锁(delete update insert)互斥锁 排他锁
读锁(select desc show)共享锁
幻读
脏读
锁粒度
表锁(myisam) 并发访问量不高 系统开销小
行锁(innodb) 并发访问高 系统开销大
10 1 writelock
|
|
|