一个表中的 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
分享到:
相关推荐
目录 1 SQL基础 1.1 SQL简介 1 1.2 SQL语法 2 1.3 SQL SELECT 语句 ...SQL SELECT DISTINCT 语句. ...SQL WHERE 子句 ...SQL AND & OR 运算符. ...SQL FOREIGN KEY 约束. 19 2.8 SQLALTER TABLE 语句 21 2.9 SQL 数据类型 23
阅读此书以了解根本原因:SQL FOREIGN KEY Constraint [^]
在本文中,我们将详细介绍 SQL Server 2008 中的五种约束:Primary Key 约束、Foreign Key 约束、Unique 约束、Default 约束和 Check 约束。 Primary Key 约束 Primary Key 约束是 SQL Server 2008 中的一种基本...
实现SQL Server的数据完整性 SQL Server 2000支持下列五类约束: ...(4)FOREIGN KEY约束(外键约束):定义数据库表中指定列上插入或更新的数值必须在另一张被参照表中的特定列上存在。 (5)UNIQUE约束(惟一约束)
SQL Server中约束的介绍 , 数据完整性分类 实体完整性 域完整性 引用完整性 用户定义完整性 PRIMARY KEY约束 DEFAULT约束 CHECK约束 UNIQUE约束 FOREIGN KEY约束
SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。 什么是主键? 在数据库中,常常不只是一个表,...
SQL Server 2000中的列级约束与表级约束 在SQL Server 2000中有5 种约束: 主键约束(primary key constraint) 唯一性约束(unique constraint) 检查约束(check constraint...外部键约束(foreign key constraint)
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 这是因为你尝试删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)...
set pause "please put an enter key" 且 set pause on:设置带有提示的分屏 oerr ora 904 :查看错误 set head off :去掉表头 set feed off :去掉表尾 保存在oracle数据库中的所有操作细节: spool ...
空值(NULL)约束 主键(PRIMARY KEY)约束 外键(FOREIGN KEY)约束 默认值(DEFAULT)约束 唯一性(UNIQUE)约束和检查(CHECK)约束。 可以对已创建的表进行哪些修改? 添加、修改列和删除列。 数据库SQL语句...
+ 外键约束:alter table 从表名 add constraint 约束名 foreign key (字段名) references 主表名 (字段名) + 检查约束:alter table 表名 add constraint 约束名 check (条件) * 删除约束:alter table 表名 drop...
T-SQL建库建表的同时加约束,调用DOS cmdshell命令建文件夹, if exists(select * from sysobjects where name ='Result') drop table Result create table Result ( ExamDate datetime default getdatet() not null,...
FOREIGN KEY约束:介绍外键及其在维护参照完整性中的重要性。 UNIQUE约束:解释唯一性约束,确保列中的所有值都是不同的。 NOT NULL约束:确保列不接受NULL值。 CHECK约束:用于确保列中的值满足特定条件。 级联规则...
常见的约束有 PRIMARY KEY 约束、UNIQUE 约束、FOREIGN KEY 约束、CHECK 约束等。DEFAULT 约束是指在插入操作中如果没有提供输入值时,则 SQL Server 系统会自动为该列指定一个值。 本资源为读者提供了一个关于 SQL...
约束是数据库中的数据完整性实现的具体方法,在 SQL Server 中,包括 5 种约束类型:primary key 约束、foreign key 约束、unique 约束、check 约束和 default 约束。 四、数据查询 数据查询是数据库中最基本的...
FOREIGN KEY约束(外部关键字及参照关系说明) CHECK约束(同时涉及到多个属性的域完整性约束) 删除属性 删除订购单关系中的“完成日期”属性: ALTER TABLE 订购单 DROP COLUMN 完成日期 注意:有些系统的...
3. FOREIGN KEY 约束:定义值与同一个表或另一个表的主键值匹配的一列或多列组合。 4. CHECK 约束:指定列的允许值。 5. DEFAULT 约束:指定列的默认值。 6. NULL 约束:指定是否允许为 NULL。 在 SQL Server 中...
3.外键约束foreign key references 表名(列名) OwnerUserId int not null foreign key references Users(UserId) 外键后面添加on delete[updte] cascade,则为级联删除或修改,删除主表记录,从表中相应...