MySQL安装后如何设置外键_MySQL外键约束配置方法

外键是表之间的关系。
安装MySQL后,需要配置外键。
创建表时直接定义它们,或者使用 ALTER TABLE 添加外键。
首先告诉大家推荐的方法:建表的时候直接这样做。

例如,要创建一个部门表和一个员工表,则部门表是父表,员工表是子表。
像这样:
sql 创建部门表( dept_id INT 主键自动递增, 部门名称 VARCHAR(1 00) NOT NULL UNIQUE ) ENGINE=InnoDB;
创建表员工 ( emp_id INT 主键自动递增, emp_name VARCHAR(1 00) NOT NULL, 部门 ID INT, 外键 (dept_id) 链接至部门 (dept_id) 移除约束时 关于级联更新 ) 引擎=InnoDB;
关键点是父表引用的列必须是主键或唯一键,并且子表的外键列的数据类型必须与父表的数据类型相同。
还指定删除和更新的关联规则。

如果您的表已存在,则必须使用 ALTER TABLE 添加外键。
例如,向现有员工表添加外键:
sql. 更改表员工添加列 dept_id INT; 更改员工表添加约束 fk_employee_department 外键 (dept_id) 链接至部门 (dept_id) 删除时置零 关于级联更新;
注意,父表的指定列必须有索引,子表的外键列数据必须与父表中的相同,并且现有数据也必须满足外键约束。

外键的作用是保证数据一致性、理清关系、优化查询、简化开发。

就DELETE和ON UPDATE行为而言,RESTRICT是最安全的,CASCADE适合强依赖,SETNULL适合解决禁用关联。

常见失败原因如存储引擎不是InnoDB、数据类型不匹配、父表引用列未建立索引、现有数据违反约束、约束名称重复或存在语法错误。

排查方法如检查错误信息、SHOW WARNINGS、SHOW ENGINE INNODB STATUS等。

你自己看看,如果你正确地按照这些步骤操作,外键设置就不会有问题。

mysql constraint用法

抱歉,说到局限性,我不得不谈谈我在做项目时所冒的风险。

我记得那是2 01 5 年,我在一家小公司做一个项目。
那时的数据库设计非常简单,只有几张表,你想添加多少约束就可以添加多少。
无论如何,这很简单。
结果后来我发现这个限制有点过分了。

例如,主键约束是必要的,但我为每个表的主键添加了唯一索引。
后来发现更新数据的时候,因为索引太多,数据库的响应速度很慢。
这时我意识到主键约束是必要的,但是过度使用索引会影响性能。

另一个例子是外键约束。
当时我就想表之间肯定有联系,所以加了外键作为秘密。
结果,当我想修改一个外键时,我发现这个修改影响了整个主体。
我不得不先停止外键扫描,然后修改后恢复它。
后来我意识到,外键约束虽然可以保证数据的一致性,但是修改起来确实很困难。

还有一个非空约束,本来是为了保证数据完整性。
这样一来,对于那些经常更新的字段也添加了非空约束,导致更新数据时需要人工判断,增加了开发成本。

所以,自制力如果运用得好,就是锦上添花;如果使用不当,则没有必要。
我记得有一次,一位同事给数据库添加了一个默认值约束。
结果导入数据的时候出现了问题,因为默认值与业务逻辑不匹配。
然后我意识到默认值约束也应该根据实际情况来设置。

总之,限制必须根据实际情况而定,不得盲目跟风。
您必须权衡性能和功能并适当地使用它们。
就像开车一样:该加油的时候就踩油门,该刹车的时候就踩刹车,这样就可以安全到达目的地。
😄

mysql中check的用法

CHECK 检查列值是否符合条件。

定义限制列数据的条件。
条件 SQL 表达式有效。

Changeable 已添加到现有表中。
语法 ALTERTABLE_nameADDCONSTRAINTconstraint_nameCHECK(条件)。

条款灵活。

示例:薪水>0 不是主要薪水。

ageBETWEEN1 8 AND6 5 从 1 8 岁到 6 5 岁。
受限
genderIN('M','F') 确保类型只能是 'M' 或 'F'。

优点:保持数据完整性。

代码可读性得到提高。

性能本身。

它只对插入或更新有效,不检查现有数据。

当违反约束时,MySQL 会拒绝该操作并返回错误。
条件表达式不宜过于复杂,以免产生歧义。

MySQLCHECK 约束是提高数据库可靠性和效率的重要工具。