SQL Server 数据库基础及应用-6_第1页
SQL Server 数据库基础及应用-6_第2页
SQL Server 数据库基础及应用-6_第3页
SQL Server 数据库基础及应用-6_第4页
SQL Server 数据库基础及应用-6_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

6.1索引索引是关系型数据库的基本概念。数据库中的索引类似于书的目录,书的内容类似于表的数据。书的目录通过页码指向书的内容,同样,索引中也记录了表中的关键值,同时提供了指向表中行记录的存储地址。书的目录使读者可以很快找到想看的内容,而不必翻遍书中的每一页。在数据库中,索引能够使数据库程序不用浏览整个表,就可以找到表中的数据。下一页返回6.1索引数据库中的表并不是都必须创建索引,但通过对访问频繁的表创建索引可以提高数据的访问速度,改善系统性能。如果没有在相应的列上创建索引,则在以该列为条件查询时,数据库会按照表中行的存储顺序一行一行的进行查找。如果创建了索引,则首先搜索这个索引,在索引中找到符合条件的值,再到表中去找到对应的行,这样就很快。使用索引存储地址将占用磁盘空间,在执行数据的插入、修改和删除操作时,为了自动维护索引,SQLServer将花费一定的时间,因此要合理设计索引。上一页下一页返回6.1索引6.1.1索引的分类按照索引的组织方式的不同,即从索引表的物理顺序与表中数据行的物理存储顺序是否相同的角度出发,可以将索引分为聚集索引和非聚集索引。1聚集索引创建聚集索引后,表中数据行的物理存储顺序与索引顺序完全相同,即索引的顺序决定了表中行的存储顺序,所以每个表只能有一个聚集索引。由于聚集索引会改变表中数据行的存储顺序,故最好在其他非聚集索引建立前建立聚集索引,以免因物理顺序的改变而重新构造非聚集索引。上一页下一页返回6.1索引聚集索引适合建立在表中保存有连续值的列上,因为当使用聚集索引快速找到一个值时,其他连续的值自然就在附近。默认情况下,如果表中没有创建其他索引,则在表的主键列上自动建立聚集索引。公非聚集索引非聚集索引不改变表中数据行的物理存储顺序,数据与索引分开存储。在非聚集索引中仅仅记录索引值和指向数据行的指针。非聚集索引作为与表分离的对象独立存在,可以为表中每一个常用于查询的列定义非聚集索引。为一个表建立索引时默认都是非聚集索引,在一列上设置唯一性约束时也自动在该列上创建非聚集索引。上一页下一页返回6.1索引3.聚集索引和非聚集索引的特性聚集和非聚集索引都可创建为唯一索引或组合索引。(1)唯一索引创建唯一索引,SQLServer确保被索引列不存在重复性(包括空值NULL),若表中已有数据,则在索引第一次创建时需检查索引的唯一性,而非唯一索引没有这一限制。在创建主键约束和唯一性约束的列时,SQLServer会自动为这些列创建唯一索引。上一页下一页返回6.1索引(2)组合索引组合索引是根据表中两列或多列组合建立的索引。单列索引是指依据表中单个列建立的索引,相对多个单列索引来说,建立组合索引是很好的选择,原因如下:1)处理数据时,组合索引比多个单列索引的开销要低。2)使用组合索引比使用多个单列索引用到的索引数量要少。3)使用组合索引对数据操纵造成的影响要小于使用多个单列索引。上一页下一页返回6.1索引6.1.2创建索引1.使用MicrosoftSQLServerManagementStudio创建索引【例6-1J在student表中创建基于“姓名”列的非聚集索引au_nameo操作步骤如下:1)启动MicrosoftSQLServerManagementStudioI具,在“对象资源管理器”中,展开数据库实例。2)展开要在其上创建索引的表(如student表),在“索引”项上右击,在快捷菜单中指向“新建索引”菜单项,在“新建索引”菜单项的下级菜单中选择“非聚集索引……”命令,如图6一1所示。上一页下一页返回6.1索引3)弹出“新建索引”对话框,如图6一2所示。“索引名称”文本框,用于输入索引的名称。“索引类型”列表框显示当前设置的是“非聚集”索引类型,“唯一”复选框用于设置是否为唯一索引,若设置为“唯一”,则不允许两行具有相同的索引值,如果表中具有相同的两个索引值,那么在修改现有索引时,索引的创建将会失败。一旦创建了唯一索引,数据库引擎就会在每次插入操作添加数据时检查是否存在重复值。此处输入索引名称为“au_name",不选择“唯一”复选框。4)单击“添加(A)...”按钮,弹出图6-3所示的对话框,选择要在其上创建索引的列。上一页下一页返回6.1索引5)单击“确定”按钮,回到“新建索引”对话框,可以看到刚才选择的索引键列。“新建索引”对话框中的“排序顺序”选项用于设置索引的排列顺序,共有升序和降序两种,一般默认为升序,如图6一4所示。6)单击“确定”按钮,即完成了索引的创建过程。2.使用Transact-SQL语句创建索引CREATEINDEX语句的功能是创建索引,主要语法格式如下CREATE[UNIQUE〕[CLUSTEREDNONCLUSTERED]INDEX索引名ON{表名或视图名}(列名【ASCIDESC]上一页下一页返回6.1索引【例6-2」为“Course”表创建基于“C_name”列的唯一非聚集索引.在“新建查询”中,输入代码,并单击“执行”按钮。代码如下:createuniqueindexaucnameonCourse(Cname)执行结果如图6-5所示。上一页下一页返回6.1索引1.使用MicrosoftSQLServerManagementStudio查看索引在MicrosoftSQLServerManagementStudio中,通过“索引属性”对话框,可以查看或修改所选择的表或视图的索引属性。[例6一3]查看Stucfnet表的au_name索引。操作步骤如下:1)启动MicrosoftSQLServerManagementStudioI具,在“对象资源管理器”中,展开数据库实例。2)展开索引所基于的表或视图,再展开“索引”项,在要查看或修改属性的索引名上右击,在快捷菜单中选择“属性”命令(这里选择stucfnet表的au_name索引),如图6-6所示。上一页下一页返回6.1索引3)弹出“索引属性”对话框,其类似于新建索引对话框,如图6-7所示。在对话框中,可以查看索引名称、索引类型、索引的唯一性、索引键列(包括列名、排序顺序、数据类型、大小、是否为标识列、是否允许空值)等属性。2.使用sp_helpindex查看索引【例6-4」使用系统存储过程sp_helpindex查看Student表上的索引信息。代码如下:sphelpindexstudent执行结果如图6-8所示。执行结果中给出了student表上索引的名称、描述和索引键列等信息。上一页下一页返回6.1索引6.1.4索引的删除当一个索引不再被需要时,可以将其从数据库中删除,以回收它当前使用的存储空间,从而便于数据库中的对象使用此存储空间。通过设置PRIMARYKEY或UNIQUE约束所建立的索引不允许用户直接删除,只能通过删除约束或删除表的方法进行删除。1.使用MicrosoftSQLScrvcrManagementStudio删除索弓I上一页下一页返回6.1索引[例6-5]删除Course表的au一cname操作步骤如下:1)在MicrosoftSQLServerManagementStudio中展开在其上创建了索引的表(这里选择Course,再展开“索引”,右击要删除的索引auCname,选择快捷菜单中的“删除”命令,如图6-9所示。2)在弹出的“删除对象”对话框中,单击“确定”按钮,即可完成索引的删除操作,如图6一10所示。上一页下一页返回6.1索引2.使用Transact-SQL语句删除索引DROPINDEX语句的功能是从数据库中删除指定的索引。语法格式如下:DROPINDEXtableorviewname.indexname其中,table_or_view_name是索引列所在的表或视图名。index_name是索引名。(例6-6)删除“Student'表中的索引au_name.代码如下:dropindexStudent执行结果如图6一11所示。上一页返回6.2视图视图是基于某查询结果的虚拟表,其内容由查询定义。同实际的表相同,每个视图包含一系列带有名称的列和行数据。视图中并不存储数据,视图中的记录实际上是对表格内存储数据的引用。这些引用是通过创建视图时,定义视图的查询语句来实现的。6.2.1视图的概念视图是从一个或多个相关联表或视图中派生出来的,组合了一个或多个表中的数据,使用户能够着重于他们感兴趣的特定数据和所负责的特定任务,不必要的数据或敏感数据可以不出现在视图中。下一页返回6.2视图视图像是一个过滤器,对一个或多个基表中的数据进行筛选和引用。我们可以利用视图使数据暂时从数据库中分离,成为游离数据,以便在主系统之外收集和修改数据。视图有以下优点:1着重于特定数据视图使用户能够着重于他们所感兴趣的特定数据和所负责的特定任务。不必要的数据或敏感数据可以不出现在视图中。例如,若只关心“student”的姓名、班级和性别,则可创建“学生信息视图”,在视图中只出现姓名、班级和性别三列数据。上一页下一页返回6.2视图2.简化数据操作视图可以简化用户处理数据的方式。可以将常用链接、投影、UNIQUE查询和SELECT建立视图。这样,用户不必在每次对数据执行附加操作时,指定所有条件下的条件限定。例如,可以将一个复杂的查询定义为视图,以后再需要数据时,不必每次编写复杂的查询语句,只要查询视图就可以了。上一页下一页返回6.2试图3自定义数据视图允许用户以不同的方式查看数据,即使在他们同时使用相同的数据时也是如此,例如可定义一个视图,只检索系别为“计科系”的学生数据。4导人和导出数据可使用视图将数据导出到其他应用程序,或将数据从数据文件导入某些视图。5跨服务区组合分区数据将单独表的两个或多个查询结果组合到单一的结果集中,这在用户看来是一个单独的表,称为分区视图。上一页下一页返回6.2视图6.2.2创建视图使用MicrosoftSQLServerManagementStudio创建视图【例6-7]创建信息管理11一1班学生信息视图(包括姓名、班级和性别三列数据)。操作步骤如下:1)在“对象资源管理器”中,展开“xscj”数据库,右击该数据库下的视图节点,然后从快捷菜单中选择“新建视图(N)...,如图6一12所示。上一页下一页返回6.2视图2)在“添加表”对话框中,选择相应的表或视图(这里选择读者),单击“添加”按钮就可以添加创建视图的基表,重复此操作,可以添加多个基表(此处只添加一个基表Student表)(图6一13)。添加完成后,单击“关闭”按钮。3)添加基表后(图6一14),在第一个窗格中就可以看到新添加的基表—student表,在基表每一列的左边有一个复选框,选择相应的复选框,可以指定对应的列在第2个条件窗格中出现,以便设置在视图中被引用(这里选择S_name,S_class和Ssex)。上一页下一页返回6.2视图4)图6-14所示的第2个窗格是条件窗格,可以在它当中指定查询条件和输出情况。其中,“筛选器”列用于输入在视图中出现的筛选条件。例如,在S_class行对应的筛选器栏输入“=‘信息管理11一1"',即在创建的视图中只包括班级为信息管理11一1的读者信息。输出栏用于指定视图中引用的列(这里选择S_name,S_class和S_sex,即在视图中只包括姓名、班级和性别三列数据),排序类型列用于指定排序类型为升序或降序。排序顺序列用于指定排序的顺序,相当于查询语句中的Orderby子句。上一页下一页返回6.2视图5)在第1和第2个窗格中进行相应的设置后,会在第3个窗格中自动生成对应的Transact-SQL语句。用户也可以自己修改该Transact-SQL语句。6)单击I具栏中的]t按钮,或者选择“查询设计器”菜单中的“执行SQL”命令,可以执行并输出视图的结果。在窗口最下面的输出窗格中会显示执行命令后生成的视图虚拟表数据,如图6一15所示。7)单击I具栏的保存按钮,或者选择“文件”菜单中的保存视图命令,保存创建的视图,并命名为View_1。上一页下一页返回6.2视图2.使用Transact-SQL语句创建视图CREATEVIEW语句的功能是创建视图,主要语法格式如下CREATEVIEW【schemaname]viewnamecolumnWItH<viewattributeASselectstatement[WITHCHECKOPTION]n])]上一页下一页返回6.2视图如果视图定义没有加密,则可获得该视图定义的有关信息。查询视图就是查看视图定义,以了解数据从源表中的提取方式,或查看视图定义的数据。1.获取关于视图的信息1)使用MicrosoftSQLServerManagementStudio查看视图信息。【例6-12」查询xscj数据库中的V1视图。操作步骤如下:

