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

news/2025/2/23 3:51:56/

文章目录

        • 准备知识
        • 定义外键
          • 使用SSMS工具定义外键
          • 使用SQL方式定义外键
            • 方式一:在创建数据表的时候定义外键
            • 方式二:修改数据表定义外键
        • 删除外键
          • 使用SSMS工具删除外键
            • 方式一:在对象资源管理器中删除外键
            • 方式二:在表设计器中删除外键
          • 使用SQL方式删除外键






准备知识

    外键(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. 外键已被删除。
    在这里插入图片描述

http://www.ppmy.cn/news/777527.html

相关文章

c++ list的主要函数

assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator() 返回list的配置器 insert() 插入一个元素到l…

SQL中的外键

外键 概念: 外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。 外键特点: 从表外键的值是对主表主键的引用。 从表外键类型,必须与主表主键类型一致。 作用:外键可以保证数据的完整性和一致…

SQL Server:主键与外键设置与相关理解

一、定义与作用 主键:表中能够唯一地辨别事物的属性。通过主键能够查询出表中一条完整的记录,同时使用主键能防止表中出现重复的记录,避免了数据的冗余。 外键:通俗讲就是表中一个属性是来自另一张表的主键,该属性被…

SQL语句:给表添加外键的四种方式

1. 创建表的同时添加外键 create table score( score int(3), st_id int(16), cs_id int(16), primary key(st_id,cs_id), FOREIGN KEY (st_id) REFERENCES student(id), FOREIGN KEY (cs_id) REFERENCES classes(id) );2. 已经创建表了怎么办:在表的定义外进行添加…

SQL的主键和外键详解!

我是小玉,一个平平无奇的小天才! 主键和外键 概念: SQL的主键表示唯一标识一条记录,不能有重复的,不允许为空。例如:一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个…

sql外键_SQL外键

sql外键 When a database table is designed an important factor is to make sure that the table is scalable enough and is normalized at the same time. In order to make sure that the tables are well linked and normalized we use SQL foreign keys. 设计数据库表时…

数据库SQL语句之外键

数据库的关系模型中包括了①主键②外键③索引 本文主要讲解的是外键 一对一模型 即一个表的记录对应到另一个表的唯一一个记录 例如,students表的每个学生可以有自己的联系方式,如果把联系方式存入另一个表contacts,我们就可以得到一个“一…

SQL学习(七):怎么给一张表添加外键(四种方法)

如何添加外键 方法一:直接在属性值后面添加 create table score( cscore int(11), st_id int(50) references student(id), cs_id int(30) references classes(id), primary key(st_id,cs_id) ); 方法二: create table score( cscore int(11), st_id…