数据库应用基础第五章数据完整性.ppt
《数据库应用基础第五章数据完整性.ppt》由会员分享,可在线阅读,更多相关《数据库应用基础第五章数据完整性.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库应用基础第五章数据完整性 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望复习复习SELECT查询的基本格式是什么?查询的基本格式是什么?具有哪些参数?具有哪些参数?各参数的含义是什么?各参数的含义是什么?2 2SELECT ALL|DISTINCT select_list INTO new_table_name FROM table_name WHERE condition GROUP BY clause HAVING clause ORDER BY COM
2、PUTE clause select_list所要查询的字段名称所要查询的字段名称INTO new_table_name将查询结果放到一个新的临时表中将查询结果放到一个新的临时表中FROM table_name欲查询数据的表的名称欲查询数据的表的名称WHERE condition欲查询数据的条件欲查询数据的条件GROUP BY clause根据字段类别做总计函数处理根据字段类别做总计函数处理HAVING clause预查询数据的条件预查询数据的条件ORDER BY将查询结果按某字段排序将查询结果按某字段排序COMPUTE clause在在SELECT查询的同时,作数据总计查询的同时,作数据总计
3、3 3本章主要内容本章主要内容5 5.1.1 数据完整性的基本概念数据完整性的基本概念5 5.2 2 定义约束定义约束5 5.3 3 约束的类型约束的类型4 45 5.1.1 数据完整性的基本概念数据完整性的基本概念1 数据完整性的类型数据完整性的类型2 强制数据完整性强制数据完整性(1 1)实体完整性)实体完整性(2 2)域完整性)域完整性(3 3)引用完整性)引用完整性(4 4)用户定义完整性)用户定义完整性5 51 数据完整性的类型数据完整性的类型 数据完整性数据完整性是指存储在数据库是指存储在数据库中的数据的中的数据的一致性一致性和和准确性准确性。(1 1)实体完整性)实体完整性 实体
4、完整性实体完整性要求表中所有的行具有要求表中所有的行具有唯一唯一的标识符。的标识符。例:图书信息表例:图书信息表book_infobook_info中字段中字段book_idbook_id取值必须唯一。取值必须唯一。6 61 数据完整性的类型数据完整性的类型(2 2)域完整性)域完整性 域完整性域完整性是指数据库表中对指定列是指数据库表中对指定列有效的输入值有效的输入值。例:图书馆管理系统中,输入某例:图书馆管理系统中,输入某本图书的数量时不应当出现小于本图书的数量时不应当出现小于0 0本的情况。本的情况。7 71 数据完整性的类型数据完整性的类型(3 3)引用完整性)引用完整性 引用完整性引
5、用完整性用于在输入或删除记录用于在输入或删除记录时,保持表之间已定义的关系。时,保持表之间已定义的关系。例:对于例:对于 Library_DBLibrary_DB数据库中的数据库中的 book_info book_info 表和表和 class class 表,引用完整性表,引用完整性基于基于 book_info book_info 表中的外键表中的外键 (class_id)(class_id)与与 class class 表中的主键表中的主键 (class_id)(class_id)之间的关系之间的关系。8 81 数据完整性的类型数据完整性的类型(4 4)用户定义完整性)用户定义完整性 用户
6、定义完整性用户定义完整性使用户能够定义不使用户能够定义不属于其他任何完整性分类的属于其他任何完整性分类的特定业务规特定业务规则则。9 92 强制数据完整性强制数据完整性 强制数据完整性强制数据完整性就是数据完整性的就是数据完整性的实现。实现。SQL Server 2008 SQL Server 2008 通过下列机制来强制通过下列机制来强制列中数据的完整性列中数据的完整性 PRIMARY KEY PRIMARY KEY 约束约束 FOREIGN KEY FOREIGN KEY 约束约束 UNIQUE UNIQUE 约束约束 CHECK CHECK 约束约束 DEFAULT DEFAULT 约束
7、约束 允许空值允许空值10102 强制数据完整性强制数据完整性(1 1)声明数据完整性)声明数据完整性 声明数据完整性声明数据完整性是指定义数据标准是指定义数据标准规定数据必须作为对象定义的一部分,规定数据必须作为对象定义的一部分,SQL ServerSQL Server将自动确保数据符合标准。将自动确保数据符合标准。11112 强制数据完整性强制数据完整性(2 2)过程定义数据完整性)过程定义数据完整性 过程定义数据完整性过程定义数据完整性是指通过编写是指通过编写用来定义数据必须满足的标准和强制该用来定义数据必须满足的标准和强制该标准的脚本来实现数据完整性。标准的脚本来实现数据完整性。121
8、25 5.2 2 约束的类型约束的类型1 PRIMARY KEY 约束约束2 FOREIGN KEY 约束约束3 UNIQUE 约束约束4 CHECK 约束约束5 DEFAULT 约束约束1313 主键:主键:表中的一列或列的组合,表中的一列或列的组合,其值能其值能唯一地标识唯一地标识表中的每一行。表中的每一行。PRIMARY KEYPRIMARY KEY约束约束:不允许不允许数据库数据库表在指定主键约束的列(或组合列)表在指定主键约束的列(或组合列)上上具有相同的值具有相同的值,且,且不允许有空值不允许有空值,一个表一个表只能有一个只能有一个PRIMARY KEYPRIMARY KEY约束。
9、约束。例:图书编号例:图书编号(book_id)(book_id),借阅人编号,借阅人编号(borrower_id)(borrower_id)以及借书日期以及借书日期(lend_date)(lend_date)均有重复的数据记录,如果将三个字段组均有重复的数据记录,如果将三个字段组合起来作为主键,就能保证主键的唯一性。合起来作为主键,就能保证主键的唯一性。1 PRIMARY KEY 约束(主键约束)约束(主键约束)约束约束是一种强制数据完整性的是一种强制数据完整性的标准机制标准机制。book_idbook_idborrower_idborrower_idlend_datelend_dateba
10、ck_dateback_date07890789960651 960651 2009-9-102009-9-102009-10-102009-10-100284 0284 9606519606512009-9-102009-9-102009-10-012009-10-010284 0284 9608119608112009-9-102009-9-102009-9-282009-9-28078907899606519606512009-10-102009-10-10NULLNULL1414 外键:外键:用于建立和加强两个表数据用于建立和加强两个表数据之间的链接的一列或多列,通过将保存之间的链接的
11、一列或多列,通过将保存表中主键值的一列或多列添加到另一个表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接,这个表中,可创建两个表之间的链接,这个列就成为第二个表的外键。列就成为第二个表的外键。被被FOREIGN KEY 参照的列在表参照的列在表中应该具有中应该具有PRIMARY KEY约束约束或或 UNIQUE 约束约束。例:例:lend_list表中的表中的 book_id 列是列是链接到链接到 book_info 表的外键表的外键。2 FOREIGN KEY 约束(外键约束)约束(外键约束)1515 尽管外键约束的尽管外键约束的主要目的是控制存主要目的是控制存储在外键表中的数
12、据储在外键表中的数据,但它,但它还可以控制还可以控制对主键表中数据的修改对主键表中数据的修改。例:如果在例:如果在 book_infobook_info表中删除一本图书表中删除一本图书(book_id)(book_id),而这本书的,而这本书的book_idbook_id在在 lend_list lend_list 表中记录借书信息时使用了,那么这两个表之间表中记录借书信息时使用了,那么这两个表之间关联的完整性将被破坏,外键约束防止这种情况关联的完整性将被破坏,外键约束防止这种情况的发生。的发生。2 FOREIGN KEY 约束(外键约束)约束(外键约束)1616 UNIQUE UNIQUE
13、约束:约束:用以用以确保确保在在非主键列非主键列中中不输入重复值不输入重复值,但,但允许有空值允许有空值 。可以。可以在单一指定列和多个指定列上创建在单一指定列和多个指定列上创建UNIQUEUNIQUE约束。约束。在强制下面的唯一性时应使用在强制下面的唯一性时应使用 UNIQUE 约束而不是约束而不是 PRIMARY KEY 约束:约束:l非主键的一列或列组合非主键的一列或列组合 l允许空值的列 3 UNIQUE 约束约束1717 CHECK CHECK 约束:约束:通过逻辑表达式判断通过逻辑表达式判断限制插入限制插入到列中的值。到列中的值。CHECK 约束在约束在执行执行INSERT语句语句
14、或或UPDATE语句语句时作时作用。用。例:例:记录图书数量的记录图书数量的book_state表,表,图书总数量图书总数量number列必须满足大于等列必须满足大于等于于0,剩余图书数量,剩余图书数量leftnum列下限为列下限为0,上限为,上限为 number列中所存值。列中所存值。4 CHECK 约束(检查约束)约束(检查约束)1818 DEFAULT DEFAULT 约束:约束:当用户在向数据库表当用户在向数据库表中插入数据时,如果没有明确的提供输入中插入数据时,如果没有明确的提供输入值时,值时,SQL Server自动为该列自动为该列输入指定输入指定值值。5 DEFAULT 约束(默
15、认约束)约束(默认约束)使用使用DEFAULT约束时,应约束时,应注意注意:l 创建创建DEFAULT约束时,约束时,SQL Server将对表中将对表中现有的数据进行数据完整性验证。现有的数据进行数据完整性验证。l 表中的每一列上只能定义一个表中的每一列上只能定义一个 DEFAULT约束。约束。l DEFAULT 约束只在执行约束只在执行INSERT语句时起作用。语句时起作用。例:例:通常将数字型列的默认值指定通常将数字型列的默认值指定为零,将字符串列的默认值指定为为零,将字符串列的默认值指定为暂缺。暂缺。19195 5.3 3 定义约束定义约束4 创建约束的其他选项创建约束的其他选项1 约
16、束的创建约束的创建 2 查看约束的定义信息查看约束的定义信息 3 删除约束删除约束 5 使用默认使用默认6 使用规则使用规则20201 约束的创建约束的创建(1 1)通过使用)通过使用CREATE TABLECREATE TABLE命令在建命令在建表时创建约束表时创建约束CREATE TABLE table_name(column_name data_type(NULL|NOT NULL)CONSTRAINT constraint_namePRIMARY KEY CLUSTERED|NONCLUSTERED|UNIQUE CLUSTERED|NONCLUSTERED|FOREIGN KEY R
17、EFERENCES ref_table(ref_column)|DEFAULT constant_expression|CHECK(logical_expression),.)创建约束的表的名称创建约束的表的名称创建约束的列的名称创建约束的列的名称所在列的数据类型所在列的数据类型新建约束的名称新建约束的名称2121例例5-15-1:在:在Library_DBLibrary_DB数据库中建立用于记数据库中建立用于记录图书借阅记录的表录图书借阅记录的表lend_listlend_list。该表中记。该表中记录的信息有:图书编号,借阅者编号,借录的信息有:图书编号,借阅者编号,借阅日期以及归还日期。
18、阅日期以及归还日期。字段名字段名类型型长度度主主键或外或外键允允许为空空中文中文说明明book_idbook_idnvarcharnvarchar1515PKPK、FKFK否否图书编号号borrower_idborrower_idintintPKPK、FKFK否否借借阅人人编号号lend_datelend_datedatedatePKPK否否借借书日期日期back_dateback_datedatedate还书日期日期2222CREATE TABLE Library_DB.dbo.lend_listCREATE TABLE Library_DB.dbo.lend_list(book_id nv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 基础 第五 数据 完整性
限制150内