mysql怎么设置外键
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余避免后期对大量冗余处理的额外运维操作。
降低应用代码复杂性,减少了额外的异常处理相关数据管理全由数据库端处理。
增加文档的可读性特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳比如,表结构的更新等。
外键参照动作列表:
CASCADE:级联,子表跟随父表更新外键值
SET NULL:子表更随主表更新外键值为 NULL
RESTRICT/ NO ACTION:默认,限制父表改动外键值
SET DEFAULT:目前产生的效果和 RESTRICT 相同。
在MySQL中如何设置主键和外键
在MySQL中,您可以使用以下步骤设置主键和外键:
- 设置主键:在创建表时,可以使用PRIMARY KEY约束来定义主键。主键是一个或多个字段,它的值用于唯一地标识表中的某一条记录 。
- 设置外键:在创建表时,可以使用FOREIGN KEY约束来定义外键。外键是用于建立或加强两个表数据之间的链接的一列或多列。如果公共关键字在一个表中存在,而在另一个表中不存在,则必须使用FOREIGN KEY约束来定义外键 。
MySQL中被其他表外键引用的字段为什么不能添加主键自增
一个表的外键必须是另外一个表的主键 每一个表不是必须得有一个自增主键id的,比如学生表,可以设置学号为主键,这样在选课表中可以设置学号为外键,引用学生表中的学号
mysql用外键以后怎么修改字段名
要修改MySQL中具有外键约束的字段名,需要按照以下步骤进行操作:
1. 首先,使用`SHOW CREATE TABLE`语句查看表的创建语句,找到包含外键约束的字段名。
2. 使用`ALTER TABLE`语句删除外键约束。例如,使用`ALTER TABLE 表名 DROP FOREIGN KEY 外键名`来删除外键约束。
3. 使用`ALTER TABLE`语句修改字段名。例如,使用`ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型`来修改字段名。
4. 如果需要,可以使用`ALTER TABLE`语句重新添加外键约束。例如,使用`ALTER TABLE 表名 ADD CONSTRNT 外键名 FOREIGN KEY (字段名) REFERENCES 关联表名(关联字段名)`来添加外键约束。
请注意,在修改字段名后,还需要确保更新相关的查询和代码,以反映新的字段名。此外,修改字段名可能会影响数据库中的其他依赖项,因此在进行此操作之前,请务必备份数据库以防万一。
还没有评论,来说两句吧...