SQLServer2012唯⼀约束(定义唯⼀约束、删除唯⼀约束)
⽂章⽬录
准备知识
如果要求数据表中的某列不能输⼊重复值,有两种约束可以做到。⼀种是主键约束,即该列是数据表的主键;另⼀种则是唯⼀约束,对于不是主键的列,唯⼀约束能够确保不会出现重复值(可以为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, --学⽣姓名
创建唯一约束sql语句Sex char(2) NULL, --性别
Major varchar(20) NULL, --所选专业
)
3. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进⾏语法分析,确保SQL语句语法正确。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论