高职数据库第三章数据完整性和索引_第1页
高职数据库第三章数据完整性和索引_第2页
高职数据库第三章数据完整性和索引_第3页
高职数据库第三章数据完整性和索引_第4页
高职数据库第三章数据完整性和索引_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL SERVER 2005 SQL SERVER 2005 案例教程案例教程一、数据完整性分类一、数据完整性分类 1、实体完整性(、实体完整性(Entity Integrity)2、域完整性(、域完整性(Domain Integrity)3、参照完整性(、参照完整性(Referential Integrity)4、用户定义的完整性(、用户定义的完整性(User-defined Integrity)二、实施数据完整性的方法二、实施数据完整性的方法 1、用定义约束实现数据完整性、用定义约束实现数据完整性通过针对表和字段定义声明的约束,将数据完整性成为数据定通过针对表和字段定义声明的约束,将数据

2、完整性成为数据定义的一部分,使用约束实现数据完整性。义的一部分,使用约束实现数据完整性。2、用编写程序实现数据完整性、用编写程序实现数据完整性可以使用存储过程或触发器实施程序化数据完整性可以使用存储过程或触发器实施程序化数据完整性 。3、选取数据完整性的实施方法、选取数据完整性的实施方法l由于约束在由于约束在SQL SERVER的可执行部分有一段代码路径的可执行部分有一段代码路径,执执行速度比其它方式快,所以应优先选用约束。行速度比其它方式快,所以应优先选用约束。l需要在多个表之间保持数据的一致性,可选择使用约束中的需要在多个表之间保持数据的一致性,可选择使用约束中的主键和外键约束;主键和外键

3、约束;l需要特别复杂的完整性检验需要特别复杂的完整性检验,则使用触发器和存储过程则使用触发器和存储过程 一、一、 主键约束(主键约束(Primary Key Constraint)1、主键约束:、主键约束:主键是能够唯一标识表中某一行的属性或属性组主键是能够唯一标识表中某一行的属性或属性组2、使用、使用SSMS创建主键创建主键 在创建表结构的时候,选定列名或列名组合在创建表结构的时候,选定列名或列名组合,再单击工具栏处的小钥匙图标再单击工具栏处的小钥匙图标 。【例【例 3.5】将】将CJGL数据库中数据库中XS表表XSDM(学生(学生代码)设置为主键代码)设置为主键3、使用、使用Transac

4、t-SQL语言创建主键语言创建主键 (1) 建立表文件的同时建立主键约束建立表文件的同时建立主键约束CREATE TABLE 表名称表名称(字段属性定义,(字段属性定义,CONSTRAINT 约束名约束名 PRIMARY KEY (列名或列名组合列名或列名组合) (2)修改表结构时添加主键约束)修改表结构时添加主键约束ALTER TABLE 表名称表名称 ADD CONSTRAINT 约束名约束名 PRIMARY KEY(列名或列名或列名组合列名组合)【例【例 3.6】 在在CJGL数据库中建立数据库中建立XS2表表,有有XSDM (学学生代码生代码),XH(学号学号),XM(姓名姓名),CS

5、RQ(出生日期出生日期)四四个字段,定义个字段,定义XSDM为主键。为主键。 【例【例 3.7】将】将CJGL数据库中已经建立结构的数据库中已经建立结构的BJ(班级班级)表中字段表中字段BJDM(班级代码班级代码)设置主键,避免不同班级设置主键,避免不同班级输入相同编号或者某个班级没有班级编号输入相同编号或者某个班级没有班级编号 【例【例 3.8】将】将CJGL数据库中已经建立的数据表数据库中已经建立的数据表CJ(成(成绩)基于字段绩)基于字段XSDM(学生代码)、(学生代码)、KCDM(课程(课程代码)代码) 和和XQDM(学期代码)三个字段组合设置主(学期代码)三个字段组合设置主键,能够唯

6、一区别出成绩值所对应学期、学生和课键,能够唯一区别出成绩值所对应学期、学生和课程信息。程信息。二、外键约束(二、外键约束(Foreign Key Constraint)1、外键约束:、外键约束:定义外键的目的是在于限制可以保存在外键所在表中的数定义外键的目的是在于限制可以保存在外键所在表中的数据。外键由一个列或多个列的组合构成,用来实现两张表据。外键由一个列或多个列的组合构成,用来实现两张表之间的数据联系,维护两个表间的一致性关系。之间的数据联系,维护两个表间的一致性关系。2、外键的作用点、外键的作用点l修改父表主键时检查修改父表主键时检查l删除父表记录时检查删除父表记录时检查l在子表中插入数

7、据时检查在子表中插入数据时检查3、创建外键约束的方法、创建外键约束的方法(1)使用)使用SSMS方式方式(2)使用)使用Transact-SQL语言方式语言方式方法一:在创建新表时创建外键约束,语法格式为:方法一:在创建新表时创建外键约束,语法格式为:CREATE TABLE 表名称表名称 ( 字段定义,字段定义, CONSTRAINT 约束名约束名 FOREIGN KEY (列名列名) REFERENCES 主表主表(列名列名) )【例【例 3.9】CJGL库中库中CJ表字段表字段XSDM(学生代码)参(学生代码)参照主表照主表XS(表(表3-13)中的主键字段)中的主键字段XSDM,将,将

8、CJ表表中中XSDM字段创建外键约束,命名为字段创建外键约束,命名为FK_CJ_学习学习_XS。三、惟一约束(三、惟一约束(Unique Constraint)1、惟一约束:、惟一约束: 在表指定的列或组列上不允许两行是具有重复值时,则需要该列或组列在表指定的列或组列上不允许两行是具有重复值时,则需要该列或组列上指定上指定UNIQUE完整性约束。在完整性约束。在UNIQUE约束定义中的列或组列称为唯一码。约束定义中的列或组列称为唯一码。2、主键与、主键与UNIQUE约束都能控制数据的唯一性,它们的区别主约束都能控制数据的唯一性,它们的区别主要为:要为:UNIQUE约束,主要用在非主键的一列或多

9、列上要求数据惟一的约束,主要用在非主键的一列或多列上要求数据惟一的情况。情况。UNIQUE约束,允许该列上存在约束,允许该列上存在NULL值,而主键决不允许出现值,而主键决不允许出现这种情况。图这种情况。图3-15 “管理索引和键管理索引和键”工具工具可在一个表上设置多个可在一个表上设置多个UNIQUE约束,而在一个表中只能设置一约束,而在一个表中只能设置一个主键约束。个主键约束。3、创建惟一约束的方法:、创建惟一约束的方法: (1)使用)使用SSMS创建惟一约束创建惟一约束 “对象资源管理器对象资源管理器”右击表名称,选择快捷菜单中的右击表名称,选择快捷菜单中的“修改修改”,进入表结构修改状

10、态。单击工具栏处进入表结构修改状态。单击工具栏处“管理索引和键管理索引和键”按钮按钮 (2)使用)使用Transact-SQL语言创建惟一约束语言创建惟一约束方法一:在创建表结构的同时创建惟一约束,语法格式为:方法一:在创建表结构的同时创建惟一约束,语法格式为: CREATE TABLE 表名称表名称 (字段定义,字段定义, CONSTRAINT 约束名约束名 UNIQUE (列名列名) ) 方法二:在已经建立结构的表定义中添加惟一约束,语法格式:方法二:在已经建立结构的表定义中添加惟一约束,语法格式:ALTER TABLE 表名称表名称ADD CONSTRAINT 约束名约束名 UNIQUE

11、 (字段名字段名)四、检查约束四、检查约束(Check Constraint)1、检查约束:、检查约束:限制输入到一列或多列中的可能值限制输入到一列或多列中的可能值,只有符合条件与格式只有符合条件与格式的数据才能被存放,它通过检查输入表列的数据的值来的数据才能被存放,它通过检查输入表列的数据的值来维护值域的完整性。维护值域的完整性。 2、创建检查约束的方法、创建检查约束的方法(1)使用)使用SSMS创建检查约束创建检查约束在在“对象资源管理器对象资源管理器”右击表名称,选择快捷菜单中的右击表名称,选择快捷菜单中的“修修改改”,进入表结构修改状态。单击工具栏处,进入表结构修改状态。单击工具栏处“

12、管理管理CHECK约束约束”按钮按钮 。(2)使用)使用Transact-SQL语言创建语言创建方法一:建立表结构同时创建检查约束,语法格式:方法一:建立表结构同时创建检查约束,语法格式:CREETE TABLE 表名称表名称(字段定义,字段定义,CONSTRAINT 约束名约束名 CHECK 逻辑表逻辑表达式达式) 方法二:表建立后增加检查约束,语法格式如下:方法二:表建立后增加检查约束,语法格式如下:ALTER TABLE 表名称表名称 ADD CONSTRAINT 约束名约束名 CHECK 逻辑表达式逻辑表达式【例【例 3.11】在】在CJGL数据库中为数据库中为XS表字段表字段XB(性

13、别)设置检查约束,要求(性别)设置检查约束,要求XB字段值只能字段值只能为为“男男”和和“女女”。ALTER TABLE XS ADD CONSTRAINT CK_XB CHECK 性别性别IN(男男,女女)五、默认值约束(五、默认值约束(Default Constraint) 1、默认值约束:、默认值约束: 可用于给列赋予一个常量值,用户在插入新的数可用于给列赋予一个常量值,用户在插入新的数据行时据行时, 系统将默认该列以常量值为指定数据。系统将默认该列以常量值为指定数据。2、创建默认值约束的方法、创建默认值约束的方法(1)使用)使用SSMS创建默认值约束创建默认值约束 在在“对象资源管理器

14、对象资源管理器”右击表名称,选择快捷菜右击表名称,选择快捷菜单中的单中的“修改修改”,进入表结构修改状态。选定设置,进入表结构修改状态。选定设置默认值的列,在列定义下方默认值的列,在列定义下方“列属性列属性”处单击处单击“默默认值或绑定认值或绑定”输入选定列的默认值。输入选定列的默认值。 (2)使用)使用Transact-SQL语言语言方法一:创建表结构的同时定义默认值约束方法一:创建表结构的同时定义默认值约束CREATE TALBE 表名称表名称(字段定义字段定义1,字段名字段名 字段类型(字段宽度)字段类型(字段宽度) DEFAULT 默认值默认值,字段定义字段定义n)方法二:在已有表中添

15、加默认值约束方法二:在已有表中添加默认值约束ALTER TABLE 表名称表名称ADD CONSTRAINT 约束名约束名 DEFAULT 默认值默认值 FOR 列名列名【例【例 3.14】在】在CJGL数据库数据库XS表中,为表中,为BZ(民族)字(民族)字段设置默认值段设置默认值“汉汉”六、约束管理六、约束管理 1、查看约束、查看约束SP_HELPCONSTRAINT 表名称表名称2、删除约束、删除约束ALTER TABLE 表名称表名称 DROP CONSTRAINT 约束名约束名一、一、 索引的作用与类型索引的作用与类型1、索引的作用、索引的作用2、索引的类型、索引的类型(1)簇索引(

16、)簇索引(CLUSTERED INDEX)簇索引又称聚集索引。簇索引在数据表中按照索引列的排簇索引又称聚集索引。簇索引在数据表中按照索引列的排序规则排列数据的物理顺序。序规则排列数据的物理顺序。 (2)非簇索引)非簇索引 (NONCLUSTERED INDEX)非簇索引是具有与表的数据完全分离的结构,它不会改变非簇索引是具有与表的数据完全分离的结构,它不会改变行的物理存储顺序,但是它是由数据行指针和一个索引值行的物理存储顺序,但是它是由数据行指针和一个索引值构成的。构成的。(3)唯一索引)唯一索引 (UNIQUE INDEX)唯唯索引可以确保所有数据行中任意两行的被索引列不包索引可以确保所有数

