SQL的约束_FOREIGN KEY

1 作用:
实现关系型数据库的参照完整性特征,建立了2个表之间的联系,数据表A中的主键时数据表B中的字段,则该字段称之为数据表B的外键,修改或者删除的级联操作将使得日常的维护工作更加轻松。
2 特点
一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
3 命令格式
CREATE TABLE table_nameA (列名A 数据类型(数据长度),列名B,数据类型(数据长度)'<默认值>',FOREIGN KEY(‘<列名>') REFERENCES ('<数据表B的主键>'));
create table t_user (name char(20),groupid int(10),id int(10) not null,primary key(id),foreign key(groupid) references t_group(id));
4 使用例子
4.1 创建t_group数据表,设置group_id为主键

mysql> create table t_group (name char(20),id int(10) not null,primary key(id));
Query OK, 0 rows affected (0.06 sec)
4.2 向t_group数据表中插入数据
mysql> insert into t_group values ('Group1',1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_group values ('Group2',2);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t_group;
+--------+----+
| name   | id |
+--------+----+
| Group1 |  1 |
| Group2 |  2 |
+--------+----+
2 rows in set (0.00 sec)
4.3 创建t_user表,设置外键
mysql> create table t_user (name char(20),groupid int(10),id int(10) not null,primary key(id),foreign key(groupid) references 
    -> t_group(id));
Query OK, 0 rows affected (0.04 sec)
4.3 向t_user表中插入数据
mysql> insert into t_user values ('Tom',1,1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_user values ('Mary',2,2);
Query OK, 1 row affected (0.01 sec)
4.4 被约束的外键goupid超过t_group中id的值,插入值失败
mysql> insert into t_user values ('Ada',3,3);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mysql_shiyan`.`t_user`, CONSTRAINT `t_user_ibfk_1` FOREIGN KEY (`groupid`) REFERENCES `t_group` (`id`))

【参考】
https://blog.csdn.net/qq_34123420/article/details/52530756

你可能感兴趣的:(SQL的约束_FOREIGN KEY)