一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
让我们通过一个例子来解释外键。请看下面两个表:
"Persons" 表:
Id_P
LastName
FirstName
Address
City
1 |
Adams |
John |
Oxford Street |
London |
2 |
Bush |
George |
Fifth Avenue |
New York |
3 |
Carter |
Thomas |
Changan Street |
Beijing |
"Orders" 表:
Id_O
OrderNo
Id_P
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
请注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。
"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。
"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
SQL FOREIGN KEY Constraint on CREATE TABLE
下面的 SQL 在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY:
MySQL:
CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (O_Id),FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders(O_Id int NOT NULL PRIMARY KEY,OrderNo int NOT NULL,Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (O_Id),CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)REFERENCES Persons(Id_P)
)
SQL FOREIGN KEY Constraint on ALTER TABLE
如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE OrdersADD FOREIGN KEY (Id_P)REFERENCES Persons(Id_P)
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE OrdersADD CONSTRAINT fk_PerOrdersFOREIGN KEY (Id_P)REFERENCES Persons(Id_P)
撤销 FOREIGN KEY 约束
如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:
MySQL:
ALTER TABLE OrdersDROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE OrdersDROP CONSTRAINT fk_PerOrders
分享到:
相关推荐
在SQL数据库设计中,FOREIGN KEY约束是一种重要的机制,它用于维护数据的引用完整性,确保表之间的关联数据是有效的。当我们尝试使用INSERT语句插入数据时,如果违反了FOREIGN KEY约束,就会出现“INSERT语句与...
在本文中,我们将详细介绍 SQL Server 2008 中的五种约束:Primary Key 约束、Foreign Key 约束、Unique 约束、Default 约束和 Check 约束。 Primary Key 约束 Primary Key 约束是 SQL Server 2008 中的一种基本...
#### 2.7 SQL FOREIGN KEY 约束 - **功能**:用于建立两个表之间的链接。 - **语法**: ```sql CREATE TABLE table_name ( column1 datatype, ... FOREIGN KEY (column1) REFERENCES other_table(other_column)...
本篇将详细讲解如何在Hibernate中使用外键`ForeignKey`,以及通过一个简单的例子帮助学习者深入理解其配置与操作。 首先,外键是数据库设计中的一个重要概念,它用于建立两个表之间的关联,通常用来维护数据的一致...
ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo) 这条语句将stuNo字段设置为外键约束,以建立stuMarks表和stuInfo表之间的关系。 在实际开发中,我们可以根据需要...
SQL Server中约束的介绍 , 数据完整性分类 实体完整性 域完整性 引用完整性 用户定义完整性 PRIMARY KEY约束 DEFAULT约束 CHECK约束 UNIQUE约束 FOREIGN KEY约束
为了维护这种完整性,SQL Server 提供了多种类型的约束机制,包括主键(Primary Key)、唯一键(Unique Key)、外键(Foreign Key)以及检查约束(Check Constraint)。本文将详细介绍这些约束的创建与删除方法。 #...
Django的ORM(对象关系映射)提供了ForeignKey字段,它模拟了数据库的外键行为,但允许开发者灵活地控制是否使用数据库级别的外键约束。 Django的ForeignKey字段允许你在两个模型之间建立一对多或多对一的关系。...
本文将深入探讨SQL中的五种主要约束:主键(Primary Key)、唯一键(Unique Key)、默认值(Default)、检查(Check)以及外键(Foreign Key),并提供实际的例子来帮助理解。 ### 主键约束(Primary Key) 主键是...
ADD CONSTRAINT FK_stuNo FOREIGN KEY (stuNo) REFERENCES stuInfo (stuNo) ``` 以上就是关于创建与删除SQL约束的相关知识点及示例。通过掌握这些技巧,可以帮助您更好地管理和维护数据库中的数据。
- **SQL FOREIGN KEY约束**:用于引用另一个表中的主键。 - **SQL CHECK约束**:用于限制列中的值的范围。 ### SQL进阶功能 - **SQL DEFAULT约束**: - 为某列设置默认值。 - **SQL CREATE INDEX语句**: - ...
DEFAULT(默认约束)用于为列提供默认值,CHECK(检查约束)确保列的值满足特定条件,NOT NULL(非空约束)阻止输入NULL值,UNIQUE(唯一约束)确保列值的唯一性,以及FOREIGN KEY(外键约束)用于维护表间的关系和...
外键约束(Foreign Key Constraint) 外键约束用于建立两个表之间的关系,确保引用完整性。当一个表(子表)的某一列引用另一个表(父表)的主键或唯一键时,就形成了外键约束。例如: ```sql ALTER TABLE ...
2. 外键约束(Foreign Key) 外键约束是指对表格中某一列或多列的参照完整性约束,即这些列的值必须来自其他表格中的某一列。例如,在 course 表中,我们可以将 cpno 列设为外键约束,参照 course 表中的 cno 列。 ...
为了解决这个问题,我们可以利用MySQL中的一个系统变量`FOREIGN_KEY_CHECKS`来临时禁用外键约束检查。 首先,你可以通过以下SQL查询生成所有表的DROP语句,只需将`MyDatabaseName`替换为你的实际数据库名: ```sql...
- 可以为某个表定义外键约束(`FOREIGN KEY`),确保员工所在部门的ID存在于部门表中。 总之,正确使用SQL内置约束能够显著提高数据库系统的稳定性和可靠性,是数据库设计中的重要组成部分。通过对这些约束的理解和...
- **外键约束 (FOREIGN KEY)**:用于建立表间关系,保证参照完整性,引用其他表的主键。 - **非空约束 (NOT NULL)**:不允许字段值为NULL。 - **检查约束 (CHECK)**:指定列的值必须满足特定条件。 - **默认约束 ...