SQL Server外键用法示例图解

本文概述

  • 使用CREATE TABLE语句创建外键
  • 参数说明
  • 创建具有多个字段的外键
在SQL Server中, 外键用于强制SQL Server数据库内的引用完整性。它指定一个表中的值也必须出现在另一表中。
被引用的表称为父表, 而具有外键的表称为子表。子表中的外键通常将引用父表中的主键。
可以使用CREATE TABLE语句或ALTER TABLE语句创建外键。
使用CREATE TABLE语句创建外键 【SQL Server外键用法示例图解】句法:
CREATE TABLE child_table(column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ...CONSTRAINT fk_nameFOREIGN KEY (child_col1, child_col2, ... child_col_n)REFERENCES parent_table (parent_col1, parent_col2, ... parent_col_n)[ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ][ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ] );

参数说明 child_table:它指定要创建的子表的名称。
column1, column2:它指定要在表中创建的列。每列必须具有一个数据类型。该列应定义为NULL或NOT NULL, 并且如果将此值保留为空, 则数据库将假定NULL为默认值。
fk_name:它指定要创建的外键约束的名称。
child_col1, child_col2, … child_col_n:它指定child_table中的列, 这些列将引用parent_table中的主键。
parent_table:它指定父表的名称, 其主键将在child_table中使用。
parent_col1, parent_col2, … parent_col3:它指定构成parent_table中主键的列。外键将强制此数据与child_table中的child_col1, child_col2, … child_col_n列之间建立链接。
例:
让我们创建两个表” products” 和” inventory” , 其中products表的主键是” product_id” , 这是” inventory” 表中的外键。
CREATE TABLE products( product_id INT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, category VARCHAR(25)); CREATE TABLE inventory( inventory_id INT PRIMARY KEY, product_id INT NOT NULL, quantity INT, min_level INT, max_level INT, CONSTRAINT fk_inv_product_idFOREIGN KEY (product_id)REFERENCES products (product_id));

输出
SQL Server外键用法示例图解

文章图片
“ 库存” 表中的外键约束为fk_inv_product_id。它将在库存表中的product_id列与产品表中的product_id列之间建立关系。
你现在可以检查两个表。
SQL Server外键用法示例图解

文章图片
SQL Server外键用法示例图解

文章图片
创建具有多个字段的外键 在上面的示例中, 我们看到了如何创建具有一列的外键。让我们创建具有多个字段的外键。
让我们创建两个表” products2″ 和” inventory2″ 。在此示例中, ” products2″ 表具有一个主键, 该主键同时包含product_name和location列。因此, 第二个表和外键也必须引用这两列。
因此, 在此示例中, 称为fk_inv_product的外键基于两个字段引用product表:product_name和location字段。
CREATE TABLE products2( product_name VARCHAR(50) NOT NULL, location VARCHAR(50) NOT NULL, category VARCHAR(25)CONSTRAINT products_pk PRIMARY KEY (product_name, location)); CREATE TABLE inventory2( inventory_id INT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, location VARCHAR(50) NOT NULL, quantity INT, min_level INT, max_level INT, CONSTRAINT fk_inv_productFOREIGN KEY (product_name, location)REFERENCES products2 (product_name, location));

输出
SQL Server外键用法示例图解

文章图片

    推荐阅读