您的位置:首页 > 数据库

T-SQL语句约束笔记

2012-03-10 08:04 127 查看
T-SQL语句约束笔记

数据库完整性-约 束

1 PRIMARY KEY约束

例如,下面的SQL语句创建一个名为student的表,其中指定student_number为主键:

USE test

GO

CREATE TABLE student

(sutdent_number int PRIMARY KEY,

student_name char(30))

GO

2 FOREIGN KEY约束

例如,下面就是一个使用FOREIGN KEY约束的例子:

CREATE TABLE product

(product_number int,

student_number int

FOREIGN KEY REFERENCES student(student_number)

ON DELETE NO ACTION)

GO

3 UNIQUE约束

例如,下面的SQL语句创建了一个test2表,其中指定了c1字段不能包含重复的值:

USE test

GO

CREATE TABLE test2

(c1 int UNIQUE,

c2 int)

GO

INSERT test2 VALUES(1,100)

GO

如果再插入一行:

INSERT test2 VALUES(1,200)

4 CHECK约束

例如,下面的SQL语句创建一个成绩(score)表,其中使用CHECK约束来限定成绩只能在0~100分之间:

CREATE TABLE score

(sutdent_number int,

score int NOT NULL CHECK(score>=0 AND score

默认值

.1 在创建表时指定默认值

例如,下面在test数据库中创建一个datetest表,其中c2指定默认值未当前日期:

USE test

GO

CREATE TABLE datetest(

c1 int,

c2 datetime DEFAULT (getdate())

)

然后插入一行数据:

INSERT datetest(c1) VALUES(1)

SELECT * FROM datetest

同样,可以给bookdb数据库中的orderform表中的order_date字段加上默认值:

USE bookdb

GO

ALTER TABLE orderform

ADD

CONSTRAINT DateDflt

DEFAULT getdate() FOR order_date

.2 使用默认对象

.2.1 创建默认对象

2.使用CREATE DEFAULT语句

例如,使用下面的SQL语句也可以创建address_default默认对象:

USE bookdb

GO

CREATE DEFAULT address_default AS \'无\'

GO

.2.2 绑定默认对象

2.使用sp_bindefault存储过程

例如,上面将address_default默认对象绑定到authors表的address列上的操作过程可以使用下面的SQL语句来完成:

USE bookdb

EXEC sp_bindefault \'address_default\', \'authors.address\'

.2.4 解除默认对象的绑定

例如,下面的SQL语句解除authors表address列上的默认值绑定:

USE bookdb

EXEC sp_unbindefault \'authors.address\'

.2.5 删除默认对象

例如,下面的SQL语句判断是否存在address_default默认对象,如果存在则删除该默认对象:

USE bookdb

IF EXISTS (SELECT name FROM sysobjects

WHERE name = \'address_default\'

AND type = \'D\')

DROP DEFAULT address_default

GO

规 则

1 创建规则

例如,下面的SQL语句创建一个名为score_rule的规则,限定输入的值必须在0到100之间:

USE test

GO

CREATE RULE score_rule AS @score BETWEEN 0 and 100

而下面创建的规则将输入到该规则所绑定的列中的实际值限制为只能是该规则中列出的值:

USE test

GO

CREATE RULE list_rule AS @list IN (\'1997\', \'1997\', \'1996\')

也可以使用LIKE来创建一个模式规则,即遵循某种格式的规则。例如,要使得该规则指定任意两个字符的后面跟一个连字符和任意多个字符(或没有字符),并以1到6之间的整数结尾,则可以使用下面的SQL语句:

USE test

GO

CREATE RULE pattern_rule

AS

@value LIKE \'__-%[1-6]\'

2 绑定规则

例如,下面的SQL语句可以将score_rule规则绑定到score表的score列上:

USE test

EXEC sp_bindrule \'score_rule\', \'score.score\'

3 删除规则

例如,要解除绑定到score表的score列上的规则,可以使用下面SQL语句:

USE test

EXEC sp_unbindrule \'score.score\'

例如,要删除规则score_rule,可以使用下面的SQL语句:

DROP RULE score_rule
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: