麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
1266
2023-07-05
Mysql添加外键的方式有哪些
Mysql添加外键的几种方式
注意:添加外键是给从表添加(即子表)父表是主表
方法一:
创建表之前:
FOREIGN KEY (子表id) REFERENCES 关联表名(外主表id)
例如
create table emp( e_id int auto_increment primary key, ename varchar(50) not null, age int, job varchar(20), salary int, entrydate date, managerid int, dept_id int, FOREIGN KEY (dept_id) REFERENCES dept(id) );登录后复制
方法二:
创建表后添加:
ALTER TABLE 表1 ADD FOREIGN KEY (从表的外键) REFERENCES dept(主表的主键);
例如: ALTER TABLE emp ADD FOREIGN KEY (dep_id) REFERENCES dept(id);登录后复制
注意:
主表(dept)存在从表(emp),从表引用了外键,不能直接删除(主表)DROP TABLE dept; --删除失败在删除表的时候,如果存在外键引用,则必须先删除从表(也就是把存在相关外键约束的表全部删掉),才能删除主表。以上的外键都是物理外键,属于数据库级别的引用,不推荐使用,使用这个会造成数据耦合度大大增加。
主键:
是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性
外键:
是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。
注意:
1、外键字段在创建的时候就应该与主表的类型完全一致(长度等等),否则创建外键会报错;2、外键表是不能插入主表不存在的数据(该数据指的是与主表主键或从表外键的数据)。–例如部门号只有1,2,3,4,从表插入数据时外键值为5就会产生错误——>即外键表的外键约束不能随意取值3、当修改了主表的数据后,关联的外键表的外键约束已经实现了自动修改。
加constraint和不加的区别
If constraints are not added, the system will automatically generate names for them, which can be difficult to remember.。 加constraint,可以按照自己的意图给约束起名字。
补充:MySQL 删除外键操作
1.显现要删除的外键。 show create table 表名;
2.看到约束;
3.删除即可。一种重写方式是:使用 alter table 命令删除表中的外键约束,语法如下:ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。