SQL Server 2012 外键约束(定义外键、删除外键)







准备知识

    外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。
    通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键
    FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改
    例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。
    FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去
    外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表或多个表的数据能够同时发生改变



两个数据表结构如下所示:
(1)student表
在这里插入图片描述
(2)class表
在这里插入图片描述

定义外键

使用SSMS工具定义外键
  1. 右击需要添加外键的数据表,选择“设计”。
    在这里插入图片描述
  2. 进入表设计器界面,选择工具栏上的关系图标,或者右击数据表中的行,在弹出的对话框中选择“关系”。
    在这里插入图片描述
    在这里插入图片描述
  3. 进入外键关系对话框,单击“添加”。
    在这里插入图片描述
  4. 点击右侧网格中的“表和列规范”,再点击右侧的“…”按钮。
    在这里插入图片描述
  5. 进入表和列对话框,从主键表中选择需要外键所在的数据表。
    在这里插入图片描述
  6. 在主键表下方的表格中,选择此表中的主键列,在相邻的网格中选择外键表中相应的外键列。
    在这里插入图片描述
  7. 在“关系名”中填写适合的关系名,点击“确定”。
    在这里插入图片描述
  8. 关闭外键关系对话框,点击保存键,或者按Ctrl+F5键进行保存。展开刚开打开的数据表,再展开“键”,就可以看到刚才定义的外键。
    在这里插入图片描述
    注意:
    (1)定义外键约束的列的数据类型必须和引用的主键列的数据类型相通
    (2)在定义外键约束之前,外键所在的表必须已经定义了主键

使用SQL方式定义外键
方式一:在创建数据表的时候定义外键
  1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
    在这里插入图片描述
  2. 输入创建SQL代码
USE schoolDB                                                 --打开数据库schoolDB
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='student') 
DROP TABLE student                --检查student是否已经存在,如果存在,则删除
GO
CREATE TABLE student                                           --表名为student
(
	  StuID int NOT NULL,                                           --学生学号
	  StuName varchar(15) NOT NULL,                                 --学生姓名
	  Sex char(2) NULL,                                             --性别
	  Major varchar(20) NULL,                                      --所选专业
	  ClassID int NULL FOREIGN KEY REFERENCES class(ClassID)

)

  1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
    在这里插入图片描述
  2. 点击“执行”按钮,或按住F5,执行SQL代码。
    在这里插入图片描述
  3. 刷新并查看数据表中的键。
    在这里插入图片描述

方式二:修改数据表定义外键
  1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
    在这里插入图片描述
  2. 输入创建SQL代码
USE schoolDB
GO
ALTER TABLE student --打开schoolDB数据库
ADD CONSTRAINT FK_student_class FOREIGN KEY(ClassID) REFERENCES class(ClassID)     
                          --在表product的CatID列上定义与表category的外键关系

  1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
    在这里插入图片描述
  2. 点击“执行”按钮,或按住F5,执行SQL代码。
    在这里插入图片描述
  3. 刷新并查看数据表中的键。
    在这里插入图片描述


删除外键

使用SSMS工具删除外键
方式一:在对象资源管理器中删除外键
  1. 展开需要删除外键的数据表,然后再展开“键”。
    在这里插入图片描述
  2. 右击需要删除的外键,选择“删除”。
    在这里插入图片描述
  3. 在删除对象界面,点击“确定”,即可完成外键删除。
    在这里插入图片描述
方式二:在表设计器中删除外键
  1. 右击需要删除外键的数据表,选择“设计”。
    在这里插入图片描述
  2. 进入表设计器界面,右击鼠标,选择“关系”。
    在这里插入图片描述
  3. 在外键关系对话框中选择需要删除的外键,点击“删除”,完成外键删除。
    在这里插入图片描述
使用SQL方式删除外键
  1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
    在这里插入图片描述

  2. 输入创建SQL代码

USE schoolDB --打开schoolDB数据库
GO
ALTER TABLE student 
DROP CONSTRAINT FK_student_class   --删除表student的外键FK_student_class

  1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
    在这里插入图片描述
  2. 点击“执行”按钮,或按住F5,执行SQL代码。
    在这里插入图片描述
  3. 外键已被删除。
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章