SQL FOREIGN KEY 约束 高级教程
2015-10-17 10:40
651 查看
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
相关文章推荐
- Maven手动安装jar包-Oracle Jdbc
- 数据库中的约束
- SQL PRIMARY KEY 约束 高级编程
- mongodb设置数据库用户,权限,java mongodb driver3.0驱动用户验证
- 2015第42周六Pgsql全文索引
- 在linux上用yum安装和卸载mongodb 3.0数据库
- 为什么Redis比Memcached易
- 简析poco框架库-数据库的用法
- 浅析生产环境数据库备份与恢复
- Linux图形界面打开Oracle Net Manager
- 浅析MySQL Replication(复制)原理
- Access数据库教程_如何进行C#连接Access数据库的细节操作?
- 关于Mybatis的log4j配置SQL语句显示
- sqlserver 备份命令
- excel教学_灵活运用Excel建立有规律的数据库
- 阿里云 Ubuntu 下的Mysql安装问题
- 研究-数据库死锁
- [ArcGIS所需的补丁]ArcGIS 10.2.2 for Desktop联系Oracle(2014年10上个月发布)数据库崩溃
- 研究-关系型数据库与NOSQL
- Django 1.8.5中使用MySQL