首页计算机计算机软件SQLServer2005数据库技术及应用 12 第12章 数据完整性的实现方法.pptx

12 第12章 数据完整性的实现方法.pptx

页数:28页文件大小:423.5 KB来源: SQLServer2005数据库技术及应用ppt课件

本章给出实现数据完整性的具体做法,逐一介绍主键约束、唯一约束、检查约束、外键约束和默认值约束的作用,并分别给出在SSMS中的操作步骤与对应的T-SQL语法;随后说明默认值对象与规则这两种数据库对象的创建、绑定、解除绑定和删除方法,以及它们与默认值约束、CHECK约束的区别。

第12章数据完整性的实现方法章封面,标示本章主题为约束、默认值与规则
第12章数据完整性的实现方法目录页,列出主键、唯一、检查、外键与默认值等约束及默认值与规则
12.1约束的要点列表,约束支持域完整性、实体完整性、引用完整性以及用户定义的完整性。约束分为列级约束和表级约束:前者是只对一列起作用的约束
查看本课件的文字版(共 28 页,供检索与复制)

第1页:第12章数据完整性实现

第12章数据完整性的实现方法

第2页:第12章目录:数据完整性

第12章数据完整性的实现方法

  • 12.1约束
  • 12.1.1主键(PRIMARY KEY)约束
  • 12.1.2唯一(UNIQUE)约束
  • 12.1.3检查(CHECK)约束
  • 12.1.4外键(FOREIGN KEY)约束
  • 12.1.5默认值(DEFAULT)约束
  • 12.2默认值
  • 12.3规则

第3页:12.1约束

12.1约束

约束(CONSTRAINTS)是实现数据完整性的首选方法。顾名思义,约束就是一种限制,使数据表中对象的取值不能随心所欲,要在允许的范围内
  • 约束支持域完整性、实体完整性、引用完整性以及用户定义的完整性。约束分为列级约束和表级约束:前者是只对一列起作用的约束;后者则是对多个列起作用的约束
  • 约束既可以用SQL Server ManagementStudio创建,也可以用T-SQL语句创建

第4页:12.1.1主键约束

12.1.1主键约束主键约束(PRIMARY KEY)保证某一列或多列组合中的数据相对于表中的每一行都是唯一的,并且这些列就是该表的主键。主键约束不允许在创建主键约束的列上有空值

第5页:12.1.1主键约束(SSMS操作)

12.1.1主键约束使用SQL Server Management Studio设置主键约束的步骤:1.启动SQL Server Management Studio2.在对象资源管理器上点击“+”,展开欲设置的数据库和表,在弹出的快捷菜单上单击“修改”3.鼠标右击要设置为主键的字段,在弹出的快捷菜单上选择“设置主键”选项,单击鼠标左键

第6页:用T-SQL语句创建主键约束

12.1.1主键约束用T-SQL语句创建主键约束的语法格式:CREATE TABLE table_name( column_name datatype[ CONSTRAINT constraint_name PRIMARY KEY][ CLUSTERED | NONCLUSTERED ] [ ,…n ][CONSTRAINT constraint_name PRIMARY KEY<列名1>[,<列名2>,…]])

第7页:12.1.2唯一(UNIQUE)约束

12.1.2唯一约束

  • 唯一约束的作用是确保在非主键列中不输入重复值。唯一约束和主键约束比较相似,都不允许表中对应字段存在重复值,但二者有以下重要区别:
  • 一个表可以定义多个唯一约束,但只能定义一个主键约束。
  • 允许为空值的列上可以定义唯一约束,但不能定义主键约束。

第8页:唯一(UNIQUE)约束(续)

12.1.2唯一约束使用SQL Server Management Studio设置唯一约束的步骤如下:1.展开数据库和表,右击鼠标选择“修改”,在窗口空白处单击鼠标右键,选择“索引/键”2.单击“添加”按钮,系统会自动加上一个默认的唯一约束名称3.在常规项“列”对应的输入框选择要创建唯一性约束的列名及排列顺序,在“是唯一的”对应下拉框中选择“是”,单击“关闭”按钮

第9页:唯一(UNIQUE)约束(续3)

