浅谈 MySQL的外键的作用
MySQL中外键的介绍:
- MySQL外键必须使用存储引擎为 innDB 其中MySAM 和MEMORYH这两种引擎不支持
- 由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。
- 设置外键约束的两个表之间会具有父子关系,即子表中外键的字段的取值范围由父表所决定
- 设置外键一定程度上降低数据库的速度
- 子表的外键字段的数据类型和父表中要一致
关于外键的设置:
CREATE TABLE table_name (
属性名: 数据类型
属性名: 数据类型
.......
CONSTRAINT FR_deptno FOREIGN KEY(子表中的外键字段) REFERENCES + 父表名 (父表中的字段)
)
实验的环境试验:
- 两个表 父表 t_dept 子表 t_employee
- 两个表中的具体的字段
- 设置子表中的外键约束字段 deptno 关联到父表中的 deptno 字段(注意这两个字段的名字可以是不相同的,但表达的意思是相同的)
验证子表中的取值范围由父表决定:
在父表中添加一些字段:
如添加了两个字段 1和2
此时在子表中添加字段
发现此时在子表中只能选择1和2 不能添加其他字段
验证外键的完整性:
当我们删除父表中的字段的时候子表中的字段也被删除我们删除父表中deptno 字段为1 ,此时发现子表中的字段只剩下一个2
当我们修改父表中deptno字段的值为3时,发现子表中的字段也改变为3