20171012 SQL外键约束
2017-10-12 13:49
204 查看
SQL FOREIGN KEY 约束
SQLPrimary Key
SQL
Check
SQL FOREIGN KEY 约束
一个表中的 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 |
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
"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 ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), [code]FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
[/code]
SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, [code]Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
[/code]
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), [code]CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
[/code]
SQL FOREIGN KEY Constraint on ALTER TABLE
如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders [code]ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
[/code]
如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders [code]ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
[/code]
撤销 FOREIGN KEY 约束
如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:MySQL:
ALTER TABLE Orders [code]DROP FOREIGN KEY fk_PerOrders
[/code]
SQL Server / Oracle / MS Access:
ALTER TABLE Orders [code]DROP CONSTRAINT fk_PerOrders
相关文章推荐
- (转)后期加外键约束的sql语句
- mysql SQL设置外键约束ON DELETE CASCADE
- SQL的主键和外键约束
- SQL WITH NOCHECK 解决外键约束出现的冲突
- SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
- Alter Table 更改约束和外键,Case When Then ,联合变换的SQL语句
- sql 外键约束
- SQL的主键和外键约束
- SQL脚本创建数据表,并给出主键,外键,唯一键,约束
- SQL的主键和外键约束
- sql删除外键约束,删除表,删除存储过程代码
- 经典SQL语句大全_主外键_约束
- LINQ to SQL 外键约束的插入及获取主表标识列等问题
- 在创建外键约束的时候, 设置级联删除为SET NULL执行sql语句的时候显示有错误,(数据库为sqlserver2000)?
- sqlserver数据库生成删除所有外键约束的sql
- SQL - 外键约束
- SQL的主键和外键约束(转)
- 实用知识:SQL 约束(主键、外键)
- sql语句添加删除外键及其约束
- SQL的主键和外键约束