MySql数据库的基本操作-外键约束的参照操作-父表变化,子表的动作
2014-09-29 06:21
281 查看
创建表 users1
create table users1(
-> id smallint unsigned primary key auto_increment,
-> username varchar(10) not null,
-> pid smallint unsigned,
-> foreign key (pid) references provinces (id)on delete cascade -> );
其中 on delete cascade意思是,当父表中删除/更新了,子表中也立即删除/更新。
在刚才的table provinces中,插入三条记录,并在子table users1插入一条记录:
![](https://img-blog.csdn.net/20140929061816015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGltYW5pbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
insert users1(username,pid) values(‘Tom',3);
其中Tom是username,3就是第3个,就是父表中的C。
如果insert users1(username,pid) values(‘David’,6);
无法insert数据,因为父表最大只到3,而插入的数据pid是6.
所以,可以改为:insert users1(username,pid) values(‘Ross',1);
查询users1中的记录:
![](https://img-blog.csdn.net/20140929062001186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGltYW5pbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
之前记录未写入成功,但id还是自动+1。
将父表中的id=3删除,是否会影响子表的数据:
delete from provinces where id = 3;
![](https://img-blog.csdn.net/20140929061829859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGltYW5pbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
子表中pid=3的记录已经全部被删除。
同样的,还有些其他的外键约束:
1.cascade:若父表删除/更新,则子表相应删除/更新;
2.set null:若父表删除/更新,则子表相应的外键设置为null(相应字段不能是not null);
3.restrict:若父表删除/更新,子表无变化;
4.no action:与restrict一样。
mac终端进入mysql:/usr/local/mysql/bin/mysql
http://www.imooc.com 来自iMooc的教学
create table users1(
-> id smallint unsigned primary key auto_increment,
-> username varchar(10) not null,
-> pid smallint unsigned,
-> foreign key (pid) references provinces (id)on delete cascade -> );
其中 on delete cascade意思是,当父表中删除/更新了,子表中也立即删除/更新。
在刚才的table provinces中,插入三条记录,并在子table users1插入一条记录:
insert users1(username,pid) values(‘Tom',3);
其中Tom是username,3就是第3个,就是父表中的C。
如果insert users1(username,pid) values(‘David’,6);
无法insert数据,因为父表最大只到3,而插入的数据pid是6.
所以,可以改为:insert users1(username,pid) values(‘Ross',1);
查询users1中的记录:
之前记录未写入成功,但id还是自动+1。
将父表中的id=3删除,是否会影响子表的数据:
delete from provinces where id = 3;
子表中pid=3的记录已经全部被删除。
同样的,还有些其他的外键约束:
1.cascade:若父表删除/更新,则子表相应删除/更新;
2.set null:若父表删除/更新,则子表相应的外键设置为null(相应字段不能是not null);
3.restrict:若父表删除/更新,子表无变化;
4.no action:与restrict一样。
mac终端进入mysql:/usr/local/mysql/bin/mysql
http://www.imooc.com 来自iMooc的教学
相关文章推荐
- MySql数据库的基本操作-表数据中的 设置外键约束
- MYSQL数据库(六)- 外键约束的参照操作
- MySql数据库的基本操作-修改表-添加/修改约束(默认值)
- MySql入门之一:DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- MySql数据库的基本操作-修改表-删除约束
- MySQL数据库——创建约束基本操作
- MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- MySql数据库的基本操作-表数据中的 唯一约束 & 默认约束
- MySQL数据库——修改约束基本操作
- MySQL-外键约束的参照操作
- mysql学习2—外键约束的参照操作
- 外键约束的参照操作(十八)
- MYSQL外键约束的参照操作
- jdbcTemplate操作MYSQL数据库时有外键约束无法插入或删除
- 通过sql语句对mysql数据库进行基本的操作
- mysql数据库基本操作
- Mysql数据库基本指令操作
- JAVA连接到MySQL数据库的基本操作
- (三) MySQL数据库基本操作
- 表与表直接由于存在外键约束而导致删除操作失败