没有合适的资源?快使用搜索试试~ 我知道了~
MySQL外键约束的实例讲解
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 下载量 27 浏览量
2020-12-14
06:44:31
上传
评论
收藏 73KB PDF 举报
温馨提示


试读
4页
MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照。 2、必须为父表定义主键。 3、主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 4、外键中列的数
资源推荐
资源详情
资源评论














MySQL外键约束的实例讲解外键约束的实例讲解
MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主
要是为了保证表数据的一致性和完整性的。
对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义
外键的时候需要遵守几个规则:
1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为
自参照表,这种结构称为自参照。
2、必须为父表定义主键。
3、主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容
就是正确的。
4、外键中列的数目必须和父表的主键中列的数目相同。
5、外键中列的数据类型必须和父表主键中对应列的数据类型相同。说这么多比较笼统,还是看看例子吧。
mysql:yeyztest ::>>create table fk_test_1(
-> id int not null primary key auto_increment,
-> name varchar() default '');
Query OK, rows affected (0.10 sec)
mysql:yeyztest ::>>create table fk_test_2(
-> id int not null primary key auto_increment,
-> uid int,
-> foreign key fk_uid(uid) references fk_test_1(id));
Query OK, rows affected (0.06 sec)
这里我们创建两个表,一个是fk_test_1,一个是fk_test_2,其中fk_test_2的uid列上设置外键,关联fk_test_1的表的id列,这
里很明显,fk_test_1是父表,而fk_test_2是子表,接下来我们进行数据插入实验。
mysql:yeyztest ::>>insert into fk_test_1 values (,'aaa'),(,'bbb');
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings:
mysql:yeyztest ::>>select * from fk_test_1;
+----+------+
| id | name |
+----+------+
| | aaa |
| | bbb |
+----+------+
rows in set (0.00 sec)
mysql:yeyztest ::>>insert into fk_test_2 values (,),(,);
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings:
mysql:yeyztest ::>>insert into fk_test_2 values (,);
Query OK, row affected (0.00 sec)
mysql:yeyztest ::>>insert into fk_test_2 values (,);
ERROR (): Cannot add or update a child row: a foreign key constraint fails (`yeyztest`.`fk_test_2`, CONSTRAINT
`fk_test_2_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `fk_test_1` (`id`))
先在主表上插入两条数据,分别是id=1和id=2的数据,然后再子表插入数据,子表插入uid=1和uid=2的数据都能成功,而要
插入uid=3的数据时提示失败,也就是说,默认情况下,子表进行插入时,插入的外键关联字段值必须是父表被关联的列包含默认情况下,子表进行插入时,插入的外键关联字段值必须是父表被关联的列包含
的值。注意这里的默认情况,后续会进行说明。的值。注意这里的默认情况,后续会进行说明。
再来看看删除的情况,
mysql:yeyztest ::>>select * from fk_test_2 ;
+----+------+
| id | uid |
+----+------+
| | |
| | |
| | |
+----+------+
rows in set (0.00 sec)
资源评论


weixin_38607554
- 粉丝: 4
- 资源: 972
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
