SQL Server 2017从零开始学(视频教学版)
上QQ阅读APP看书,第一时间看更新

7.3.1 在创建表时添加外键约束

外键约束的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联的行。添加外键约束的语法规则如下:

     CREATE TABLE table_name
     (
     col_name1  datatype,
     col_name2  datatype,
     col_name3  datatype
     ……
     CONSTRAINT fk_name FOREIGN KEY(col_name1, col_name2,…) REFERENCES
     referenced_table_name(ref_col_name1, ref_col_name1,…)
     );

• fk_name:定义的外键约束的名称,一个表中不能有相同名称的外键。

• col_name1:表示从表需要添加外键约束的字段列,可以由多个列组成。

• referenced_table_name:被从表外键所依赖的表的名称。

• ref_col_name1:被应用的表中的列名,也可以由多个列组成。

【例7.6】在test数据库中,定义数据表tb_emp3,并在tb_emp3表上添加外键约束。

首先创建一个部门表tb_dept1,表结构如表7-1所示。打开【查询编辑器】窗口,在其中输入T-SQL语句:

     CREATE TABLE tb_dept1
     (
     id       INT PRIMARY KEY,
     name    VARCHAR(22)  NOT NULL,
     location  VARCHAR(50)  NULL
     );

表7-1 tb_dept1表结构

单击【执行】按钮,即可完成创建数据表的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-13所示。

图7-13 创建表tb_dept1

执行完成之后,选择创建的数据表,然后打开该数据表的设计图,即可看到该数据表的结构,如图7-14所示。

图7-14 tb_dept1表的设计图

下面定义数据表tb_emp3,让它的键deptId作为外键关联到tb_dept1的主键id。打开【查询编辑器】窗口,在其中输入T-SQL语句:

     CREATE TABLE tb_emp3
     (
     id       INT  PRIMARY KEY,
     name    VARCHAR(25),
     deptId   INT,
     salary   FLOAT,
     CONSTRAINT fk_员工部门编号 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
     );

单击【执行】按钮,即可完成在创建数据表时添加外键约束的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-15所示。

图7-15 创建表的外键约束

执行完成之后,选择创建的数据表tb_emp3;然后打开该数据表的设计图,即可看到该数据表的结构,如图7-16所示。

图7-16 tb_emp3表的设计图

最后,在添加完外键约束之后,查看添加的外键约束,方法是:选择要查看的数据表节点,例如这里选择tb_dept1表,右击该节点,在弹出的快捷菜单中选择【查看依赖关系】菜单命令,打开【对象依赖关系】窗口,将显示与外键约束相关的信息,如图7-17所示。

图7-17 【对象依赖关系】窗口

提示

外键一般不需要与相应的主键名称相同,但是,为了便于识别,当外键与相应主键在不同的数据表中时通常使用相同的名称。另外,外键不一定要与相应的主键在不同的数据表中,也可以是同一个数据表。