外键
描述:
外键是表的一个特殊字段;
被参照的表是主键,外键所在字段的表为子表;
设置外键的原则就是依赖于数据库中已存在的表的主键;
作用:
建立该表与其父表的关联关系,父表中对记录做操作时,子表中与之对应的信息也应有相应的该表;
保持数据的一致性和完整性;
实现一对一或一对多的关系;
注意项:
父表和子表必须使用相同的存储引擎,而且禁止使用临时表;
数据表的存储引擎只能为InnoDB;
外键列和参照列必须具有相似的数据类型,其中数据的长度或是否有符号为必须相同,而字符的擦汗那个度则可以不同;
外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引;
外键约束的参照操作:
CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行;
SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL,如果使用该选项,必须保证子表列没有指定NOT NULL;
RESTRICT:拒绝对父表的删除或更新操作
- –创建部门表department(父表)
CREATE TABLE IF NOT EXISTS department(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
departName VARCHAR(20) NOT NULL NUIQUE
)ENGINE=INNODB CHARSET=UTF-8;
INSERT INTO department(departName) VALUES
('人力'),
('财务'),
('研发'),
('销售');
- –创建员工表(子表)
CREATE TABLE IF NOT EXISTS employee(
id SMALLINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE,
departId TINYINT UNSIGNED,
FOREIGN KEY(departId) REFERENCES department(id) #添加外键
)ENGI