MySQL外键约束(FOREIGN KEY)

外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。作用为:建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

主表删除某条记录时,如果从表中也有对应的数据,则无法删除。但是无论主表中是否存在对应的记录,均可以直接在从表中进行删除

定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
  • 必须为主表定义主键。
  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

在创建表时设置外键约束

在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键,具体的语法格式如下:

CONSTRAINT <外键名> FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
CREATE TABLE tb_dept1
   (
     id INT(11) PRIMARY KEY,
     name VARCHAR(22) NOT NULL,
     location VARCHAR(50)
	);
	

--  创建数据表 tb_emp2,并在表 tb_emp2 上创建外键约束,让它的键 deptId 作为外键关联到表     tb_dept1 的主键 id
CREATE TABLE tb_emp2
   (
     id INT(11) PRIMARY KEY,
     name VARCHAR(25),
     deptId INT(11),
     salary FLOAT,
     CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
   );

你可能感兴趣的:(mysql,数据库)