规则和约束

来源:互联网 发布:如何查看高德导航端口 编辑:程序博客网 时间:2024/05/02 02:20
 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

原创粉丝点击