MySQL-外键+索引

外键描述:外键是表的一个特殊字段;被参照的表是主键,外键所在字段的表为子表;设置外键的原则就是依赖于数据库中已存在的表的主键;作用:建立该表与其父表的关联关系,父表中对记录做操作时,子表中与之对应的信息也应有相应的该表;保持数据的一致性和完整性;实现一对一或一对多的关系;注意项:父表和子表必须使用相同的存储引擎,而且禁止使用临时表;数据表的存储引擎只能为InnoDB;外键列...
摘要由CSDN通过智能技术生成

外键

描述:

外键是表的一个特殊字段;
被参照的表是主键,外键所在字段的表为子表;
设置外键的原则就是依赖于数据库中已存在的表的主键;

作用:

建立该表与其父表的关联关系,父表中对记录做操作时,子表中与之对应的信息也应有相应的该表;
保持数据的一致性和完整性;
实现一对一或一对多的关系;

注意项:

父表和子表必须使用相同的存储引擎,而且禁止使用临时表;
数据表的存储引擎只能为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
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值