Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SQL 教程

SQL 主页 SQL 简介 SQL 语法 SQL 选择 SQL 选择 distinct SQL Where SQL Order By SQL And SQL Or SQL Not SQL 插入 SQL 空值 SQL 更新 SQL 删除 SQL 选择 Top SQL 聚合函数 SQL 最小值和最大值 SQL 计数 SQL 求和 SQL 平均值 SQL Like SQL 通配符 SQL In SQL Between SQL 别名 SQL 连接 SQL 内连接 SQL 左连接 SQL 右连接 SQL 全连接 SQL 自连接 SQL 并集 SQL 分组 SQL Having SQL Exists SQL Any, All SQL 选择到 SQL 插入到选择 SQL Case SQL 空函数 SQL 存储过程 SQL 注释 SQL 运算符

SQL 数据库

SQL 创建数据库 SQL 删除数据库 SQL 备份数据库 SQL 创建表 SQL 删除表 SQL 修改表 SQL 约束 SQL 非空 SQL 唯一 SQL 主键 SQL 外键 SQL 检查 SQL 默认值 SQL 索引 SQL 自动递增 SQL 日期 SQL 视图 SQL 注入 SQL 托管 SQL 数据类型

SQL 参考资料

SQL 关键字 MySQL 函数 SQL Server 函数 MS Access 函数 SQL 快速参考

SQL 示例

SQL 示例 SQL 编辑器 SQL 问答 SQL 练习 SQL Server SQL 集训营 SQL 证书

SQL FOREIGN KEY 约束


SQL 外键约束

The FOREIGN KEY constraint 用于防止破坏表之间链接的操作。

A FOREIGN KEY 是一个表中的字段(或字段集合),它引用另一个表中的 PRIMARY KEY

包含外键的表被称为子表,包含主键的表被称为引用表或父表。

请看以下两个表

Persons 表

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Orders 表

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

请注意,“Orders” 表中的“PersonID” 列指向“Persons” 表中的“PersonID” 列。

“Persons” 表中的“PersonID” 列是“Persons” 表中的 PRIMARY KEY

“Orders” 表中的“PersonID” 列是“Orders” 表中的 FOREIGN KEY

The FOREIGN KEY constraint 阻止将无效数据插入外键列,因为它必须是父表中包含的值之一。



在 CREATE TABLE 中使用 SQL FOREIGN KEY

以下 SQL 在创建“Orders” 表时在“PersonID” 列上创建 FOREIGN KEY

MySQL

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

SQL Server / Oracle / MS Access

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

要允许命名 FOREIGN KEY 约束,以及在多个列上定义 FOREIGN KEY 约束,请使用以下 SQL 语法

MySQL / SQL Server / Oracle / MS Access

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

在 ALTER TABLE 中使用 SQL FOREIGN KEY

要创建 FOREIGN KEY 约束在“PersonID” 列上时,“Orders” 表已创建,请使用以下 SQL

MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

要允许命名 FOREIGN KEY 约束,以及在多个列上定义 FOREIGN KEY 约束,请使用以下 SQL 语法

MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

删除 FOREIGN KEY 约束

要删除 FOREIGN KEY 约束,请使用以下 SQL

MySQL

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.