1. 了解外键
在SQL Server中,外键是一个关键的概念。外键是表于表之间的关联或联系,它定义了一个表与另一个表之间的约束关系,以确保数据的完整性。外键确保了数据在表之间的关联性,限制了数据的修改和删除,确保表之间的数据一致性。
1.1 外键的作用
外键约束用于确保子表中的数据与父表中的数据的关系的完整性。外键的作用主要包括以下几点:
确保了数据的完整性和一致性。
通过强制约束在相关表中的数据,减少数据库重复数据的数量。
使查询和处理数据更快捷容易。
1.2 外键与关联表
在SQL Server中,关联表是指具有相同字段的两个或多个表之间形成的“关联”或“联系”。外键是表于表之间的关联或联系,连接了两个表的列和行。如果两个表之间存在外键关系,则关联查询将在这些表之间自动进行。可以说,在任何表中设置外键之前,首先必须要有两个或多个关联表。
2. 如何设置外键约束
在SQL Server中,设置外键可以采用多种方式,但最常用的方法是使用CREATE TABLE或ALTER TABLE语句来创建外键约束。
2.1 使用CREATE TABLE创建外键约束
在创建表时可以使用CREATE TABLE语句一次性创建外键约束。例如:
CREATE TABLE Table1
(
ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(50)
)
CREATE TABLE Table2
(
ID INT NOT NULL PRIMARY KEY,
Table1ID INT NOT NULL,
Name VARCHAR(50),
CONSTRAINT FK_Table2_Table1 FOREIGN KEY (Table1ID) REFERENCES Table1(ID)
)
上面的例子中Table2和Table1之间存在外键关系,Table2的Table1ID列引用了Table1中的ID列。通过在CREATE TABLE语句中定义一个称为外键约束的名字,然后指定一个或多个源和目标列,可以实现外键约束的设置。
2.2 使用ALTER TABLE创建外键约束
如果Table1和Table2已经存在,可以使用ALTER TABLE语句来添加外键约束。例如:
ALTER TABLE Table2
ADD CONSTRAINT FK_Table2_Table1 FOREIGN KEY (Table1ID) REFERENCES Table1(ID)
在ALTER TABLE语句中,使用ADD CONSTRAINT语句来添加外键约束,指定外键约束的名称,并指定一个或多个源和目标列,实现外键约束的添加。
3. 为外键约束设置选项
在创建或添加外键约束时,还可以设置一些选项来指定外键的行为。下面介绍几种常见的选项。
3.1 ON DELETE和ON UPDATE
ON DELETE和ON UPDATE选项指定了当引用的行被删除或更新时,应该如何影响外键列中的值。
ON DELETE CASCADE:当引用的行被删除时,外键列中的所有值也将被删除。
ON DELETE SET NULL:当引用的行被删除时,外键列中的所有值将被设置为NULL。
ON DELETE SET DEFAULT:当引用的行被删除时,外键列中的所有值将被设置为默认值。
ON UPDATE CASCADE:当引用的行被更新时,外键列中的所有值也将被更新。
ON UPDATE SET NULL:当引用的行被更新时,外键列中的所有值将被设置为NULL。
ON UPDATE SET DEFAULT:当引用的行被更新时,外键列中的所有值将被设置为默认值。
例如,以下ALTER TABLE语句将外键约束添加到Table2,并指定当关联行被删除或更新时,应该如何影响外键列中的值:
ALTER TABLE Table2
ADD CONSTRAINT FK_Table2_Table1 FOREIGN KEY (Table1ID) REFERENCES Table1(ID) ON DELETE CASCADE ON UPDATE CASCADE
3.2 NOT FOR REPLICATION
如果数据库在复制模式下运行,则NOT FOR REPLICATION选项防止复制程序修改外键约束。例如:
ALTER TABLE Table2
ADD CONSTRAINT FK_Table2_Table1 FOREIGN KEY (Table1ID) REFERENCES Table1(ID) NOT FOR REPLICATION
3.3 CHECK CONSTRAINTS
CHECK CONSTRAINT选项启用或禁用了在插入或更新数据时应用的检查约束。默认情况下,此选项设置为ON。例如:
ALTER TABLE Table2
ADD CONSTRAINT FK_Table2_Table1 FOREIGN KEY (Table1ID) REFERENCES Table1(ID) CHECK CONSTRAINT
4. 如何删除外键约束
要删除外键约束,可以使用ALTER TABLE语句或使用SQL Server Management Studio(SSMS)中的对象资源管理器。例如,以下ALTER TABLE语句将删除指定的外键约束:
ALTER TABLE Table2
DROP CONSTRAINT FK_Table2_Table1
在SSMS中,可以右键单击表,选择“设计”,然后单击外键约束并选择“删除”。
总结
在SQL Server中,外键是表于表之间的关联或联系,用于确保数据的完整性和一致性。在创建或添加外键约束时,可以使用CREATE TABLE或ALTER TABLE语句,并设置一些选项来指定外键的行为。删除外键约束可以使用ALTER TABLE语句或使用SSMS中的对象资源管理器。掌握了这些技巧后,我们可以更好的管理数据库,确保数据的完整性。