天天看點

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

原文: SQLServer之UNIQUE限制

UNIQUE限制添加規則

1、唯一限制確定表中的一列資料沒有相同的值。

2、與主鍵限制類似,唯一限制也強制唯一性,但唯一限制用于非主鍵的一列或者多列的組合,且一個表可以定義多個唯一限制。

使用SSMS資料庫管理工具添加UNIQUE限制

1、連接配接資料庫,選擇資料庫,選擇資料表-》右鍵點選-》選擇設計。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

2、在表設計視窗中-》選擇要添加限制的資料列-》右鍵點選-》選擇索引/鍵。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

3、在索引/鍵視窗中-》點選添加。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

4、選擇新增的索引/鍵-》在正常視窗中-》類型選擇唯一鍵。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

5、在正常視窗中-》點選列。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

6、在索引列視窗中-》先選擇限制列-》然後選擇限制列排序規則-》點選确定。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

7、在索引/鍵彈出框中正常視窗中-》在名稱中輸入限制名稱-》在說明中輸入限制描述-》其他可以選擇預設-》點選關閉。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

8、點選儲存按鈕(或者ctrl+s)-》重新整理表,檢視結果。

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

 使用T-SQL腳本添加UNIQUE限制

當表結構已存在時

給一列或者多列添加唯一限制時,先判斷要添加的限制是否存在,如果存在則先删除再添加,如果不存在則直接添加。

文法:

if exists(select * from sysobjects where name=限制名)

alter table 資料庫名.[dbo].表名 drop constraint 限制名;

go

alter table 資料庫名.[dbo].表名 add constraint 限制名 unique(列名1,列名2);

示例:

if exists(select * from sysobjects where name='unique_t_name')

alter table [testss].[dbo].[test1] drop constraint unique_t_name;

alter table [testss].[dbo].[test1] add constraint unique_t_name unique(name,sex);

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

當表結構不存在時

當表結構不存在時,需要在建表語句中添加,添加一列唯一索引和多列唯一索引文法相同。

--當表結構不存在時添加唯一限制

if exists( select * from sysobjects where name=資料庫名.[dbo].表名 and type ='U')

drop table 資料庫名.[dbo].表名;

--當表結構不存在時

--建表文法聲明

create table 資料庫名.[dbo].表名

(

--字段聲明

列名1 int identity(1,1) not null,

列名2 nvarchar(50) null,

列名3 int not null,

primary key clustered(列名1 asc) with(ignore_dup_key=off) on [primary], --主鍵索引聲明

constraint unique_name_sex unique(列名2,列名3)

)on [primary]

--字段注釋聲明

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述1' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名1';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述2' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名2';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述3' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名3';

if exists( select * from sysobjects where name='test1'and type ='U')

drop table test1;

create table test1

id int identity(1,1) not null,

name nvarchar(50) null,

age int not null,

primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主鍵索引聲明

constraint unique_name_sex unique(name,age)

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主鍵' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年齡' , @level0type=N'SCHEMA',

@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

SQLServer之UNIQUE限制UNIQUE限制添加規則使用SSMS資料庫管理工具添加UNIQUE限制 使用T-SQL腳本添加UNIQUE限制UNIQUE索引優缺點

UNIQUE索引優缺點

優點:

1、唯一性限制所在的列允許空值。

2、可以把唯一性限制放在一個或者多個列上,這些列或列的組合必須有唯一的。

 3、唯一性限制強制在指定的列上建立一個唯一性索引。在預設情況下,建立唯一性的非聚簇索引,但是,也可以指定所建立的索引是聚簇索引。

缺點:

1、建立唯一限制時會建立索引,占用磁盤空間。

2、插入或者修改限制列的值時,會存在校驗規則,會比較費事。