在关系型数据库系统中,外码是表之间引用关系的列,用于确保数据的完整性和一致性。SQL外码定义语句是一种命令,用于在创建或修改表时定义外码约束。
SQL外码定义语句的语法
外码定义语句的基本语法如下:
FOREIGN KEY (column_name) REFERENCES table_name (referenced_column_name) [ON DELETE action] [ON UPDATE action]
column_name
是当前表中引用外键的列名称。
table_name
是被引用的表的名称。
referenced_column_name
是被引用的表中与外键匹配的列名称。
ON DELETE action
指定在被引用的表中删除记录时所采取的操作,可以是 CASCADE
(级联删除)、SET NULL
(将外键列值设为 NULL
)、SET DEFAULT
(将外键列值设为默认值)或 RESTRICT
(拒绝删除)。
ON UPDATE action
指定在被引用的表中更新记录时所采取的操作,可以是 CASCADE
(级联更新)、SET NULL
或 RESTRICT
。
外码约束的作用
外码约束主要有以下作用:
维护数据完整性,防止引用不存在的记录。
强制执行数据一致性,保证相关记录之间的一致性。
提高数据库性能,通过索引外键列来加速查询。
使用SQL外码定义语句的示例
以下示例演示如何使用SQL外码定义语句在两个表之间创建外码约束:
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT,
customer_id INT NOT NULL,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
);
CREATE TABLE customers (
customer_id INT NOT NULL AUTO_INCREMENT,
customer_name VARCHAR(255) NOT NULL,
PRIMARY KEY (customer_id)
);
在这个示例中,orders
表的 customer_id
列引用了 customers
表的 customer_id
列。这意味着每个订单必须与一个存在的客户关联。