SQL Server 2012 唯一约束(定义唯一约束、删除唯一约束)




准备知识

    如果要求数据表中的某列不能输入重复值,有两种约束可以做到。一种是主键约束,即该列是数据表的主键;另一种则是唯一约束,对于不是主键的列,唯一约束能够确保不会出现重复值(可以为NULL值)。
    唯一约束允许 NULL 值,这一点与主键约束不同。 不过,当与参与唯一约束的任何值一起使用时,每列只允许一个空值。 外键约束可以引用 唯一约束。
    默认情况下,向表中的现有列添加唯一约束后,数据库引擎将检查列中的现有数据,以确保所有值都是唯一的。 如果向含有重复值的列添加唯一约束, 数据库引擎将返回错误消息,并且不添加约束。
    数据库引擎将自动创建唯一索引来强制执行唯一约束的唯一性要求。 因此,如果试图插入重复行, 数据库引擎将返回错误消息,说明该操作违反了唯一约束,不能将该行添加到表中。 除非显式指定了聚集索引,否则,默认情况下将创建唯一的非聚集索引以强制执行唯一约束。

定义唯一约束

使用SSMS工具定义唯一约束
  1. 展开“数据库”,然后展开相应的数据库,再展开数据库中的“表”,右击需要定义唯一约束的数据表,选择“设计”。
    在这里插入图片描述
  2. 进入表设计器界面,点击工具栏的“管理索引和键”按钮,或者右键选择“索引和键”。
    在这里插入图片描述
    在这里插入图片描述
  3. 进入“索引/键”对话框,点击“添加”。
    在这里插入图片描述
  4. 单击右侧的“类型”,在右侧下拉框中选择“唯一键”。
    在这里插入图片描述
  5. 单击右侧的“列”,点击右边的“…”按钮。
    在这里插入图片描述
  6. 进入索引列对话框,在列名中选择需要添加唯一性约束的属性列,点击“确定”。
    在这里插入图片描述
  7. 在“标识”的“(名称)”中修改唯一约束的名称,点击“关闭”。
    在这里插入图片描述
  8. 点击保存键,或者按Ctrl+F5键进行保存。展开数据表,展开“键”,可以看到定义的唯一约束。
    在这里插入图片描述

使用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) UNIQUE NOT NULL,                          --学生姓名
	  Sex char(2) NULL,                                             --性别
	  Major varchar(20) NULL,                                      --所选专业
)


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

方式二:修改数据表定义唯一约束
  1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
    在这里插入图片描述
  2. 输入创建SQL代码
USE schoolDB                                                 --打开数据库schoolDB
GO
ALTER TABLE student
ADD CONSTRAINT UQ_student_StuName UNIQUE(StuName) 
			--将student表中的StuName列定义唯一约束


  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 class 
DROP CONSTRAINT UQ_class_ClassName   --删除表class的唯一约束UQ_class_ClassName

  1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
    在这里插入图片描述
  2. 点击“执行”按钮,或按住F5,执行SQL代码。
    在这里插入图片描述
  3. 唯一约束已被删除。
    在这里插入图片描述



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章