推荐答案
在 MariaDB 中,可以通过以下语法定义外键:
ALTER TABLE 子表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (子表列名) REFERENCES 父表名称(父表列名) [ON DELETE 参照动作] [ON UPDATE 参照动作];
或者在建表时直接定义外键:
CREATE TABLE 子表名称 ( 列名 数据类型, ... FOREIGN KEY (子表列名) REFERENCES 父表名称(父表列名) [ON DELETE 参照动作] [ON UPDATE 参照动作] );
本题详细解读
1. 外键的基本概念
外键是用于建立和加强两个表数据之间链接的一列或多列。它确保了子表中的数据与父表中的数据保持一致。
2. 外键的语法解析
- ALTER TABLE 子表名称: 指定要添加外键的子表。
- ADD CONSTRAINT 外键名称: 为外键指定一个名称,便于后续管理。
- FOREIGN KEY (子表列名): 指定子表中用于外键的列。
- REFERENCES 父表名称(父表列名): 指定父表及其列,子表的外键将引用这些列。
- [ON DELETE 参照动作]: 指定当父表中的记录被删除时,子表中的记录如何处理。常见的动作有
CASCADE
(级联删除)、SET NULL
(设置为 NULL)、RESTRICT
(拒绝删除)等。 - [ON UPDATE 参照动作]: 指定当父表中的记录被更新时,子表中的记录如何处理。常见的动作有
CASCADE
(级联更新)、SET NULL
(设置为 NULL)、RESTRICT
(拒绝更新)等。
3. 示例
假设有两个表 orders
和 customers
,其中 orders
表中的 customer_id
列需要引用 customers
表中的 id
列:
ALTER TABLE orders ADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE;
在这个例子中,orders
表中的 customer_id
列被定义为外键,引用了 customers
表中的 id
列。当 customers
表中的某条记录被删除或更新时,orders
表中的相关记录也会被级联删除或更新。
4. 注意事项
- 外键列和引用列的数据类型必须一致。
- 父表中的引用列必须是唯一键或主键。
- 外键约束可以确保数据的完整性和一致性,但在大数据量或高并发场景下,可能会影响性能。