8库完堅性的整性控制 8.2 SQL Server的数据完整性及其实现 SQL Server具有较健全的数据完整性控制机制,它使用约束、 默认、规则和触发器4种方法定义和实施数据库完整性功能。 821 SQL Server中的几种约束 今 SQL Server的数据完整性种类 SQL Server2000中的数据完整性包括域完整性、实体完整性 和参照完整性3种。 ■域完整性 域完整性为列级和元组级完整性。它为列或列组指定一个 有效的数据集,并确定该列是否允许为空值(NUL) ■实体完整性 实体完整性为表级完整性,它要求表中所有的元组都应该 有一个惟一标识,即主关键字 ■参照完整性 参照完整性是表级完整性,它维护从表中的外码与主表中 主码的相容关系 2021/1/21
第8章 数据库完整性及SQL Server的完整性控制 2021/1/21 8.2 SQL Server的数据完整性及其实现 SQL Server具有较健全的数据完整性控制机制,它使用约束、 默认、规则和触发器4种方法定义和实施数据库完整性功能。 8.2.1 SQL Server中的几种约束 ❖ SQL Server的数据完整性种类 SQL Server 2000中的数据完整性包括域完整性、实体完整性 和参照完整性3种。 ▪ 域完整性 域完整性为列级和元组级完整性。它为列或列组指定一个 有效的数据集,并确定该列是否允许为空值(NULL)。 ▪ 实体完整性 实体完整性为表级完整性,它要求表中所有的元组都应该 有一个惟一标识,即主关键字。 ▪ 参照完整性 参照完整性是表级完整性,它维护从表中的外码与主表中 主码的相容关系
8库完堅性的整性控制 ☆ SQL Server数据完整性方式 SQL Server使用声明数据完整性和过程数据完整性两种方式 实现数据完整性 ■声明数据完整性 声明数据完整性通过在对象定义中定义、系统本身自动强 制来实现。声明数据完整性包括各种约束、默认和规则。 ■过程数据完整性 过程数据完整性通过使用脚本语言( Transact-SQL)定义 系统在执行这些语言时强制实现数据完整性。过程数据完整 性包括触发器和存储过程等。 SQL Server实现数据完整性的具体方法 SQL Server实现数据完整性的主要方法有4种:约束、默认 规则和触发器。 ■约束 约束通过限制列中的数据、行中的数据和表之间数据来保 证数据完整性 2021/1/21
第8章 数据库完整性及SQL Server的完整性控制 2021/1/21 ❖ SQL Server数据完整性方式 SQL Server使用声明数据完整性和过程数据完整性两种方式 实现数据完整性。 ▪ 声明数据完整性 声明数据完整性通过在对象定义中定义、系统本身自动强 制来实现。声明数据完整性包括各种约束、默认和规则。 ▪ 过程数据完整性 过程数据完整性通过使用脚本语言(Transact-SQL)定义, 系统在执行这些语言时强制实现数据完整性。过程数据完整 性包括触发器和存储过程等。 ❖ SQL Server实现数据完整性的具体方法 SQL Server实现数据完整性的主要方法有4种:约束、默认、 规则和触发器。 ▪ 约束 约束通过限制列中的数据、行中的数据和表之间数据来保 证数据完整性
8库完堅性的整性控制 表8-1 SQL Server2000约束的5种类型和其完整性功能 完整性类型约束类型 完整性功能描述 DEFAULT(默认) 插入数据时,如果没有明确提供列 值,则用默认值作为该列的值 域完整性 CHECK(检查) 指定某个列或列组可以接受值的范 ,或指定数据应满足的条件 PRIMARY KEY((主码)指定主码,确保主码不重复,不允 许主码为空值 实体完整性 UNIQUE(惟一值)冗余 指出数据应具有惟一值,防止出现 参照完整性| FOREIGN KEY(外码)定义外码、被参照表和其主码 2021/1/21
第8章 数据库完整性及SQL Server的完整性控制 2021/1/21 表8-1 SQL Server 2000约束的5种类型和其完整性功能 完整性类型 约束类型 完整性功能描述 域完整性 DEFAULT(默认) 插入数据时,如果没有明确提供列 值,则用默认值作为该列的值 CHECK(检查) 指定某个列或列组可以接受值的范 围,或指定数据应满足的条件 实体完整性 PRIMARY KEY(主码) 指定主码,确保主码不重复,不允 许主码为空值 UNIQUE(惟一值) 指出数据应具有惟一值,防止出现 冗余 参照完整性 FOREIGN KEY(外码) 定义外码、被参照表和其主码
8库完堅性的整性控制 使用 CREATE语句创建约束的语法形式如下 CREATE TABLE〈表名>(,<列名类型>[<列级约束[,n] [,<表级约束>[,n]]) 其中,<列级约束>的格式和内容为: [ CONSTRAINT<约束名>] (PRIMARY KEY [CLUSTERED NONCLUSTERED UNIQUE [CLUSTERED NONCLUSTERED [ FOREIGN KEY] REFERENCES<被参照表入(<主码》 DEFAULT<常量表达式> CHECK<逻辑表达式 2021/1/21
第8章 数据库完整性及SQL Server的完整性控制 2021/1/21 使用CREATE语句创建约束的语法形式如下: CREATE TABLE <表名>(,<列名><类型>[<列级约束>][,…n] [,<表级约束>[,…n]] ) 其中,<列级约束>的格式和内容为: [CONSTRAINT<约束名>] {PRIMARY KEY[CLUSTERED | NONCLUSTERED] | UNIQUE[CLUSTERED|NONCLUSTERED] | [FOREIGN KEY]REFERENCES<被参照表>[(<主码>)] | DEFAULT<常量表达式> | CHECK<逻辑表达式>
8库完堅性的整性控制 <表级约束>的格式和内容为 CONSTRAINT<约束名 IPRIMARY KEY[ CLUS TERED| NONCLUSTERED](列名组》) UNIQUE[ CLUSTERED| NONCLUSTEREI](<列名组>) FOREIGN KEY(<外码>) REFERENCES(被参照表)(<主码》) CHECK(<约束条件>)} 2021/1/21
第8章 数据库完整性及SQL Server的完整性控制 2021/1/21 <表级约束>的格式和内容为: CONSTRAINT<约束名> {{PRIMARY KEY[CLUSTERED|NONCLUSTERED](<列名组>) |UNIQUE[CLUSTERED|NONCLUSTERED](<列名组>) |FOREIGN KEY(<外码>)REFERENCES(被参照表)(<主码>) |CHECK(<约束条件>)}