9.MYSQL-外键约束(废弃)

外键

1.是表的特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
2.外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两表中的数据一致性和完整性。
3.主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

定义规则

1.主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
2.必须为主表定义主键。
3.主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
4.在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
5.外键中列的数目必须和主表的主键中列的数目相同。
6.外键中列的数据类型必须和主表主键中对应列的数据类型相同。

1.创建表时添加外键约束

CREATE TABLE class(
    c_no INT primary key ,
    c_name VARBINARY(50),
    room VARBINARY(50)
);
CREATE TABLE student (
    s_no INT,
    s_name VARBINARY(50),
    s_age INT,
    c_no INT,
    CONSTRAINT fk_c_no_class FOREIGN KEY (c_no) REFERENCES class(c_no)
);
//以上语句执行成功之后,在表 student 上添加了名称为 fk_c_no_class 的外键约束,外键名称为 c_no,其依赖于表 class 的主键 c_no
    INSERT INTO class VALUES (1,'高一一班','冲刺班');
    INSERT INTO student VALUES (1001,'李大国',18,1);
原文地址:https://www.cnblogs.com/liangfc/p/14448858.html