SqlServer2008实例26约束之创建唯一约束

  SQL Server使用约束来强制列数据的完整性。主键和外键都是约束的一种形式。其他用于列的约束形式包括:

  •     UNIQUE约束,它强制表的非主键列的唯一性:
  •     DEFAULT约束,当将某行首次插入表中但不知道某列的值时可以使用它,但是仍然希望使用期望的值来填充列;
  •     CHECK约束,用于定义列允许的数据格式和允许的值。

    一个表只能定义一个主键。如果希望为其他非主键列强制唯一性,可以使用UNIQUE约束。根据定义,唯一约束创建一个替代键。和PRIMARY KEY约束不同,你可以为一个表创建多个UNIOUE约束,并且也可以为允许NULL值的列指定UNIQUE约束(每个表的单列键只允许一个NULL值)。和主键相似的是,UNIQUE约束通过确保行被唯一标识来保证实体完整性。
    UNIQUE约束在创建的时候会创建一个基础表索引。这个索引可以是CLUSTERED的或者NONCLUSTERED的,但是在表已经存在聚集索引的时候不能创建CLUSTERED索引。
    和PRIMARY KEY约束一样,可以在创建表的时候在列定义或者表约束级别定义一个UNIQUE约束。在创建表的时候定义一个UNioUE约束的语法如下:

    (column_name <data_type> [NULL | NOT NULL ] UINQUE)

例如:

USE AdventureWorks
GO

CREATE TABLE HumanResources.EmployeeAnnualReview
	(
		EmployeeAnnualReviewID int NOT NULL PRIMARY KEY,
		EmployeeID int NOT NULL,
		AnnualReviewSummaryDESC varchar(900) NOT NULL UNIQUE
	)

可以通过创建表约束来对多个列应用唯一约束:
           CONSTRAINT constraint_name UNIQUE
           (column [ACE | CESC ] [,...n])

UNIQUE约束参数

参  数

描  述

Constraint_name

这个参数指定了要增加的约束的唯一名

(column [ACE | CESC ] [,...n])

存储在列中的值必须唯一标识表中的一行(比如,对于所有指定列,任意两行都不可以有相同的值)。ASE(升序)和DESC(降序)选项定义了列在聚集和非聚集索引中的排列顺序

USE AdventureWorks
GO

DROP TABLE Person.EmergencyContact

CREATE TABLE Person.EmergencyContace
(
	EmergencyContactID int NOT NULL PRIMARY KEY,
	EmployeeID int NOT NULL,
	ContactFirstNM varchar(50) NOT NULL,
	ContactLastNM varchar(50) NOT NULL,
	ContactPhoneNBR varchar(25) NOT NULL,
	CONSTRAINT UNQ_EmergencyContact_FirstNM_LastNM_PHONENBR
	UNIQUE (ContactFirstNM,ContactLastNM,contactPhoneNBR)
)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值