SQl server 外键
时间: 2023-09-24 21:11:48 浏览: 37
在 SQL Server 中,外键(Foreign Key)是一种用于建立表之间关系的约束。外键约束将一个表的列(或多个列)与另一个表的列(或多个列)进行匹配,以确保数据的完整性和一致性。
要创建外键约束,需要在表中定义一个列,该列将引用另一个表中的列。这个列称为外键列,它引用的列称为主键列。所引用的表称为主表,定义外键的表称为从表。
以下是创建外键约束的基本语法:
```
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column_name) REFERENCES referenced_table_name (referenced_column_name);
```
其中,table_name 是从表的名称,constraint_name 是约束的名称,column_name 是从表中的列名,referenced_table_name 是主表的名称,referenced_column_name 是主表中的列名。
例如,要在名为 orders 的表中创建一个名为 fk_orders_customers 的外键约束,用于连接 orders 表中的列 customer_id 和 customers 表中的列 customer_id:
```
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customers
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id);
```
当在 orders 表中插入一条记录时,外键约束会验证该记录中的 customer_id 是否在 customers 表中存在。如果不存在,则插入操作将失败。
注意,当删除或更新主表中的记录时,外键约束对从表中的记录有一定的影响。如果从表中有与被删除或更新的主表记录相关联的记录,则可能需要进行一些操作以保持数据的完整性。可以使用 ON DELETE 和 ON UPDATE 子句指定这些操作,如下所示:
```
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customers
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE CASCADE
ON UPDATE CASCADE;
```
在这个例子中,ON DELETE CASCADE 子句指定当 customers 表中的记录被删除时,与之相关联的所有 orders 表中的记录也将被删除。ON UPDATE CASCADE 子句指定当 customers 表中的记录被更新时,与之相关联的所有 orders 表中的记录也将被更新。