Constraint5:unique 约束和null

简介:

unique约束使用unique index来限制列值的唯一性;

创建unique约束之后,column中允许插入null值,unique 约束将两个null值看作是相同的(即null=null为true),null和其他任何非null值都不相等。

 

一,unique约束分为column level和table level,区别在于Table Level需要制定unique约束影响的column(or columns)。

Column level的unique 约束语法

复制代码
column_name <data_type>

[ CONSTRAINT constraint_name ] 
{ PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] )
        [ WITH FILLFACTOR = fillfactor 
        [ WITH ( <index_option>[ , ...n ] ) ]
}
复制代码


Table level的unique 约束语法

复制代码
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] )
        [ WITH FILLFACTOR = fillfactor 
        [ WITH ( <index_option>[ , ...n ] ) ]
}
复制代码


使用create table命令来创建unique 约束

复制代码
create table dbo.dt_test_unique
(
id int constraint UQ_id unique nonclustered, code int ) create table dbo.dt_test_unique ( id int , code int, constraint UQ_id unique nonclustered(id) )
复制代码

 

 二,在已经存在的表上

create table dbo.dt_test_unique
(
id int ,
code int
)

1,在已经存在的表上增加unique约束

alter table dbo.dt_test_unique
add constraint uq_test_id unique nonclustered(id)

2,在已经存在的表上删除unique约束

alter table dbo.dt_test_unique
drop constraint uq_test_id

3,在已经存在的表上修改unique约束

在已经存在的表上修改unique约束,采用的workaround是先删除 unique约束,后增加unique约束

alter table dbo.dt_test_unique
drop constraint uq_test_id alter table dbo.dt_test_unique add constraint uq_test_id unique nonclustered(id)

4,通过alter table 命令增加new column来增加 column level的unique 约束

alter table dbo.dt_test_unique
add datekey int
constraint uq_test_datekey unique nonclustered

 

推荐文档:

http://www.cnblogs.com/kissdodog/archive/2013/05/31/3109509.html

http://www.cnblogs.com/mybear/archive/2010/09/03/1816810.html

参考文档:

https://msdn.microsoft.com/en-us/library/ms190273(v=sql.110).aspx
https://msdn.microsoft.com/en-us/library/ms188066(v=sql.110).aspx
https://msdn.microsoft.com/en-us/library/ms187742(v=sql.110).aspx
https://msdn.microsoft.com/zh-cn/library/ms174979.aspx

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: SQL Server





本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/4984349.html,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
关系型数据库 MySQL
非空约束:not null
非空约束:not null。
23 5
|
18天前
|
SQL
SQL NOT NULL 约束
SQL NOT NULL 约束
18 1
|
29天前
|
SQL
SQL NOT NULL 约束
SQL NOT NULL 约束
25 6
|
4天前
|
SQL 关系型数据库 MySQL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
10 0
|
7月前
|
关系型数据库 MySQL 开发者
MySQL 字段约束 null, not null, default, auto_increment
前言:转载,觉得有用就发了一遍 在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。 今天我们就来看一下 MySQL 的字段约束: NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。
135 0
|
11月前
|
SQL 关系型数据库 MySQL
MySQL非空约束(NOT NuLL)
MySQL非空约束(NOT NuLL)
152 0
|
SQL 关系型数据库 MySQL
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
|
SQL
SQL NOT NULL 约束
SQL NOT NULL 约束
49 0
|
数据可视化 关系型数据库 MySQL
MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)
MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)
588 0
MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)