数据完整性培训课件.ppt
7
6.2.2默认值对象的定义、使用与删除
通过SQL语句定义和绑定DEFAULT默认值对象
• 应用举例 【例】首先在XSCJ数据库中定义表book及名为 today 的默认值,然后将其绑定到
book表的 hire date 列。 --定义表 CREATE TABLE book
( book_id char(6) name varchar(20) NOT NULL, hire_date datetime NOT NULL
EXEC sp_addtype
--定义day缺省值对象
CREATE DEFAULT day AS ‘1960,00,00’
-- 将缺省值对象day绑定到birthday_date数据类型
USE XSCJ
EXEC sp_bindefault ' day ', ' birthday_date '
9
6.2.2默认值对象的定义、使用与删除
3
6.2.1 在表中定义及删除默认值约束
默认值约束的定义
下列程序实现的功能与上例同,但在定义缺省值约束的同时指定了约束 名。 USE XSCJ CREATE TABLE XS ( 学号 char(6) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, 总学分 tinyint NULL, 备注 text NULL, 入学日期 datetime CONSTRAINT datedflt default getdate() /*定义默认值约束*/ ) GO
5
6.2.1 在表中定义及删除默认值约束
默认值约束的删除
【例】删除上例定义的默认值约束。 USE XSCJ ALTER TABLE XS DROP CONSTRAINT AddDateDflt GO
6
6.2.2默认值对象的定义、使用与删除
通过SQL语句定义和绑定DEFAULT默认值对象
• 应用举例 【例】对于如前所述的XSCJ数据库中XS表的总学分字段,可用如下 程序段实现初始值设置为0。 CREATE DEFAULT zxf_default AS 0 /* 定义语句应为第一条件语句或紧跟在GO之后*/ USE XSCJ EXEC sp_bindefault ‘zxf_default’ ,’XS.总学分’ GO
实体完整性:要求表中所有的行具有唯一的标识符,例如主关键 字值。
参考完整性:确保维持主关键字和外部关键字的关系。
1
约束类型
约束是一种强制数据完整性的标准ANSI方法。每种数据完整 性类型 ,使用分别的约束类型来进行强制。
完整性类型 域
实体
参照
约束类型 Default Check Primary key Unique Foreign key check
10
6.3.1 数据完整性的分类
域完整性
【例】定义表KC的同时定义学分的约束条件。 USE XSCJ CREATE TABLE KC ( 课程号 char(6) NOT NULL, 课程名 char(8) NOT NULL, 学分 tinyint CHECK (总学分 >=0 AND总学分<=10) NULL, /* 通过CHECK子句定义约束条件 */ 备注 text NULL ) GO
) GO --创建默认值对象 CREATE DEFAULT today AS getdate() GO --绑定默认值对象 USE book EXEC sp_bindefault 'today', 'book.[hire_ date]'
8
6.2.2默认值对象的定义、使用与删除
通过SQL语句定义和绑定DEFAULLeabharlann 默认值对象 默认值对象的删除
【例】解除默认值对象day与XSCJ库中用户定义类型birthday_date的绑 定关系,然后删除名为day的默认值对象。 USE XSCJ IF EXISTS (SELECT name FROM sysobjects WHERE name = 'day' AND type = 'D') BEGIN EXEC sp_unbindefault 'birthday_date' DROP DEFAULT day END GO
4
6.2.1 在表中定义及删除默认值约束
默认值约束的定义
【例】在修改表时定义一个字段的默认值约束。 USE XSCJ ALTER TABLE XS ADD AddDate smalldatetime NULL CONSTRAINT AddDateDflt /*默认值约束名*/ DEFAULT getdate()
描述 Insert时,为列指定值 指定在列中可接受的值 每行唯一的标识 不允许有重复的关键字 匹配另一表中的关键字
根据表中另一列的值,指定 在某列中可接受的数值。
2
6.2.1 在表中定义及删除默认值约束
默认值约束的定义
【例】在定义表时定义一个字段的默认值约束。 USE XSCJ CREATE TABLE XS ( 学号 char(6) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, 总学分 tinyint NULL, 备注 text NULL, 入学日期 datetime default getdate() /*定义默认值约束*/ ) GO
• 应用举例
【例】在XSCJ数据库中定义名为 birthday_date 的数据类型,然后 定 义默认值对象day并将其绑定到用户定义的数据类型birthday_date 中。
--定义数据类型birthday_date USE XSCJ birthday_date, 'datetime', 'NULL' Go
数据完整性
在数据库规划的时候最重要的一步是确定用于强制数据完整性的 最好方法。数据库完整性指在是存储在数据库中的数据的一致性 和准确性。数据库完整性分为这三种类别:域完整性(列)、实 体完整性(行)和参考完整性(表之间)。
域 完整性:指列有效的一组值并决定是否允许有空值。也可以通 过在一列中限定数据类型,格式和可能值的范围来强制数据完整 性