上一页下一页返回6.2视图在MicrosoftSQLServerManagementStudio中,右击相应的视图名(这里选V1),在弹出的快捷菜单中,选择“属性”,如图6-20所示。在弹出的“视图属性”对话框中可以查看视图的属性,包括视图的创建时间、视图名称、架构名称等,如图6-21所示。2)使用sp_help查看视图信息。使用系统存储过程sp_help,可以查看视图的创建时间、视图名称、架构名称等基本信息,还可以查看视图中列的名称、数据类型、精度等详细信息。上一页下一页返回6.2视图【例6-13]使用存储过程sp_help查询xscj数据库中的V1视图。代码如下:sphelpV1执行结果如图6-22所示。3)使用sp_helptext查看视图定义信息。使用系统存储过程s}helptext,可以查看视图的定义语句。【例6-14]使用存储过程sp_helptext查询xscj数据库中的V1视图定义语句。代码如下:sphelptextV1执行结果如图6-23所示。上一页下一页返回6.2视图公查看由视图定义的数据利用select命令从数据库上检索列,以查看由视图定义的数据,方法和使用基表一样。【例6-15]查看xscj数据库中的V3视图定义的所有数据执行结果如图6-24所示。6.2.4重命名视图

视图定义之后,可以重新命名.通过MicrosoftSQLServerManagementStudio或存储过程都可以重命名视图。1.使用MicrosoftSQLServerManagementStudio重命名视图【例6一16}重命名视图V1为new_V1。操作步骤如下:上一页下一页返回6.2视图在MicrosoftSQLServerManagementStucfi。中,右击视图名V1,在弹出的快捷菜单中,选择“重命名”,如图6-25所示,然后在视图名称框里输入新的视图名“new_V1".2利用sp_rename重命名视图系统存储过程s}rename用于重命名当前数据库中用户自定义的对象,如视图、表、存储过程、触发器、索引等。系统数据类型和系统对象是不可以重命名的。执行结果如图6-26所示。上一页下一页返回6.2视图对于已经存在的视图,可以修改视图的定义和属性。1使用MicrosoftSQLServerManagementStudio修改视图【例6-18}将视图new_V1的内容修改为查询课程号、课程名和课程性质。操作步骤如下:1)在MicrosoftSQLServerManagementStudio中,右击相应的视图名new_V1,在弹出的快捷菜单中,选择“设计”,如图6一27所示。上一页下一页返回6.2视图2)在弹出的设计视图窗格中修改视图的定义,同创建视图时类似,在第1个窗格中可以对视图引用的基表进行指定,在第2个窗格中可以修改查询条件,在第3个窗格中对视图定义进行修改,如图6一28所示。3)视图修改完毕后,单击“保存”按钮,或者选择“文件”菜单中的“保存视图”进行保存。2使用Transact-SQL语句修改视图上一页下一页返回6.2视图例6一19将视图V4的内容修改为查询课程名为“网页设计与制作”的课程号、开课学期和学分信息。代码如下:alterviewasselectcid,cname;cscorefromcoursewherecname一’网页设计与制作执行结果如图6-29所示。上一页下一页返回6.2视图6.2.6删除视图对不再需要的视图,可以进行删除。删除视图后,表和视图所基于的数据并不受影响。任何使用基于已删除视图对象的查询都将失败,除非创建了一个同样名称的视图,且该视图中包含与之相关的对象所需要的列。1使用MicrosoftSQLServerManagementStudio删除视图[例6-20]删除视图V3.操作步骤如下:1)在

温馨提示

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

评论

0/150

提交评论