SQLServer数据库应用项目教程学习情景_第1页
SQLServer数据库应用项目教程学习情景_第2页
SQLServer数据库应用项目教程学习情景_第3页
SQLServer数据库应用项目教程学习情景_第4页
SQLServer数据库应用项目教程学习情景_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

学习情景5:数据库其它对象

的创建与管理单元描述数据库和数据表创建完毕,并不表示数据库的设计就结束了,用户往往会对数据库有一些特殊的要求,比如:数据库是否具备数据完整性关系?如何提高数据的检索速度?当需要频繁执行某一特殊任务时,如何避免重复编写程序代码?在SQLServer2005中提供了一系列数据库对象来解决类似以上的问题。本学习情景将重点介绍在SCDB数据库中创建和管理这些数据库对象(约束、索引、视图、存储过程、触发器等)来解决实际问题的过程。学习目标学会数据完整性的设计;学会索引的创建与管理;学会视图的创建与管理;学会存储过程的创建与管理;学会触发器的创建与管理;学会游标的创建与使用;了解游标的使用方法。项目1:SCDB中数据完整性的设计【任务描述】数据库中的数据是从外界输入的,而数据的输入由于种种原因,会输入无效或错误的信息。那么保证数据正确性、一致性和可靠性,就成了数据库系统关注的重要问题。SQLServer提供了数据完整性的设计来解决以上问题,具体可以通过创建约束、默认、规则、用户自定义函数来解决。项目1:SCDB中数据完整性的设计【任务目标】了解数据完整性的基本概念;掌握创建和使用约束来保证数据的完整性;掌握创建、绑定、解绑定和删除默认值的方法;掌握创建、绑定、解绑定和删除规则的方法;掌握创建、绑定、使用和删除用户自定义完整性的方法。任务1了解数据完整性的基础知识数据的完整性是指存储在数据库中数据的正确性、一致性和可靠性。根据数据的完整性所作用的数据库对象和范围的不同,数据的完整性分为实体完整性、域完整性、参照完整性和用户定义完整性4种。任务1了解数据完整性的基础知识1、实体完整性实体完整性也可称表的完整性。它用于保证数据库中数据表的每一个特定实体都是唯一的,可以通过主键约束(PRIMARYKEY)、唯一键约束(UNIQUE)、索引或标识属性(IDENTITY)来实现。任务1了解数据完整性的基础知识2、域完整性域完整性也可称列完整性,用以指定列的数据输入是否具有正确的数据类型、格式以及有效的数据范围。任务1了解数据完整性的基础知识3、参照完整性参照完整性是保证参照与被参照表中数据的一致性。例如,在学生表Student中有学生的学号StudentID且在选课表SC中也有学号StudentID,而且两个表的学号StudentID值必须一致,如果在输入过程中出现错误且又没有被系统检查出来,那么数据之间将会造成混乱。任务1了解数据完整性的基础知识4、用户定义完整性用户定义完整性允许用户定义不属于其他任何完整性分类的特定规则。所有的完整性类型都支持用户定义完整性。用户定义的完整性主要通过使用触发器和存储过程来强制实施完整性。存储过程和触发器的相关知识在后续任务中介绍。任务务2:约束束的的实实现现1.约束束的的类类型型约束束是是SQLServer强制制实实行行的的应应用用规规则则,,它它通通过过限限制制列列、、行行和和表表中中的的数数据据来来保保证证数数据据的的完完整整性性。。当当删删除除表表时时,,表表所所带带的的约约束束也也随随之之被被删删除除。。常用的约束包包括CHECK约束、PRIMARYKEY约束、FOREIGNKEY约束、UNIQUE约束和DEFAULT约束。任务2:约束的实现(1)CHECK约束CHECK约束用于限制制输入一列或或多列的值的的范围,通过过逻辑表达式式来判断数据据的有效性,,也就是一个个列的输入内内容必须满足足CHECK约束的条件,,否则,数据据无法正常输输入,从而强强制数据的域域完整性。任务2:约束的实现(2)DEFAULT约束若在表中某列列定义了DEFAULT约束,用户在在插入新的数数据行时,如如果该列没有有指定数据,,那么系统将将默认值赋给给该列,当然然该默认值也也可以是空值值(NULL)。任务2:约束的实现(3)PRIMARYKEY约束在表中经常有有一列或多列列的组合,其其值能唯一标标识表中的每每一行。这样样的一列或多多列成为表的的主键(PrimaryKey),通过它可以以强制表的实实体完整性。。一个表只能能有一个主键键,而且主键键约束中的列列不能为空值值。任务2:约束的实现(4)FOREIGNKEY约束外健(ForeignKey)是用于建立和和加强两个表表(主表与从表)的一列或多列列数据之间的的连接,当添添加、修改或或删除数据时时,通过参照照完整性来保保证它们之间间的数据的一一致性。任务2:约束的实现(5)UNIQUE约束UNIQUE约束用于确保保表中的两个个数据行在非非主键中没有有相同的列值值。与PRIMARYKEY'约束类似,UNIQUE约束也强制唯唯一性,为表表中的一列或或多列提供实实体完整性。。但UNIQUE约束用于非主主健的一列或或多列组合,,且一个表可可以定义多个个UNIQUE约束。另外,,UNIQUE约束可以用于于定义多列组组合,且一个个表可以定义义多个UNIQUE约束,UNIQUE约束可以用于于定义允许空空值的列;而而PRIMAYRKEY约束只能用在在唯一列上,,且不能为空空值。任务2:约束的实现2.约束的创建、、查看与删除除约束的创建、、查看与删除除等操作均可可在SQLServerManagementStudio的【对象象资资源源管管理理器器】面板板中中进进行行,,也也可可使使用用Transact-SQL语句句进进行行。。任务务2:约束束的的实实现现(1)CHECK约束束的的创创建建、、查查看看和和删删除除【例】在学学生生表表(Student)中定定义义学学生生的的性性别别Sex列只只能能是是““男男””或或““女女””,,从从而而避避免免用用户户输输入入其其他他的的值值。。要要解解决决此此问问题题,,需需要要用用到到CHECK约束束,,使使学学生生性性别别列列的的值值只只有有““男男””或或““女女””两两种种可可能能,,如如果果用用户户输输入入其其他他值值,,系系统统均均提提示示用用户户输输入入无无效效。。任务务2:约束束的的实实现现①在在SQLServerManagementStudio的【对象象资资源源管管理理器器】中选选取取【数据据库库】选项项下下的的SCDB数据据库库。。②展开数据库库SCDB,并展开数据据库SCDB目录下的【表】,右击“dbo.Student”选项,在在弹出的快快捷菜单中中,选择【设计(G)】命令,打开开【设计表】窗口,选中中“Sex”,然后,,单击【菜单栏】中的【表设计器】窗口工具栏栏上的【CHECK约束】命令,如图所示;或者将鼠鼠标放在列列“Sex”上,右击击鼠标,在在弹出的快快捷菜单中中,选择【CHECK约束】命令,如图所示。任务2:约束的实现现③在弹出的的【CHECK约束】窗口中单击击【添加】按钮,如图所示。④单击“表表达式”后后面的按钮,,进入入如图所所示的CHECK约束表表达式式的界界面,,在““表达达式””文本本框中中输入入约束束表达达式““Sex='男'ORSex='女',如图所所示。然后后,单单击““确定定”按按钮。。任务2:约束的的实现现⑤在【设计表表】窗口单单击(【保存】),即即完成成了创创建并并保存存CHECK约束的的操作作。以以后用用户输输入数数据时时,若若输入入性别别不是是“男男”或或“女女”,,系统统将报报告输输入无无效。。要想删删除上上面创创建的的CHECK约束,,选择择该约约束,,右击击鼠标标,在在弹出出的菜菜单中中选择择【删除】命令,,如图所所示,然后后单击击“关关闭””按钮钮,即即可删删除CHECK约束。。任务2:约束的的实现现【例】使用Transact-SQL语句为为学生生表Student创建CHECK约束。。在SQLServerManagementStudio查询编编辑器器中运运行以以下代代码::USESCDBGOALTERTABLEStudentADDCONSTRAINTCK_StudentCHECK(sex='男'orsex='女')GO任务2:约束的的实现现删除CHECK约束的语语句格式式如下::DROPCONSTRAINTCHECKconstraint_name【例】删除创建建的约束束CK_Student。USESCDBGOALTERTABLEStudentDROPCONSTRAINTCK_StudentGO任务3:默认值值的实现现1.默认值的的概念与在约束束中介绍绍的DEFAULT约束类似似,使用用默认值值也可以以实现当当用户在在向数据据库表中中插入新新纪录时时,如果果没有给给出某列列的输入入值,则则有系统统自动为为该列输输入默认认值的功功能。默认值可可以是常常量、内内置函数数或数学学表达式式。任务3:默认值值的实现现2.创建默认认值通常创建建并使用用默认值值的步骤骤为:①创建一个个默认值对对象。创建默认的的命令如下下:CREATEDEFAULTdefault_nameASconstraint_expression任务3:默认值的的实现②将其捆绑绑到列或用用户自定义义数据类型型上。绑定默认值值的命令如如下:EXECsp_bindefaultdefault_name,'table_name.[column_name]'任务3:默认值的的实现3.删除默认值值通常删除默默认值的步步骤为:①解除默认认值捆绑的的列或用户户自定义数数据类型。。解除绑定默默认值的命命令如下::EXECsp_unbindefault'table_name.column_name'②删除该默默认值。具体的命令令语句如下下:DROPDEFAULTdefault_name任务务4:规规则则的的实实现现1.规则则的的概概念念规则则也也是是实实现现数数据据完完整整性性的的方方法法之之一一,,其其作作用用与与CHECK约束束的的部部分分功功能能相相同同。。规规则则可可以以被被绑绑定定到到一一个个列列或或者者用用户户定定义义数数据据类类型型上上,,它它提提供供了了一一种种加加强强列列或或用用户户定定义义数数据据类类型型域域约约束束的的机机制制。。当当其其被被绑绑定定到到列列或或用用户户定定义义的的数数据据类类型型上上时时,,用用来来指指定定允允许许输输入入到到列列中中的的数数据据,,即即当当用用户户向向表表中中插插入入数数据据时时,,用用来来指指定定该该列列接接受受数数据据值值的的范范围围。。同同时时,,规规则则与与默默认认一一样样在在数数据据库库中中只只需需要要定定义义一一次次,,就就可可以以被被多多次次应应用用。。任务4:规则的实现现2.创建规则和默认值类似似,规则创建建后,需要将将其捆绑到列列上或用户自自定义数据类类型上。创建规则的命命令如下:CREATERULErule_nameASconstraint_expression捆绑规则的命命令语句如下下:EXECsp_bindrulerule_name,'table_name.[column_name]'任务4:规则的实现现如果在列或数数据类型上已已经捆绑了规规则,那么当当再次向它们们捆绑规则时时,旧规则将将自动被新规规则覆盖,而而不会捆绑多多条规则。捆绑规则可以以使用系统存存储过程sp_bindrule,解除规则的的相关绑定可可以使用系统统存储过程sp_unbindrule。任务4:规则的实现现3.删除规则①解除除规则则捆绑绑的列列或用用户自自定义义数据据类型型。解除绑绑定默默认值值的命命令如如下::EXECsp_unbindrule'table_name.column_name'②删除除该规规则。。具体的的命令令语句句如下下:DROPRulerule_name任务5:用户户自定定义函函数的的实现现1.用户自自定义义函数数为了扩扩展T-SQL的编程程能力力,SQLServer2005除了提提供的的内部部函数数外,,还允允许用用户自自定义义函数数。用用户可可以使使用CREATEFUNCTION语句编编写自自已的的函数数,以以满足足特殊殊需要要。用用户自自定义义函数数可用用传递递一个个或多多个参参数,,并返返回一一个简简单的的数值值。任务5:用户户自定定义函函数的的实现现(1)创建建标量量用户户自定定义函函数标量用用户自自定义义函数数返回回一个个简单单的数数值,,如int、char、decimal等,但但禁止止使用用text、ntext、image、cursor和timestamp作为返返回的的参数数。该函数数的函函数体体被封封装在在以BEGIN语句开开始,,END语句结结束的的范围围内。。任务5:用户户自定定义函函数的的实现现其语法法格式式如下下:CREATEFUNCTION[owner_name].function_name(@parameter_namescalar_parameter_data_type)RETURNscalar_return_data_type[AS]BEGINFUNCTION_bodyRETURNscalar_expressionEND任务5:用户户自定定义函函数的的实现现【例】创建一一个自自定义义函数数,返返回特特定课课程的的平均均成绩绩。USESCDBGOCREATEFUNCTIONAvgGrade_SC(@CourseIDVarchar(20))RETURNSFLOATASBEGINDECLARE@AVG_GradeFLOATSET@AVG_Grade=(SELECTAVG(Grade)FROMSCWHERECourseID=@CourseID)RETURN@AVG_GradeEND任务5:用户户自定定义函函数的的实现现(2)创建直接接表值用户户定义函数数表值函数返返回一个Table型数据,对对直接表值值用户定义义函数而言言,返回的的结果只是是一系列表表值,没有有明确的函函数体。该该表是SELECT语句的结果集集。其语法格式为为:CREATEFUNCTION[owner_name].function_name(@parameter_namescalar_parameter_data_type)RETURNTABLE[AS]RETURN[(select_statement)]任务5:用户自定义义函数的实现现【例】创建一个函数数,要求返回回属于同一个个班级的学生生的基本信息息。在SQLServerManagementStudio查询编辑器中中运行以下代代码:USESCDBGOCREATEFUNCTION学生信息(@班级号Varchar(20))RETURNSTABLEASRETURN(SELECT*FROMStudentWHEREClassID=@班级号)项目2:SCDB中索引的创建建与管理【任务描述】数据库中的索索引与书籍中中的目录类似似,在一本书书中,利用目目录可以快速速查找到所需需要的信息,,无须阅读整整本书,在数数据库中,索索引使数据库库程序无须对对整个表进行行扫描,就可可以在其中找找到所需要的的数据。当创创建数据库并并优化其性能能时,应该为为数据查询所所使用表的列列创建索引,,建立索引后后,SQLServer2005会根据索引的的有序排列,,通过高效的的查找算法找找到相关数据据。因此,对对表建立索引引,可以加快快数据的查询询速度和减少少系统的响应应时间。项目2:SCDB中索引的创建建与管理【任务目标】了解索引的基基础知识;掌握创建索引引的方法;学会管理和维维护索引。任务1:了解索引的基基础知识1.索引概述索引与目录类类似,如果想想快速查找而而不是逐页查查找指定的内内容,可以通通过目录中章章节的页号找找到其对应的的内容。类似似地,索引通通过记录表中中的关键值指指向表中的记记录,这样数数据库引擎就就不用扫描整整个表而定位位到相关的记记录。任务1:了解索引的基基础知识1.索引概述SQLServer中一个表的存存储是由数据据页和索引页页两个部分组组成的。数据据页用来存放放除了文本和和图像数据以以外的所有与与表的某一行行相关的数据据,索引页包包含组成特定定索引的列中中的数据。任务1:了解索引的基基础知识2.索引的作用索引是以表列列为基础的数数据库对象,,它保存着表表中排序的索索引列,并且且记录了索引引列在数据表表中的物理存存储位置,实实现了表中数数据的逻辑排排序,其主要要目的是提高高SQLServer系统的性能,,加快数据的的查询速度和和减少系统的的响应时间。。任务1:了解索引的基基础知识3.建立索引的原原则一般来说,适适合在这些列列上创建索引引:(1)在经常需需要搜索索的列上上创建索索引,可可以加快快搜索的的速度。。(2)在作为主主键的列列上创建建索引,,强制该该列的唯唯一性和和组织表表中数据据的排列列结构。。(3)在经常用用在连接接的列上上创建索索引,这这些列主主要是一一些外键键,可以以加快连连接的速速度。(4)在经常常使用用在WHERE子句中中的列列上创创建索索引,,加快快条件件的判判断速速度。。(5)在经常常需要要排序序的列列上创创建索索引,,因为为索引引已经经排序序,这这样查查询可可以利利用索索引的的排序序,加加快排排序查查询时时间。。(6)在经常常需要要根据据范围围进行行搜索索的列列上创创建索索引,,因为为索引引已经经排序序,其其指定定的范范围是是连续续的。。任务1:了解索索引的的基础础知识识4.索引的的分类类在MicrosoftSQLServer2005系统中中,有有两种种基本本类型型的索索引::聚集集索引引和非非聚集集索引引。除除此之之外,,还有有唯一一索引引、包包含索索引、、索引引视图图、全全文索索引、、XML索引等等。任务1:了解索索引的的基础础知识识(1)聚集集索引引索引的的结构构是树树状结结构,,树的的顶部部称为为叶级级,树树的其其他部部分称称为非非叶级级,树树的根根部在在非叶叶级中中。同同样,,聚集集索引引的叶叶级和和非叶叶级构构成了了一个个树状状结构构。在在聚集集索引引中,,表中中的数数据所所在的的数据据页就就是聚聚集索索引的的叶级级,在在叶级级之外外的索索引页页是非非叶级级,如图所所示。任务1:了解索索引的的基础础知识识聚集索索引在在使用用中具具有以以下特特点::①每一一个表表只能能有一一个聚聚集索索引,,因为为表中中数据据的物物理顺顺序只只有一一个。。②表中中行的的物理理顺序序和索索引中中行的的物理理顺序序是相相同的的,在在创建建任何何非聚聚集索索引之之前创创建聚聚集索索引,,这是是因为为聚集集索引引改变变了表表中行行的物物理顺顺序,,数据据行按按照一一定的的顺序序排列列,并并目自自动维维护这这个顺顺序。。③聚集集索引引的平平均大大小大大约是是数据据表的的百分分之五五,但但是,,实际际的聚聚集索索引的的大小小常常常根据据索引引列的的大小小变化化而变变化。。④在索索引的的创建建过程程中,,SQLServer临时使使用当当前数数据库库的磁磁盘空空间,,当创创建聚聚集索索引时时,需需要120%的表空空间的的大小小,因因此,,一定定要保保证有有足够够的空空间来来创建建聚集集索引引。任务1:了解索索引的的基础础知识识(2)非聚聚集索索引非聚集集索引引具有有与表表的数数据完完全分分离的的结构构。使使用非非聚集集索引引不用用将物物理数数据页页中的的数据据按列列排序序。非聚集集索引引表示示行的的逻辑辑顺序序。在在非聚聚集索索引中中,叶叶级没没有包包含数数据行行,如图所所示。任务1:了解索索引的的基础础知识识(3)唯一一索引引唯一索索引确确保索索引键键不包包含重重复的的值,,因此此,表表或视视图中中的每每一行行在某某种程程度上上是唯唯一的的。例例如,,如果果在表表中的的“姓姓名””字段段上创创建了了唯一一索引引,则则以后后输入入的姓姓名将将不能能同名名。创建PRIMARYKEY或UNIQUE约束会会在表表中指指定的的列上上自动动创建建唯一一索引引。聚集索引和和非聚集索索引都可以以是唯一索索引。任务2:创建索引引1、在【对象资源管管理器】中创建索引引【例】在SCDB数据库中的的Student表上创建基基于Name列,名为Student_index的不唯一、、非聚集索索引。(1)在SQLServerManagementStudio的【对象资源管管理器】面板中,选选择要创建建索引的表表Student,然后展开开Student表前面的““+”号,选中中【索引】选项右击,,在弹出的的快捷菜单单中选择““新建索引引”命令,,如图所示。(2)选择【新建索引】命令,进入入如图5.34所示的【新建索引】窗口,在该该窗口中列列出了Student表上要建立立的索引,,包含其名名称、是不不是聚集索索引、是否否设置唯一一索引等。。输入索引引名称为““Student_index”,选择【非聚集】选项。任务2:创建索引引(3)单击【添加】按钮进入如图所示的界面,在在列表中选选择需要创创建索引的的Name列(对于复复合索引,,可以选择择多个组合合列)。(4)单击【确定】按钮,SQLServer将完成索引引的创建。。任务2:创建索引引2.使用Transact-SQL语句创建索索引创建索引使用用CREATEINDEX语句。其语法法如下:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameON{table_name|view_name}([column1[ASC|DESC],column2[ASC|DESC],……]|[express])[TABLESPACEtablespace_name][PCTFREEn1][STORAGE(INITIALn2)][NOLOGGING][NOLINE][NOSORT];任务3:查看索引信息息1.在【对象资源管理理器】中查看索引信信息在SQLServerManagementStudio的【对象资源管理理器】面板中,使用用与创建索引引同样的方法法,打开如下下图所示的快快捷菜单,选选择“属性””命令,即可可看到该索引引对应的信息息。任务3:查看索引信息息2.使用系统存储储过程sp_helpindex查看指定表的的索引信息【例】使用系统存储储过程sp_helpindex查看SCDB数据库中Student表的索引信息息。在SQLServerManagementStudio查询编辑器中中运行如下命命令:USESCDBGOEXECsp_helpindexStudentGO任务4:重命名索引引1.在【对象资源管理理器】中重命命名索索引在SQLServerManagementStudio的【对象资资源管管理器器】面板中中,使使用与与创建建索引引同样样的方方法,,打开开如下下图所所示的的快捷捷菜单单,选选择““重命命名””命令令,然然后直直接输输入新新名即即可。。任务4:重命名索引引2.通过Transact-SQL语句来实现,,更改索引名名称的命令格格式如下:EXECsp_renametable_nameold_index_name,new_index_name其中:Table_name:索引所在的的表名称。Old_Index_name:要重新命名名的索引的名名称。New_Index_name:新的索引名名称。任务5:删除索引1.在【对象资源管理理器】中删除索引在SQLServerManagementStudio的【对象资源管理理器】面板中展开SCDB数据库,单击击【表】选项展开Student表,再展开【索引】前面的“+”号,选中索索引名为Student_index的索引,在弹弹出的快捷菜菜单中选择【删除】命令,进入如图所示的窗口,单击击【确定】按钮,即可删删除该索引。。2.使用Transact-SQL语句删除索引引使用Transact-SQL语句删除索引引的语法格式式如下:DROPINDEXTable_name,index_name[,Table_name,index_name……]其中:Table_name:索引所在的的表名称。Index_name:要删除的索索引的名称。项目3:SCDB中视图的创建建与管理【任务描述】视图(View)作为一种数据据库对象,为为用户提供了了一个可以检检索数据表中中的数据的方方式。用户通通过视图来浏浏览数据表中中感兴趣的部部分或全部数数据,而数据据的物理存储储位置仍然在在表中。【任务目标】了解视图的基基本概念、作作用和特点;;掌握创建、、修改和删除除视图的方法法并能灵活运运用视图来简简化表,及简简化数据的查查询。任务1:了解视图的的基础知识1.视图的概念视图是一个虚虚拟表,并不不表示任何物物理数据,只只是用来查看看数据的窗口口而已。视图图与真正的表表很类似,也也是由一组命命名的列和数数据行所组成成,其内容由由查询所定义义。但是视图图并不是以一一组数据的形形式存储在数数据库中,数数据库中只存存储视图的定定义,而不存存储视图对应应的数据,这这些数据仍存存储在导出视视图的基本表表中。当基本本表中的数据据发生变化时时,从视图中中查询出来的的数据也随之之改变。任务1:了解视图的的基础知识2.使用视图的优优点和缺点(1)使用视图的的优点数据保密。对对不同的用户户定义不同的的视图,使用用户只能看到到与自己有关关的数据。简化查询操作作。为复杂的的查询建立一一个视图,用用户不必输入入复杂的查询询语句,只需需针对此视图图做简单的查查询即可。保证数据的逻逻辑独立性。。对于视图的的操作,例如如,查询只依依赖于视图的的定义,当构构成视图的基基本表需要修修改时,只需需要修改视图图定义中的子子查询部分,,而基于视图图的查询不用用改变。任务1:了解视图的的基础知识(2)使用视图的的缺点当更新视图中中的数据时,,实际上是对对基本表的数数据进行更新新。事实上,,当从视图中中插入或者删删除时,情况况也是这样。。然而,某些些视图是不能能更新数据的的,这些视图图有如下的特特征:有UNION等集合合操作作符的的视图图。有GROUPBY子句的的视图图。有诸诸如如AVG,SUM或者者MAX等函函数数的的视视图图。。使用用DISTINCT关键键字字的的视视图图。。连接接表表的的视视图图(其中中有有一一些些例例外外)。任务务2:创创建建视视图图1.在【对象象资资源源管管理理器器】中创创建建视视图图【例】利用用【对象象资资源源管管理理器器】在SCDB数据据库库中中创创建建一一个个名名为为V_Student的视视图图,,该该视视图图仅仅查查看看Student表中中来来自自““荆荆门门””的的学学生生的的基基本本信信息息。。(1)启动动SQLServerManagementStudio,在【对象资资源管管理器器】的树型型目录录中,,找到到SCDB,展开开该数数据库库。(2)选择择【视图】,按一一下鼠鼠标右右键,,在弹弹出的的快捷捷菜单单中选选择【新建视视图】命令,,出现现如图所所示。任务2:创建建视图图(3)在弹弹出的的【添加表表】对话框框选择择Student表,点点击【添加】按钮,,然后后点击击【关闭】按钮关关闭【添加表表】对话框框,如图所所示。(4)在如图所所示的对话话框的的代码码编辑辑窗格格编辑辑代码码。(5)点击击工具具栏的的,弹出出如图所所示的视图图保存存对话话框,,输入入视图图的名名称““V_Student”,,点点击击【确定定】按钮钮,,即即完完成成视视图图的的创创建建。。任务务2:创创建建视视图图2.使用用Transact-SQL语句句创创建建视视图图基本本语语法法如如下下::CREATEVIEWview_name[WITHENCRYPTION]ASselect_statement其中中,,WITHENCRYPTION子句句表表示示对对视视图图加加密密。。任务务3:显显示示视视图图的的信信息息1.在【对象象资资源源管管理理器器】中显显示示视视图图的的信信息息【例5.29】】在SQLServerManagementStudio窗口口中中查查看看和和修修改改视视图图V_Student的定定义义信信息息。。(1)在在【对象象资资源源管管理理器器】面板板中中展展开开【数据据库库】选项项,,然然后后展展开开【SCDB】】选项项。。(2)展展开开【视图图】选项项,,在在视视图图列列表表中中可可以以见见到到名名为为V_Student的视视图图。。如如果果没没有有看看到到,,单单击击““刷刷新新””按按钮钮,,刷刷新新一一次次。。(3)右右击击V_Student视图图,,在在弹弹出出的的快快捷捷菜菜单单中中选选择择【设计计】命令令打打开开如图所示窗口,可以在在该对话框中中直接对视图图的定义进行行修改。任务3:显示视图的的信息2.通过执行系统统存储过程sp_helptext查看视图的信信息【例】通过执行系统统存储过程sp_helptext查看视图V_Student2的定义信息。。在SQLServerManagementStudio查询编辑器中中运行如下命命令:USESCDBGOsp_helptext'V_Student2'任务4:重命名视图图【例】将视图V_Student2重新命名为V_Stu2。(1)在【对象资源管理理器】面板中展开【数据库】选项,然后展展开【SCDB】】选项。(2)展开【视图】选项,在视图图列表中选择择名为V_Student2的视图,右击击鼠标在弹出出的菜单中选选择【重命名】,如图所示,然后将视图图V_Student2重新命名为V_Stu2。任务4:重命名视图图【例】将视图V_Stu2重新命名为V_Student2。在SQLServerManagementStudio查询编辑器中中运行如下命命令:USESCDBGOEXECsp_rename'V_Stu2','V_Student2'任务5:视图的修改改和删除1.视图的修改视图的修改是是由ALTER语句来完成的的,基本语法法如下:ALTERVIEWview_name[WITHENCRYPTION]ASSelect_statement任务5:视图的修改改和删除2.视图的删除视图的删除是是通过DROP语句来实现的的。【例】使用Transact-SQL语句删除视图图V_Student。在SQLServerManagementStudio查询编辑器中中运行如下命命令:USESCDBGODROPV_StudentGO项目:4SCDB中存储过程的的创建与管理理【任务描述】当用户使用一一串Transact-SQL语句访问服务务器上的数据据时,首先将将Transact-SQL语句发送到服服务器,由服服务器编译Transact-SQL语句,并进行行优化产生查查询的执行计计划,之后数数据库引擎执执行查询计划划,最终将执执行结果发回回客户程序。。每当执行一一段Transact-SQL语句时,都要要重复以上操操作。是否可可以免去以上上重复操作,,而是将用户户经常执行的的可以实现某某种特殊功能能的代码看成成一个集合,,当用户需要要使用这段代代码时直接调调用呢?SQLServer提供了存储过过程这一数据据库对象来解解决以上问题题。项目:4SCDB中存储过程的的创建与管理理【任务目标】了解存储过程程的基本概念念和作用;了了解存储过程程的分类;学学会创建和执执行存储过程程的方法;学学会管理和维维护存储过程程;掌握存储储过程的重编编译处理;学学会系统存储储过程和扩展展存储过程的的调用。任务1:了解存储过过程的基础知知识1.存储过程的基基本概念存储过程是在在数据库服务务器端执行的的一组Transact-SQL语句的集合,,经编译后存存放在数据库库服务器中。。它能够向用用户返返回数数据、向数据据库表中写入入和修改数据据,还可以执执行系统函数数和管理操作作。用户在编编程过程中只只需要给出存存储过程的名名称和必需的的参数,就可可以方便地调调用它们。任务1:了解存储过过程的基础知知识2.存储过程的特特点可以将存储过过程的特点归归纳如下:(1)能够在单个个存储过程中中执行一系列列的Transact-SQL语句,也能够够在一个存储储过程中调用用其他的存储储过程。(2)存储过程是是保存在服务务器端的已经经编译的Transact-SQL语句,因此比比一般的Transact-SQL语句执行速度度快,同时减减少了网络流流量,节省大大量时间和数数据量。(3)存储过程可可以使用控制制流语句和变变量,大大增增强了SQL的功能。(4)存储过程在在提交前会自自动检查语法法,避免了一一些不必要错错误的出现。。(5)存储储过程程是管管理员员放在在服务务器端端的Transact-SQL语句,,可以以设置置用户户对存存储过过程的的使用用权限限,从从而保保证了了数据据库访访问的的安全全性。。任务1:了解解存储储过程程的基基础知知识3.存储过过程的的分类类SQLServer2005提供了了三种种存储储过程程:用用户自自定义义存储储过程程、系系统存存储过过程和和扩展展存储储过程程。(1)用户自自定义存存储过程程用户自定定义存储储过程也也就是用用户自行行创建并并存储在在用户数数据库中中的存储储过程,,它用于于完成用用户指定定的某一一特定功功能(如查询用用户所需需的数据据信息)。任务1:了解存存储过程程的基础础知识(2)系统存存储过程程SQLServer2005不仅提供供用户自自定义存存储过程程的功能能,而且且也提供供许多可可作为工工具使用用的系统统存储过过程。系系统存储储过程通通常使用用“sp_”为前缀缀,主要要用于管管理SQLServer和显示有有关数据据库及用用户的信信息。(3)扩展存储储过程扩展存储过过程(ExtendedStoredProcedures)是用户可以以使用外部部程序语言言编写的存存储过程。。任务2:创建和执执行存储过过程1.创建和执行行简单存储储过程(1)创建存储储过程的SQL语法格式如如下:CREATEPROCEDUREprocedure_name[WITHENCRYPTION][WITHRECOMPILE]ASSq1_statement任务2:创建建和执执行存存储过过程(2)执行行存储储过程程在存储储过程程创建建成功功后,,用户户可以以执行行存储储过程程来检检查存存储过过程的的返回回结果果。执执行存存储过过程主主要有有两种种方法法,一一是在在SQLServerManagementStudio的查询询编辑辑器中中运用用Transact-SQL语句执执行;;二是是在SQLServerManagementStudio的对象象资源源管理理器中中直接接用鼠鼠标操操作执执行存存储过过程。。任务2:创建建和执执行存存储过过程在SQLServerManagementStudio查询编编辑器器中执执行存存储过过程的的操作作步骤骤如下下:打开SQLServerManagementStudio查询编编辑器器;在SQLServerManagementStudio查询编编辑器器中输输入执执行存存储过过程的的Transact-SQL语句,,然后后单击击执行行。执行存存储过过程的的Transact-SQL语句基基本语语法如如下:EXECprocedure_name任务3:修改存存储过过程1.使用Transact-SQL语句句修修改改存存储储过过程程修改改存存储储过过程程是是由由ALTER语句句来来完完成成的的,,其其语语法法如如下下::ALTERPROCEDUREprocedure_name[WITHENCRYPTION][WITHRECOMPILE]ASSql_statement任务务3:修改改存存储储过过程程2.在【对象象资资源源管管理理器器】面板板中中修修改改存存储储过过程程通过过SQLServerManagementStudio中的的【对象象资资源源管管理理器器】来修修改改存存储储过过程程的的具具体体步步骤骤如如下下::⑴展展开开SQLServerManagementStudio【【对象象资资源源管管理理器器】中的的【数据据库库】选项项,,然然后后展展开开【可编编程程性性】选项项,,如图图所所示示。⑵展展开开【存储储过过程程】选项项,,选选中中要要进进行行修修改改的的存存储储过过程程,,右右击击鼠鼠标标,,在在弹弹出出的的菜菜单单中中选选择择【修改改】命令令,,如图图所所示示。⑶在在弹弹出出的的修修改改存存储储过过程程窗窗口口中中,,直直接接修修改改该该存存储储过过程程,,修修改改完完毕毕,,保保存存即即可可。。任务4:重命名存储过过程重命名存储过过程的具体步步骤:①在SQLServerManagementStudio窗口中打开【对象资源管理理器】面板,并展开开数据库“SCDB”选项。②展开【可编程性】选项,选择【存储过程】选项。在存储储过程详细列列表中,选中中存储过程db.p_Student2,右击鼠标,,在弹出的快快捷菜单中,,选择【重命名】命令,如图所示。③输入存储过过程的新名称称即可。任务5:删除存储过程程存储过程的删删除常用的方方法有两种,,一种是使用用Transact-SQL语句来删除;;另一种是使使用SQLServerManagementStudio中的【对象资源管理理器】来进行删除。。1.通过Transact-SQL语句删除存储储过程存储过程的删删除是通过DROP语句来实现的的。任务5:删除存储过程程2.使用【对象资源管理理器】删除存储过程程以使用SQLServerManagementStudio窗口来删除存存储过程p_StudentNum为例,讲述在在【对象资源管理理器】中删除存储过过程的步骤如如下:(1)在SQLServerManagementStudio窗口中打开【对象资源管理理器】面板,展开SCDB选项。(2)展开【可编程性】选项,右击【存储过程】选项,展开【存储过程】,选中dbo.p_StudentNum,单击鼠标右右键,在弹出出的快捷菜单单中,选择【删除】命令即可,如图所示。项目5SCDB中触发器的创创建与管理【任务描述】触发器是一种种特殊的存储储过程,在满满足某种特定定条件时,触触发器可以自自动执行,完完成各种复杂杂的任务。触触发器通常用用于实现强制制业务规则和和数据完整性性。【任务目标】了解触发器的的概念;学会会创建触发器器的方法;掌掌握触发器的的管理和维护护。任务1:了解触发器的的基础知识触发器是一种种特殊类型的的存储过程。。存储过程是是通过存储过过程名被调用用执行的,而而触发器主要要是通过事件件触发而被执执行的。触发器(Trigger)不仅能实现完完整性规则,,而且能保证证一些较复杂杂业务规则的的实施。所谓谓触发器就是是一类由事件件驱动的特殊殊过程,一旦旦由某个用户户定义,任何何用户对该触触发器指定的的数据进行增增加、删除或或修改操作时时,系统将自自动激活相应应的触发器,,在核心层进进行集中的完完整性控制。。任务1:了解触发器的的基础知识2.触发器的优点点(1)强制比CHECK约束更复杂的的数据的完整整性;(2)使用自定义义的错误提示示信息;(3)实实现现数数据据库库中中多多张张表表的的级级联联修修改改;(4)比比较较数数据据库库修修改改前前后后数数据据的的状状态态;(5)维护规范化化数据。任务2:创建触发器使用CREATETRIGGER命令创建触发发器,其基本本语法如下:CREATETRIGGERtrigger_nameON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}[WITHENCRYPTION]ASIFUPDATE(column_name)[{and|or}UPDATE(column_name)…]sql_statement任务2:创建触发器【例】在SCDB数据库的Student表上创建一个个Student_trigger1的触发器,当当执行INSERT操作时,将显显示一条“数数据插入成功功!”的消息息。在SQLServerManagementStudio查询编辑器中中运行如下命命令:USESCDBGOCREATETRIGGERStudent_trigger1ONStudentFORINSERTASPRINT'数据插入入成功!!'GO任务3:管理触触发器1.查看触发发器信息息(1)使用系系统存储储过程查查看触发发器信息息系统存储储过程sp_help、sp_helptext、sp_depends和sp_helptrigger分别提供供有关触触发器的的不同信信息。(2)使用系系统表查查看触发发器信息息用户可以以通过查查询系统统表sysobjects得到触发发器的相相关信息息。任务3:管理触触发器2.修改触发发器(1)重命名名触发器器使用sp_rename命令修改改触发器器的名字字,其语语法格式式为:EXECsp_renameoldname.newname其中,oldname:指触发器原原来的名称,,newname:指触发器的的新名称。任务3:管理触发器器2.修改触发器(2)修改触发器器定义修改触发器的的具体语法如如下:ALTERTRIGGERtrigger_nameON[table|view]{FOR[AFTER|INSTEADOF]}{[INSERT][,][UPDATE][,][DELETE]}[WITHENCRYPTION]ASIFUPDATE(cotumn_name)[{and|or}UPDATE(column_name)…]sql_statesment任务3:管理触发器器3.禁止和启动触触发器禁用和启用触触发器的语法法如下:ALTERTABLEtable_name{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,…n]}任务3:管理触发器器4.删除触发器(1)使用命令DRDPTRIGGER删除指定的触触发器,具体体语法形式如如下:DROPTRIGGERtrigger_name(2)在【对象资料管理理器】面板中删除触触发器按照前面介绍绍的方法找到到相应的触发发器并右击鼠鼠标,在弹出出的快捷菜单单中,选择【删除】命令即可。(3)删除触发器器所在的表时时,SQLserver2005将自动删除与与该表相关的的触发器。项目6SCDB中游标的使用用【任务描述】由SELECT语句查询的结结果是一个记记录集,即由由若干条记录录组成的一个个完整的单元元。在实际应应用中常常需需要从这种记记录集中逐行行逐条的进行行访问。如::在统计某班班某课学生成成绩分布的查查询结果集中中,用户往往往希望逐行访访问记录,以以便知道每个个同学这门课课的成绩是多多少,据此判判断成绩是优优、良、中、、及格还是不不及格。使用用游标便可解解决这类问题题。项目6SCDB中游标的使用用【任务目标】了解游标的概概念及其操作作,了解常用用游标的类型型、使用游标标的步骤,掌掌握游标的打打开方法,学学会利用游标标提取数据、、修改数据和和删除数据,,掌握游标关关闭及释放方方法。任务1:了解游标的的基础知识1.游标的定义游标(Cursor)是允许用户能能够从SELECT语句查询的结结果集中,逐逐条逐行地访访问记录,用用户可以按照照自己的意愿愿逐行地显示示、修改或删删除这些记录录的数据访问问处理机制。。游标可以理理解为数据表表记录逐行访访问(移动当前记录录和在当前记记录上进行访访问)的位置置指针针。任务1:了解解游标标的基基础知知识1.游标的定定义游标是一一个与Transact-SQL的SELECT语句相关关联的符符号名,,它使用用户可逐逐行访问问由SQLServer返回的结结果集。。游标包包括以下下两个部部分:(1)游标结结果集(CursorResultSet):由定义义该游标标的SELECT语句返回回的行集集合。(2)游标位位置(CursorFasitian):指向这这个行集集合某一一行的当当前指针针。任务1:了解游游标的基基础知识识2.游标的优优点从游标定定义上可可以得到到游标的的优点,,这些优优点使游游标在实实际应用用中发挥挥了重要要的作用用:(1)允许程程序对由由查询语语句SELECT返回的行行集合中中的每一一行执行行相同或或不同的的操作,,而不是是对整个个行集合合执行同同一个操操作。(2)提供对对基于游游标位置置的表中中的行进进行删除除和更新新的能力力。(3)游标实实际上是是作为面面向集合合的数据据库管理理系统(DBMS)和面向行行的程序序设计之之间的桥桥梁。任务1:了解游游标的基基础知识识3.声明游标标声明游标标的语法法形式为为:DECLAREcursor_nameCURSORFORselect_statement[FOR{READONLY|UPDATE[OFcolumn_name_list[,……]]}]任务2:使用游标标1.打开游标标可使用OPEN语句打开开游标,,语法格格式如下下:OPEN{[GLOBAL]cursor_name|@cursor_variable_name}任务2:使用游标标2.读取游标标中的数数据一旦游标标被打开开,就可可以从该该游标集集合中读读取数据据了。从从游标中中得到一一行数据据的操作作称为一一个FETCH。该FETCH操作包含含如下操操作:FETCHFIRST:获取游游标中的的第一行行数据。。如果在打打开游标标之后第第一次执执行该操操作,则则将获取取游标中中的第一一行数据据。FETCHNEXT:获取下下一行数数据。如果在打打开游标标之后第第一次执执行该操操作,则则将获取取游标中中的第一一行数据据。FETCHPRIOR:获取上上一行数数据。如果在打打开游标标之后第第一次执执行该操操作,则则得不到到任何数数据。FETCHLAST:获取游游标中最最后行数数据。如果在打打开游标标之后第第一次执执行该操操作,则则将获取取游标中中的最后后一行数数据。FETCHABSOLUTEn:如果n是一个正正整数,,则该操操作会获获取游标标中从第第一行开开始的n行数据;;如果n是一个负负整数,,那么该该操作会会获取游游标中从从末尾行行向前数数的n行数据。。如果n是0则不会获获取数据据。FETCHRELATIVEn:相对上上一个被被获取的的行而言言,该操操作将获获取该行行前面或或者后面面的n行数据。。如果n是正数

温馨提示

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

评论

0/150

提交评论