外键约束(Foreign Key)定义了表之间的关系,主要用来维护两个表之间的一致性。当一个表中一列或者多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或者列的组合定义为外关键字,并设定它适合与哪个表中的哪些列相关联。外键约束简而言之就是列参照完整性。

如下图,我们只有a表和b表且分别为:学生表和成绩表。我们发现在b表中有学号6,但时a表中根本没有学号6这样的同学,也就是说学号6应该不能在b表出现,因为这是毫无意义的,为了防止这样的问题出现,a表的学号设置为主键,b表的学号设置为外键,那么在b表中录入学号就必须参照a表中的学号,如果在b表中录入a表中没有的学号,那么将报错。

sql server for 用法_sql server for 用法

 

如下图,有一个学生表,其中学号设置为主键,学号为1-6.

sql server for 用法_外键约束_02

 

如下图,有一个成绩表

sql server for 用法_外键_03

 

下面我把成绩表中的学号设置成外键

如下图,成绩表右击选择“设计”

sql server for 用法_外键约束_04

 

右击后选择“关系”

sql server for 用法_外键_05

 

选择“添加”

sql server for 用法_外键约束_06

 

选择添加后,我们可以修改外键的名称,如下图,我该为F_成绩表,然后选择“表和列规范”

sql server for 用法_主键_07

 

如下图,选择主键表是“学生表”,外键表是“成绩表”,且都选择学号,然后选择“确定”

sql server for 用法_主键_08

 

选择“关闭”

sql server for 用法_外键约束_09

 

选择“保存”,选择“是”

sql server for 用法_外键_10

 

完成后视图如下

sql server for 用法_外键约束_11

 

如下图,因为插入学号10的学生在学生表中没有这样的学号,顾报了Foregin Key约束“F_成绩表”冲突。

sql server for 用法_外键_12

 

上面我是通过图形界面创建了外键约束,如果我想看看创建外键约束的语法怎么办?

如下图,选择“新查询编辑器窗口”

sql server for 用法_sql server for 用法_13

 

如下图,这就是创建外键约束的语法

sql server for 用法_主键_14


转载于:https://blog.51cto.com/ksyiwen/1395738