12.1.2唯一约束用T-SQL语句创建唯一约束的语法格式:CREATE TABLE table_name /*指定表名( column_name datatype /*定义字段[ CONSTRAINT constraint_name UNIQUE]/*列级约束,直接在字段后面定义[ CLUSTERED | NONCLUSTERED ] /*约束的索引类型[ ,…n ] /*表示可定义多个字段[CONSTRAINT constraint_name UNIQUE<列名1>[,<列名2>,…]])/*表级约束,可在多个字段上定义

第10页:12.1.3检查(CHECK)约束

12.1.3检查约束

  • 检查约束通过限制输入到列中的值来强制实现域的完整性,方法是通过逻辑表达式来判断数值是否符合要求

第11页:检查(CHECK)约束(续)

12.1.3检查约束使用SQL Server Management Studio设置检查约束的步骤如下:1.展开数据库和表,右击鼠标选择“修改”,在窗口空白处单击鼠标右键,选择“check约束”2.单击“添加”按钮,系统会给出默认的约束名称3.在约束表达式窗格中输入约束条件,例如“grade>=0 and grade<=100”

第12页:检查(CHECK)约束(续3)

12.1.3检查约束

用T-SQL语句创建检查约束语法格式:CREATE TABLE table_name/*指定表名( column_name datatype/*定义字段[[check_name] CHECK ( logical_expression )] /*CHECK约束表达式[ ,…n ])

第13页:12.1.4外键约束

12.1.4外键约束

  • 外键(FOREIGN KEY)是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
  • 创建或更改表时都可以定义外键约束。有了外键约束后,当一行新的数据被加入到表中,或对表中已经存在的属于外部关键字段上的数据进行修改时,新数据必须存在于另一基本表的主关键字上,或者为NULL

第14页:外键约束(续)

12.1.4外键约束使用SQL Server Management Studio设置外键约束的步骤如下:1.展开数据库和表,右击鼠标选择“修改”,然后在上面窗口空白处单击鼠标右键,在快捷菜单中选择“关系”2.弹出“外键关系”对话窗口,单击“添加”按钮,系统会给出默认的关系名称3.点击“表和列规范”左边的“+”,让系统弹出“表和列”窗口4.在“表和列”窗口选择所要参考的主键的表名、表中的主键,以及本表中设置外键的列名,单击“确定”按钮,再单击“关闭”按钮

第15页:外键约束(续3)

12.1.4外键约束用T-SQL语句创建外键约束语法格式:create TABLE table_name /*指定表名( column_name datatype [FOREIGN KEY]REFERENCES ref_table (ref_column) /*指定被参照基本表的表名和列名[, …n ])或create TABLE table_name(/*指定表名column_name datatype[, …n ]CONSTRAINT constranint_name FOREIGN KEY(列名) REFERENCES ref_table (ref_column))/*单独列出,并指定约束名

第16页:12.1.5默认值(DEFAULT)约束

12.1.5默认值约束

  • 默认值约束让用户能够定义一个值,每当用户没有在某一列中输入值时,则将所定义的值提供给这一列

第17页:默认值(DEFAULT)约束(续)

12.1.5默认值约束用SQL Server Management Studio设置默认值约束的步骤如下:1.展开数据库和表,右击鼠标选择“修改”2.在系统弹出的窗口中单击要设置默认的列,在下面列属性设置栏的“默认值或绑定”输入框中,输入对应的默认值即可

第18页:默认值(DEFAULT)约束(续3)

12.1.5默认值约束用T-SQL语句设置默认值约束语法格式:ALTER TABLE table_nameADD [CONSTRAINT constraint_name ]DEFAULT default_value FOR column_name

第19页:12.2默认值

12.2默认值

  • 这里所说的默认值是数据库对象之一,它指定在向数据库中的表插入数据时,如果用户没有明确给出某列的值,SQL Server自动指定该列使用此默认值。它是实现数据完整性的主要方法之一
  • 注意默认值对象和前面已经提到的默认值约束是有区别的,虽然它们的最终作用是基本一样的,但用法不同:默认值约束是在创建或修改表时直接指定的,而默认值对象是先独立创建,然后再根据需要绑定到表中某个列上

第20页:默认值(续)

12.2默认值用T-SQL创建默认值语法:CREATE DEFAULT default_name ASconstant_expression参数说明:default_name是新建默认值的名称;constant_expression为default_name的值,必须是一个常数表达式

第21页:默认值(续3)

12.2默认值默认值的绑定:默认值创建好之后,必须将其绑定到某个列或用户自定义数据类型上才能生效。语法:sp_bindefault default_name, ‘object_name’参数说明:sp_bindefault是实现默认值绑定功能的系统存储过程;default_name是默认值名称;object_name是要与默认值绑定的列名或用户自定义数据类型名,如果指定的是表中的列,格式必须是“table.column”

第22页:默认值(续4)

12.2默认值默认值绑定的解除一个默认值被绑定到表中的列或用户自定义数据类型之后,如果不想再使用了,可以用系统存储过程unbinddefault解除绑定,语法如下:sp_unbinddefault ‘object_name’注意绑定解除后作为数据库对象的默认值仍然存在于数据库中

第23页:默认值(续5)

12.2默认值默认值绑定的删除:如果一个默认值不再使用了,可以用DROP语句将其删除,语法如下:DROP DEFAULT default_name

第24页:12.3规则

12.3规则

  • 规则也是数据库对象之一,它指定向表的某列插入或更新数据时,输入值被限定的取值范围。规则是实现数据库域完整性的主要方法之一,可用于表中的列或用户自定义的数据类型
  • 规则在功能上等同于我们前面已讲过的check约束。类似于default约束和default对象的区别,规则也是要先单独创建然后再绑定到需要的列或数据类型上

第25页:规则(续)

12.3规则用T-SQL语句创建规则:语法:CREATE RULE rule_name AS condition_expression参数说明:rule_name是被创建的规则的名称;condition_express指明定义规则的条件,在这个条件表达式中不能包含列名或其他数据库对象名,但它带有一个@为前缀的参数,即参数的名字必须以@为第一个字符

第26页:规则(续3)

12.3规则规则的绑定:规则创建好以后,也必须绑定到某个列或用户自定义的数据类型上才能生效。语法:sp_bindrule rule_name, object_name参数说明:rule_name是已创建的规则名;object_name指定要与规则绑定的列名或用户自定义数据类型名,如果指定的是表中的列,格式必须是“table.column”

第27页:规则(续4)

12.3规则解除规则:使用系统存储过程sp_unbindrule可以解除已经绑定到列或用户自定义数据类型上的规则,但解除的规则仍然存在于数据库中。语法:sp_unbindrule rule_name, object_name

第28页:规则(续5)

12.3规则删除规则:使用DROP RULE可以删除已经解除了绑定的规则。语法:DROP RULE rule_name

顶部目录