《数据库原理与应用第九章课件》由会员分享,可在线阅读,更多相关《数据库原理与应用第九章课件(25页珍藏版)》请在金锄头文库上搜索。
1、第第9章章 数据表、索引与视图管理数据表、索引与视图管理l9.1 数据表的定义与操作数据表的定义与操作l9.2 约束的定义与操作约束的定义与操作l9.3 索引的定义与操作索引的定义与操作l9.4 视图的定义与操作视图的定义与操作9.1 数据表的定义与操作数据表的定义与操作表是包含数据库中所有数据的数据库对象,数据在表中的组织方式与在电子表格中相似,都是按行和列的格式组织的,每一行代表一条惟一的记录,每一列代表记录中的一个属性或字段,每一列与每一行的交叉点上的取值称为该记录在该属性或字段下的投影,为了区分不同的记录需要保证每个记录中至少有一个属性的取值是惟一的,在决定创建数据表之前,应从以下几个
2、方面进行规划:l(1)各字段数据类型的选择l(2)各字段长度的选择l(3)字段个数的选择l9.1.19.1.1 创建数据表创建数据表创建数据表有两种方法:使用命令创建数据表和使用SQLServer2005管理平台创建数据表。l1使用命令创建数据表使用命令创建数据表创建数据表的语法形式如下:CREATETABLEdatabase_name.schema_name.|schema_name.table_name(,.n):=column_nameNULL|NOTNULL.n:=type_schema_name.type_name(precision,scale|max)collatecollati
3、on_name9.1 数据表的定义与操作数据表的定义与操作l【例】创建一个学生信息表,它包括学生的学号、姓名和身份证号。SQL语句的程序如下:CREATETABLEStudent(numberchar(11)notnull,namechar(8)notnull,idvarchar(18)l2.使用使用SQL Server 2005管理平台创建数据表管理平台创建数据表在SQLServer2005管理平台中,展开指定的服务器和数据库,打开想要创建数据表的数据库,右击“表”,在弹出的快捷菜单中选择“新建表”命令,在打开的新建数据表窗口中可定义列名、数据类型以及是否为空等信息,定义完成后保存即完成数据
4、表的创建。9.1 数据表的定义与操作数据表的定义与操作l9.1.29.1.2 修改数据表修改数据表当数据库中的表创建完成后,可以根据需要改变表中原先定义的许多选项,以更改表的结构,同时可以增加、删除和修改列,增加、删除和修改约束等。l(1)修改列属性l(2)添加和删除列9.1 数据表的定义与操作数据表的定义与操作使用命令修改数据表,修改数据表的语法形式如下:ALTERTABLEdatabase_name.schema_name.|schema_name.table_nameALTERCOLUMNcolumn_nametype_schema_name.type_name(precision,sc
5、ale|max)NULL|NOTNULL|ADD|DROP|WITHCHECK|NOCHECKADD|,.n9.1 数据表的定义与操作数据表的定义与操作l9.1.39.1.3 删除数据表删除数据表删除数据表可以采用命令和管理平台两种方式删除表。这里主要介绍使用管理平台删除数据表。在SQLServer2005管理平台中,展开指定的数据库和数据表,右击要删除的数据表,从弹出的快捷菜单中选择“删除”命令,将打开“删除对象”窗口,单击“确定”按钮即删除数据表。单击“关系依赖图”按钮,可显示所有该表依赖的对象以及依赖该对象的对象,当有对象依赖该表时,想删除该表就必须先删除依赖该表的其他表,否则该表不能被
6、删除。9.1 数据表的定义与操作数据表的定义与操作9.2 约束的定义与操作约束的定义与操作约束是SQLServer提供的自动保持数据完整性的一种方法,通过设定约束可以将一部分需要用户编程实现的控制功能交给数据库管理系统自动来执行,从而可以减轻开发者的工作量。在SQLServer中,对于数据表的约束分为列约束和表约束两种方式,其中列约束指定为列定义的一部分,并且只应用于该列,表约束的声明与列定义无关,可以应用于表中多个列,当一个约束中必须包含多个列时,必须使用表约束,对创建完毕后的约束可以进行修改和删除。l9.2.1 创建约束创建约束在SQLServer2005中有6种约束:主键约束(Prima
7、rykeyconstraint)、唯一性约束(Uniqueconstraint)、外键约束(Foreignkeyconstraint)、检查约束(Checkconstraint)、默认约束(Defaultconstraint)和空值(Null)约束。9.2 约束的定义与操作约束的定义与操作l1.主键约束主键约束表通常具有包含惟一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键(PK)用于强制表的实体完整性。在创建或修改表时,可以通过定义PRIMARYKEY约束来创建主键约束。一个表只能有一个主键约束,并且主键约束中的列不能接受空值。由于主键约束可保证数据的惟一性,因此经常对标识列
8、定义这种约束。主键的创建方法通常有两种,SQL语句和SQLServer管理平台。l【例】在创建Student数据表时指定学生的学号为主键值,并且创建一个聚集索引,增加主键后,就假定了该记录中不能存在学号相同的学生的记录,从而保证了表中数据信息的惟一性,即每一条记录只代表一个学生。SQL语句的程序如下:CREATETABLEStudent(numberchar(11)notnull,namechar(8)notnull,idvarchar(18),constraintpk_numberprimarykeyclustered(number)9.2 约束的定义与操作约束的定义与操作l2.唯一性约束唯
9、一性约束唯一性创建的方法通常有两种:SQL语句和SQLServer管理平台,这里介绍使用SQLServer管理平台的方法。在SQLServer2005管理平台中,展开指定的数据表和数据库,右击要操作的数据表,从弹出的快捷菜单中选择“修改”命令,打开修改数据表界面,在要设置唯一性的属性上右击,从弹出的快捷菜单中选择“索引/键”命令,打开“索引/键”对话框,单击“添加”按钮后对话框将出现新的索引/键名称,用户可以修改该索引/键的名称并设置“是唯一的”为“是”,完成唯一约束的设置。9.2 约束的定义与操作约束的定义与操作l3.外键约束外键约束外键是建立不同数据表的属性间相互连接或参考的一条途径,用于
10、强制参照完整性。定义时,该约束参考同一个表或者另外一个或者多个表中主键约束字段或者惟一性约束字段进行取值,当对定义外键的属性值进行操作时,必须保证该取值为参考表中的某一个取值或者为空值,否则将产生错误,从而确保了实体的参照完整性。外键约束的创建方法通常有两种,SQL语句和SQLServer管理平台。9.2 约束的定义与操作约束的定义与操作l4.检查约束检查约束通过限制列可接受的值,检查约束可以强制域的完整性。此类约束类似于外键约束,因为可以控制放入列中的值。但是,它们在确定有效值的方式上有所不同:外键约束从其他表获得有效值列表,而检查约束通过不基于其他列中的数据的逻辑表达式确定有效值。例如,可
11、以通过创建检查约束将score列中值的范围限制为从0到100之间的数据。这将防止输入的分数值超出正常的分数范围。9.2 约束的定义与操作约束的定义与操作可以通过任何基于逻辑运算符返回TRUE或FALSE的逻辑(布尔)表达式创建检查约束。对于上面的示例,逻辑表达式为score=0ANDscore=100。可以将多个检查约束应用于单个列。还可以通过在表级创建检查约束,将一个检查约束应用于多个列。检查约束的创建方法通常有两种,SQL语句和SQLServer管理平台。9.2 约束的定义与操作约束的定义与操作l使用命令创建检查约束CREATETABLEdatabase_name.schema_name.
12、|schema_name.table_name(,.n):=column_nameNULL|NOTNULL.n:=CONSTRAINTconstraint_nameCHECKNOTFORREPLICATION(logical_expression)9.2 约束的定义与操作约束的定义与操作l【例】创建学生成绩表Grade,其中输入学生成绩时只能接受0到100之间的数据,而不能随意输入其他数据。lSQL语句的程序如下:CREATETABLEGrade(tnumberchar(11)notnull,C#char(8)notnull,numbernchar(15),scorenumeric(3),co
13、nstraintnumber_foreforeignkey(number)referencesStudent(number),constraintchk_scorecheck(score=0andscore=100),)9.2 约束的定义与操作约束的定义与操作l5.默认约束和空值约束默认约束和空值约束记录中的每列均必须有值,即使该值是NULL。可能会有这种情况:必须向表中加载一行数据但不知道某一列的值,或该值尚不存在。如果列允许空值,就可以为行加载空值。由于可能不希望有可能为空的列,因此最好是为列定义DEFAULT定义(如果合适)。例如,通常为数值列指定零作为默认值,为字符串列指定N/A作为默
14、认值。列的为空性决定表中的行是否可为该列包含空值。空值(或NULL)不同于零(0)、空白或长度为零的字符串(如)。NULL的意思是没有输入,出现NULL通常表示值未知或未定义。9.2 约束的定义与操作约束的定义与操作l9.2.2 操作约束操作约束约束的操作主要包括增加、修改和删除约束,其方法通常有两种,SQL语句和SQL管理平台。下面介绍使用SQL管理平台的方法。在SQLServer2005管理平台中,展开指定的数据表和数据库,右击要操作的数据表,从弹出的快捷菜单中选择“修改”命令,打开修改数据表界面,在要修改约束的属性上右击,从弹出的快捷菜单中选择合适的约束命令,然后按照创建各约束的步骤在对
15、创建的约束进行增加、修改或删除即可。9.2 约束的定义与操作约束的定义与操作索引是与表或视图关联的磁盘上的结构,可以加快从表或视图中检索行的速度,索引包含由表或视图中的一列或多列生成的键,这些键存储在一个B树结构中,使SQLServer可以快速有效地查找与键值关联的行,表或视图可以包含以下类型的索引:l(1)聚集索引l(2)非聚集索引l9.3.19.3.1 创建索引创建索引SQLServer2005提供了两种创建索引的方法:使用SQL命令创建索引和使用SQL管理平台创建索引。下面介绍使用SQL管理平台创建索引的方法。9.3 索引的定义与操作索引的定义与操作l【例】为学生成绩表Grade创建一个
16、唯一聚集索引。SQL语句的程序如下:CREATEUNIQUECLUSTEREDINDEXtnumber_indONGrade(tnumber)l使用使用SQL管理平台创建索引方法如下:管理平台创建索引方法如下:在SQLServer2005管理平台中,展开指定的数据表和数据库,右击要操作的数据表,从弹出的快捷菜单中选择“新建索引”命令,打开“新建索引”界面,在“常规”选项卡中输入索引名称,选择索引类型以及是否是唯一索引等内容来建立索引。9.3 索引的定义与操作索引的定义与操作9.3 索引的定义与操作索引的定义与操作l9.3.29.3.2 修改和删除索引修改和删除索引在SQLServer2005管
17、理平台中,展开指定的数据表和数据库,再站来索引文件夹,右击已建立的索引项,从弹出的快捷菜单中选择“属性”命令,打开“索引属性”界面,选择“常规”选项,在该选项中可以修改索引名称、索引类型以及是否是唯一索引等内容,也可以单击“删除”按钮删除索引。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多
18、个异类源数据的视图。通过建立视图可以简化数据操作以及提高系统的安全性。9.4 视图的定义与操作视图的定义与操作l9.4.1 创建视图创建视图创建视图的准则:l(1)只能在当前数据库中创建视图。l(2)视图名称必须遵循标识符命名规则,且对每个架构都唯一。l(3)定义视图的查询不能包含COMPUTE子句lCOMPUTEBY子句和INTO关键字。、l(4)定义视图的查询不能包含ORDERBY子句,除非在SELECT语句的选择列表中还有一个TOP子句。l(5)不能创建临时视图,也不能对临时表创建视图。l2.使用使用SQL管理平台创建视图管理平台创建视图在SQLServer2005管理平台中,展开指定的
19、数据库,右击“视图”文件夹,从弹出的快捷菜单中选择“新建视图”命令,打开“添加表”对话框,单击“添加”按钮,添加用于建立视图的表,最后单击“关闭”按钮即可。9.4 视图的定义与操作视图的定义与操作l9.4.2 修改和删除视图修改和删除视图在SQLServer2005管理平台中,展开指定的数据库和视图文件夹,右击需要修改或删除的视图,从弹出的快捷菜单中选择相应的选项,即可完成对视图的修改和删除操作。9.4 视图的定义与操作视图的定义与操作本章主要介绍了如何利用SQLServer2005管理系统提供的命令方式和管理平台方式实现数据表的创建、修改和删除操作,从而为信息系统的开发提供数据存储机制;为了保证存储在数据表中的数据的实体完整性约束、参照完整性约束和用户自定义的完整性约束,本章还讲解了如何创建、修改和删除不同类型的约束;为了提高系统查询的效率和提高系统的简洁性以及安全性,本章最后讲解了索引和视图的创建、修改和删除操作,有关数据表、视图的查询、修改和删除操作留给读者自己上机实习。本本 章章 小小 结结