17、据行中任意两行的被索引列不包括括NULL在内的重复值。在内的重复值。二、创建索引二、创建索引 1、使用、使用SSMS创建索引创建索引 在在“对象资源管理器对象资源管理器”中右击创建索引的表名称,中右击创建索引的表名称,执行快捷菜单中的执行快捷菜单中的“修改修改”,进入表结构修改状态。,进入表结构修改状态。单击工具栏处的单击工具栏处的“管理索引和键管理索引和键”按钮按钮 2、使用、使用Transact-SQL语言创建索引语法格式为:语言创建索引语法格式为:CREATE INDEX 索引名索引名 ON 表名(列名)表名(列名)ASC|DESC ,.n【例【例 3.17】 在在XS表中基于表中基于XSDM创建簇索引创建簇索引IDX_XS。【例【例 3.18】在】在BJ(班级)表中基于(班级)表中基于ZYDM(专业代码)创(专业代码)创建非簇索引,名为建非簇索引,名为“属于属于1_FK”,升序排列,升序排列,如图如图3-22所所示。示。【例【例 3.19】在】在KCSZ(课程设置)表中创建唯一索引,该(课程设置)表中创建唯一索引,该索引基于索引基于XQDM(学期代码)(学期代码),KCDM(课程代(课程代码)码),ZYDM(专业代码)三个字段而创建,命名为(专业代码)三个字段而创建,命名为Index_5 。三、管理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论