Verzeichnis suchen
SQL 基础教程 SQL 语法 SQL SELECT 语句 SQL SELECT DISTINCT 语句 SQL WHERE 子句 SQL AND & OR 运算符 SQL ORDER BY 关键字 SQL INSERT INTO 语句 SQL UPDATE 语句 SQL DELETE 语句 SQL 函数 SQL Date 函数 SQL NULL 函数 SQL 函数 SQL AVG() 函数 SQL COUNT() 函数 SQL FIRST() 函数 SQL LAST() 函数 SQL MAX() 函数 SQL MIN() Function SQL SUM() Function SQL GROUP BY 语句 SQL HAVING 子句 SQL UCASE() 函数 SQL LCASE() 函数 SQL MID() 函数 SQL LEN() 函数 SQL ROUND() 函数 SQL NOW() 函数 SQL FORMAT() 函数 SQL 快速参考 SQL 主机 SQL 高级教程 SQL SELECT TOP 子句 SQL LIKE 操作符 SQL 通配符 SQL IN 操作符 SQL BETWEEN 操作符 SQL 别名(Aliases) SQL 连接(Joins) SQL INNER JOIN 关键字 SQL LEFT JOIN 关键字 SQL RIGHT JOIN 关键字 SQL FULL OUTER JOIN 关键字 SQL UNION 操作符 SQL SELECT INTO 语句 SQL INSERT INTO SELECT 语句 SQL CREATE DATABASE 语句 SQL CREATE TABLE 语句 SQL 约束(Constraints) SQL NOT NULL 约束 SQL UNIQUE 约束 SQL PRIMARY KEY 约束 SQL FOREIGN KEY 约束 SQL CHECK 约束 SQL DEFAULT 约束 SQL CREATE INDEX 语句 SQL 撤销索引、撤销表以及撤销数据库 SQL ALTER TABLE 语句 SQL AUTO INCREMENT 字段 SQL 视图(Views) MySQL NOW() 函数 MySQL CURDATE() 函数 MySQL CURTIME() 函数 MySQL DATE() 函数 MySQL EXTRACT() 函数 MySQL DATE ADD() 函数 MySQL DATE SUB() 函数 MySQL DATEDIFF() 函数 MySQL DATE FORMAT() 函数 SQL Server GETDATE() 函数 SQL Server DATEPART() 函数 SQL Server DATEADD() 函数 SQL Server DATEDIFF() 函数 SQL Server CONVERT() 函数 SQL NULL 值 SQL 通用数据类型 SQL 用于各种数据库的数据类型
Figuren

SQL FOREIGN KEY 约束



SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

让我们通过一个实例来解释外键。请看下面两个表:

"Persons" 表:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

"Orders" 表:

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

请注意,"Orders" 表中的 "P_Id" 列指向 "Persons" 表中的 "P_Id" 列。

"Persons" 表中的 "P_Id" 列是 "Persons" 表中的 PRIMARY KEY。

"Orders" 表中的 "P_Id" 列是 "Orders" 表中的 FOREIGN KEY。

FOREIGN KEY 约束用于预防破坏表之间连接的行为。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。


CREATE TABLE 时的 SQL FOREIGN KEY 约束

下面的 SQL 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束:

MySQL:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

ALTER TABLE 时的 SQL FOREIGN KEY 约束

当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

撤销 FOREIGN KEY 约束

如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

Vorheriger Artikel: Nächster Artikel: