文档详情

SQL-SErvEr-数据库应用第五章.ppt

发布:2018-08-23约5.76千字共78页下载文档
文本预览下载声明
SQL Server--chap6 实现SQL Server的数据完整性 第五章 SQL Server的 数据完整性 主要内容 数据完整性基本概念 定义约束 约束类型的应用 创建约束的其他选项 使用默认与规则 DEFAULT约束 当向数据库表中插入数据时,如果没有明确的提供输入值,SQL Server自动为该列输入指定值 CHECK约束 通过逻辑表达式判断限制插入到列中的值。通常记录中的每一列均有值,即使它是NULL PRIMARY约束 强制表的实体性。不允许数据库表在指定列上具有相同的值,且不允许有空值。 UNIQUE约束 不允许数据库表在指定列上具有相同的值,但允许有空值 FOREIGN KEY约束 外健用于建立和加强两个表数据之间的链接的一列或多列 例:恢复表teachers上的DF_status约束,并在列Title上添加一个输入“未知”值的DEFAULT约束 USE My_DB1 ALTER TABLE teachers ADD CONSTRAINT DF_status DEFAULT ‘在职’ FOR status, CONSTRAINT DF_Title DEFAULT ‘未知’ FOR title go (2) CHECK约束 使用该约束可实现当用户在向表中插入或更新数据时,由SQL Server检查新行中的带有该约束的列值使其必须满足约束条件 该约束在执行INSERT语句或UPDATE时起作用 CHECK(zipcode LIKE[0-9][0-9][0-9][0-9][0-9][0-9]), CHECK约束作用域 单列:列级CHECK约束 多列:表级CHECK约束 例:在表teachers的列Birthday上添加一个CHECK约束,以保证输入的数据大于1900年1月1日并且小于当天的实际日期 列级约束 USE My_DB1 ALTER TABLE teachers ADD CONSTRAINT CK_Birthday CHECK(Birthday’01/01/1900’ AND Birthdaygetdate()) go 约束名 继续插入一个不符合约束的记录? INSERT Departments values(20,清华大学计算中心) go 向表中插入如下数据,试试看 INSERT teachers values(41356,‘黄轩’, ‘男’, ‘5/1/1851’,20,‘教授’, ‘规划部’,‘在职’) go (3) PRIMARY KEY约束 该约束能确保数据的唯一性 若PRIMARY KEY约束定义在多列上,则一列中的值可以重复,但PRIMARY KEY约束定义中的所有列的组合的值必须唯一 31 English Prof_4 100003 28 English Prof_3 100001 35 Nature Prof_2 100002 25 Computer Prof_1 100001 price book title_id author_id 主键 例:在My_DB1中建表Subjects以记录学校学科数据。表中包括 一级学科代码(加主键约束) 一级学科名称 二级学科代码(加主键约束) 二级学科名称 USE My_DB1 CREATE TABLE My_DB1. dbo.Subjects ( PrimaryCode tinyint NOT NULL, PrimaryName nvarchar(20) NULL, SecondaryCode tinyint NOT NULL, SecondaryName nvarchar(20) NULL ) GO ALTER TABLE Subjects ADD CONSTRAINT PK_Subject PRIMARY KEY CLUSTERED (PrimaryCode, SecondaryCode) GO (4) UNIQUE约束 该约束可确保在非主键列中不输入重复值,可以实现在一张表上定义多个UNIQUE约束,且在定义有UNIQUE约束的列上允许有一个空值 可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束 UNIQUE 约束允许 NULL 值,这一点与 PRIMARY KEY 约束不同,当与参与 UNIQUE 约束的任何值一起使用时,每列只允许一个空值 FOREIGN KEY 约束可以引用 UNIQUE 约束 例:在表Departments上的TelCode列上添加一个UNIQUE约束 USE My_DB1 ALTER TAB
显示全部
相似文档