![SQL Server 2017从零开始学(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/73/27738073/b_27738073.jpg)
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表结构
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-T155_35469.jpg?sign=1739231262-npTr15UxCvROpoEGaSnwlbGh0CjK9mZf-0-ae45d7fc61eb3979bf819c627d37d62c)
单击【执行】按钮,即可完成创建数据表的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-13所示。
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-P155_10692.jpg?sign=1739231262-D5bHaAbR8GfY5tbYhr4Gt0VyzohWG9gx-0-2056174f81e362ae0e3139ff73cacd4f)
图7-13 创建表tb_dept1
执行完成之后,选择创建的数据表,然后打开该数据表的设计图,即可看到该数据表的结构,如图7-14所示。
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-P155_10693.jpg?sign=1739231262-mUp1fBQTjLFrwQwYzcitPCubiDoipYud-0-d21be1b97e8e9bdeb30b0493c0937bbd)
图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所示。
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-P156_10765.jpg?sign=1739231262-4AY0Fsmnyh6mXtOABTRICwI2lOkUZtbr-0-e8cc3987daa3dcf8075581cc4cbf13b9)
图7-15 创建表的外键约束
执行完成之后,选择创建的数据表tb_emp3;然后打开该数据表的设计图,即可看到该数据表的结构,如图7-16所示。
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-P156_10766.jpg?sign=1739231262-nsJXj6MSsWx5zRRsRUHFRQQgba8iaFVR-0-950ffdf3ba4331723f74fc7706fdd62f)
图7-16 tb_emp3表的设计图
最后,在添加完外键约束之后,查看添加的外键约束,方法是:选择要查看的数据表节点,例如这里选择tb_dept1表,右击该节点,在弹出的快捷菜单中选择【查看依赖关系】菜单命令,打开【对象依赖关系】窗口,将显示与外键约束相关的信息,如图7-17所示。
![](https://epubservercos.yuewen.com/00DFEA/15936052005026606/epubprivate/OEBPS/Images/Figure-P156_10782.jpg?sign=1739231262-7PeM8FMypoS5V03VsPXLeCWPtFMh9PY7-0-c754f143bc797f5e81d32ef897fee21a)
图7-17 【对象依赖关系】窗口
提示
外键一般不需要与相应的主键名称相同,但是,为了便于识别,当外键与相应主键在不同的数据表中时通常使用相同的名称。另外,外键不一定要与相应的主键在不同的数据表中,也可以是同一个数据表。