SQL数据库约束、默认和规则数据的完整性
实体完整性⼜称为⾏完整性,即数据库中的所有⾏都具有⼀个⾮空且没有重复的主键值
MSSQL中通过唯⼀索引、PRIMARY KEY约束、UNIQUE约束、INDENTITY属性等来强制主键的唯⼀性域完整性⼜叫列完整性,以保证列数据的输⼊具有正确的数据类型、格式和有效的数据范围
强制域有效性可以通过限制数据类型、CHECK约束和规则、FOREIGN KEY、DEFAULT、NOTNULL定义参照完整性⼜叫引⽤完整性,旨在保证主表和从表数据的⼀致性,通过FOREIGN KEY和CHECK约束实现
⽤户定义完整性⽤户定义的不属于以上完整性的特点那个规则
SQL数据库约束、默认和规则
1)约束 CONSTRAINT
实现约束的五种⽅式:
(1) CHECK约束
[CONSTRAINT 约束名] CHECK (逻辑表达式)
CREATE TABLE 成绩
(
学号 char(8) NOT NULL,
CONSTRAINT ck_cj CHECK (成绩>=0 and 成绩<=100)
)
ALTER TABLE 成绩
ADD CONSTRAINT ck_cj (成绩>=60 and 成绩<=100)
ALTER TABLE 成绩
DROP CONSTRAINT ck_cj
foreign key references用法(2)PRIMARY KEY约束
[CONSTRAINT 约束名] PRIMARY KEY [CLUSTERED] [NONLUSTERED]
CREATE TABLE 学⽣
(
学号 char(8) NOT NULL CONSTRAINT pl_xs PRIMARY KEY CLUSTERED
)
ALTER TABLE 学⽣
ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(学号)
(3)FOREIGN KEY约束 references
[CONSTRAINT 约束名] FOREIGH KEY (从表外键) PEFERENCES 主表 (主表外键)
CREATE TABLE 成绩
(
学号 char(8) NOT NULL FOREIGN KEY REFERENCES 学⽣ (学号)
)
(4)UNIQUE约束
[CONSTRAINT 约束名] UINQUE [CLUSTERED\NONCLUSTERED](列名...)
CREATE TABLE 职⼯
(
⾝份证号 char(18) NULL CONSTRAINT uni_sfz UNIQUE
)
(5)DEFAULT约束
[CONSTRAINT 约束名] DEFAULT 默认约束值 FOR 列名
CREATE TABLE 学⽣
(
性别 char(2) DEFAULT '男'
)
默认[DEFAULT]
默认是⼀种数据库对象,可以绑定在⼀列或者多列上,作⽤与DEFAULT约束相似,在插⼊数据⾏时,为没有指定数据的列提供实现定义的默认值
创建默认对象
CREATE DEFAULT 默认对象名 AS 默认值
USE 学⽣成绩
CREATE DEFAULT sex_mr AS '男'
绑定默认对象
sp_bindefault [@defname=] '默认对象名' [@objname] '绑定的列名'
use 学⽣成绩
go
exec sp_bindefault 'sex_mr','学⽣.性别'
删除绑定
sp_unbindefault [@objname=] '绑定的列名'
use 学⽣成绩
go
exec sp_unbindefault '学⽣.性别'
删除默认对象
DROP DEFAULT 默认对象名
use 学⽣成绩
go
drop default sex_mr
规则(RULE)
规则也是⼀种数据库对象,可以绑定在⼀列或多列上,作⽤与CHECK约束相似,在插⼊数据⾏时,指定接收的数据值的范围
创建规则
CREATE RULE 规则名 AS 规则条件
USE 学⽣成绩
go
create rule cj_rl as @cj>=0 and @cj<=100
绑定规则
sp_bindrule [@rulename=] '规则对象名' [@objname] '绑定的列名' use 学⽣成绩
go
exec sp_bindrule 'cj_rl','成绩.成绩'
删除规则
sp_unbindrule [@objname=] '绑定的列名'
use 学⽣成绩
go
exec sp_unbindrule '成绩.成绩'
删除规则对象
DROP RULE 规则对象名
use 学⽣成绩
go
drop rule cj_rl
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论