mysql创建外键的sql语句

创建外键,首先看一下要求:
子表名、父表名、外键列、主键列、删除和更新操作是什么?
例1 ,表结构很简单:
ALTER TABLEorders ADD FOREIGN KEY(customer_id) REFERENCEScustomers(customer_id);
例2 、级联删除:
ALTER TABLE order ADD FOREIGN KEY (customer_id) REFERENCEScustomers(customer_id) ON DELETE CASCADE;
示例3 ,多列外键:
ALTER TABLE employee_projects ADD FOREIGN KEY (dept_id, emp_id) REFERENCESEmployees(dept_id, emp_id);
注意:
类型、长度、字符集、外键列和主键列必须匹配。

InnoDB引擎,支持外键。

索引,InnoDB自动创建。

方便管理的限制名称。

出现问题时,首先检查数据限制,然后查看性能。

mysql怎么设置外键?

老实说,使用 NAVICAT 设计表的外键只有两步:先在界面上点击几次,然后写两行 SQL。
不过,虽然界面操作直观,但编写SQL却更加灵活。

我们先来说说最重要的事情。
使用 NAVICAT 生成外键时,去年我们跑的项目中我们发现 ON DELETE CASCADE/SET NULL 设置特别重要——大约有 3 000 条数据,一不小心一切都会乱七八糟。
还有一点就是相关字段的类型必须完全一致。
比如你用NAVICAT设置INT,但是在SQL中写成VARCHAR,就会直接报错。
还有另一个重要的细节。
例如,外键名称是中文的。
最近测试时,由于系统编码问题,保存时全部字符乱码。

一开始我觉得开启UPDATE CASCADE(当键表更新时自动更新外键表)很酷,但后来我发现这是一个bug,用了一次就被骗了——比如,如果用户改变了ID,所有关联的数据都会倾斜。
等等,还有别的事。
NAVICAT界面操作虽然较慢,但可以实时预览效果。
很多人不注意这一点。

建议在写SQL之前先规范一下NAVICAT中的逻辑,或者反过来用SQL检查NAVICAT设置是否有问题。
您认为哪种方法对您来说更方便?