mysql创建外键的sql语句

哦,关于这个我有件事要告诉你。
一年前,我在上海帮助一个团队建立了一个数据库。
他们想要创建一个名为 Orders 的子表并将其链接到 Customers 表。
我使用了你当时提到的 ALTER TABLE 语句。
直接加载代码:
sql 通过添加外键 (customer_id) 更改表订单引用 customer(customer_id);
那时,我们希望确保每个订单都与正确的客户相关联。
很简单不是吗
后来我遇到了一个情况。
如果客户删除它,他将无法保存他所下的所有订单。
否则,数据将无法同步。
我将它们添加到 DELETE CASCADE:
sql ALTER TABLE FOREIGN KEY (customer_id) REFERENCES customer (customer_id) INTO CASCADE DELETE ON ORDERS;
结果呢?太酷了,客户取消了,所有订单都丢失了。
他们现在很满意并保持了数据一致性。
但你必须小心。
如果这不能正常工作,所有数据都将消失,哭也来不及了。

还有一次,他们正在深圳做一个项目。
子表称为staff_projects;父表是employees,主键是多列(dept_id、emp_id)。
当时我告诉他们外键必须是多列的-
sql。
更改表员工项目插入外键 (dept_id, emp_id) 请参阅 EMPLOYEE(dept_id, emp_id);
否则,它将不相关。
我听了他们的意见,并跟进,发现它有效。

但是,有些事情应该注意。
首先,数据类型必须相同。
之前见过有人把一个INT的外键连接到一个VARCHAR上,直接报错。
其次,存储引擎必须支持外键。
MyISAM 不可用;必须使用InnoDB。
第三,标签问题。
InnoDB会自动为你创建索引,但是如果你手动构建索引。
最好搭配。

另外,命名参数时;不要使用这样的默认值:
sql 更改表订单添加约束 fk_customer_order 外键 (customer_id) 引用 customer(customer_id);
这将有助于以后排除故障。
我的团队去年发现外键会对性能产生影响,但它提高了数据一致性,这是值得的。

简而言之,如果使用得当,外键可以缓解问题,但如果使用不当……你知道的。
别为我落入陷阱。

sql中什么是外键?

外键格式:FOREIGN KEY(列名)。
示例:CREATE 临时表(id INT,名称 CHAR(2 0),FOREIGN KEY (id))。
外键用于链接表以保证数据的一致性。
这是一个陷阱,不要相信外键会自动维护数据完整性。
不要这样做,外键约束可能会导致数据的意外删除。
实用提醒:在外键约束之前备份数据。