1. 约束
1) primary key
主键可以保证每行记录唯一性,还可以使用主键连接其它表,这样这两张表会形成一种关系。所谓的“关系”型数据管理系统的关系就是由此来的。下面创建一个PKAblumAblumId主键。
ALTER TABLE Album
add constraint PKAlbumAlbumId PRIMARY KEY(AlbumId)
通常我们使用IDENTITY关键字设置主键自增长,有些时候我们要将另外一张表的数据导入另一张表中。可以使用下面的方法暂时关闭或打开自增长。
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON
2) FOREIGN KEY
限制引用表某一字段为被引用表某字段,这样两张表形成了关联关系。主键是保证数据完整性的方法之一。注意只能连接创建了主键(primary key)或唯一一性(UNIQUE )约束的字段。下面创建了一个FKAlbumCreatesArtist主键,Album 表ArtistId字段参照Artist表ArtistId字段:
ALTER TABLE Album
ADD CONSTRAINT FKAlbumCreatesArtist FOREIGN KEY(ArtistId)
REFERENCES Artist(ArtistId)
3) CHECK
检查列值是否满足某种标准,下面列举了一些常用用法。下面创建了一个CKAlbumIsEnabled检查约束,限制Enabled字段的值只能是0,或1:
ALTER TABLE Album
ADD CONSTRAINT CKAlbumIsEnabled CHECK(Enabled IN(0,1))
序号 | 表达式 | 说明 | 例子 |
1 | between | 限制取值范围。 | Month between 1 and 12 |
2 | LIKE | 使用匹配模式限制取值范围。 | LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]' |
3 | IN | 限制取值范围为一个指定列表。 | IN(0,1) |
4 | 数学表达式 | 限制取值范围不能<.>或=某一值或列 | UnitPrice>=0 ShipDate>=OrderDate |
4) UNIQUE
UNIQUE也叫替换键,和主键功能一样可以约束字段值不能重复,可以被外键引用。不同的是它允许为NULL。下面创建了一个AKGenreID唯一约束:
Alter table Genre
Add constraint AKGenreID
Unique(ID)
5) DEFAULT
设置字段的默认值。下面创建了一个CNAlbumDefaultAlbumArtUrl默认约束:
ALTER TABLE Album
ADD CONSTRAINT CNAlbumDefaultAlbumArtUrl
DEFAULT N'/Content/Images/placeholder.gif' FOR AlbumArtUr
6) 禁止、启动和删除约束
禁止约束:
alter table Album nocheck constraint CKAlbumIsEnabled
启用约束:
alter table Album check constraint CKAlbumIsEnabled
删除约束:
alter table album drop CKAlbumIsEnabled
可看表约束详细信息:
exec sp_helpconstraint Album
2. 说明
使用sp_addextendedproperty 存储过程为表或字段添加“说明”。
7) 表
下面为Album表添加了说明:
declare @CurrentUser sysname
select @CurrentUser = user_name()
execute sp_addextendedproperty 'MS_Description',
' 音乐专辑信息表',
'user',@CurrentUser , 'table', 'Album'
8) 字段
下面为Album表AlbumId字段添加了
execute sp_addextendedproperty 'MS_Description',
'主键',
'user', @CurrentUser, 'table', 'Album', 'column', 'AlbumId'