您好,欢迎访问三七文档
视图索引游标视图使用视图时,要注意下列事项:(1)只有在当前数据库中才能创建视图。视图的命名必须遵循标识符命名规则,不能与表同名,且对每个用户视图名必须是唯一的,即对不同用户,即使是定义相同的视图,也必须使用不同的名字。(2)不能把规则、默认值或触发器与视图相关联。(3)不能在视图上建立任何索引,包括全文索引视图与表(有时为与视图区别,也称表为基本表——BaseTable)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。视图是从一个或多个表(或视图)导出的表。视图是数据库的用户使用数据库的观点。1视图的概念2创建视图1)在管理平台中创建2)用命令创建例:创建选修了课程且成绩合格的学生的信息的视图ManagementStudio创建视图•2)T-sql语句•CREATEVIEW[database_name.][owner.]view_name[(column[,...n])]•ASselect_statement•[WITHCHECKOPTION]•①定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语句。②不能使用COMPUTE、COMPUTEBY、ORDERBY、INTO子句,以及临时表。用于强制视图上执行的所有数据修改都必须符合由select设置的准则,通过视图修改数据时,此选项可确保提交修改后,仍可通过视图看到修改后的数据.3查询视图4更新视图1)插入数据2)修改数据3)删除视图5修改视图定义1)在管理平台中修改2)用命令修改•1.使用管理平台•2使用t_sql语句•ALTERVIEWview_name•[(column[,...n])][WITHENCRYPTION]ASselect_statement[WITHCHECKOPTION]•示例:为视图V_某班成绩加密练习:1在student数据库中,以“学生”表为基础建立一个视图,其名称为“V_06RJGG001XS”。使用该视图可以查看“06软件工程001班(班级代码为060101001)”所有学生的信息。2为“V_06RJGG001XS”视图中添加一条新的学生记录。(班级代码为060101001)3显示视图和基表的内容4将“V_06RJGG001XS”视图中姓名为“李菲”的同学改为“李飞”。5删除“V_06RJGG001XS”视图中姓名为“李飞”的同学。6修改视图(添加withcheckoption选项)7添加一条新的学生记录。(班级代码为060102002)索引索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。在数据库系统中建立索引主要有以下作用:快速存取数据;保证数据记录的唯一性;实现表与表之间的参照完整性;在使用ORDERBY、GROUPBY子句进行数据检索时,利用索引可以减少排序和分组的时间。二索引的分类1聚集索引和非聚集索引(根据索引的存储结构不同)1)聚集索引(汉语字(词)典默认按拼音排序编排字典中的每页页码)聚集索引是指表中数据行的物理存储顺序与索引顺序完全相同(排序)。聚集索引由上下两层组成,上层为索引页,包含表中的索引页面,用于数据检索,下层为数据页.默认情况下为主键约束创建聚集索引.每个表只能有一个聚集索引。2)非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。索引有序,表中数据无序(按笔画排序的索引就是非聚集索引)创建索引索引可以由系统自动创建也可以手工创建创建主键约束、唯一约束时会自动创建索引createtablepp(sidintprimarykey,snamechar(14)unique)SQLServer2008提供了如下几种创建索引的方法:1.利用SQLServer管理平台创建索引;2.利用Transact-SQL语句中的CREATEINDEX命令创建索引。二利用t_sql语句CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameON{table|view}(column[ASC|DESC][,...n])[with[PAD_INDEX][[,]FILLFACTOR=fillfactor][[,]IGNORE_DUP_KEY][[,]DROP_EXISTING][[,]STATISTICS_NORECOMPUTE][[,]SORT_IN_TEMPDB]][ONfilegroup]创建唯一索引索引的组织方式索引定义的依据索引选项索引名称指定索引文件所在的文件组例1为sjzpt.student按学号升序建唯一索引.2sjzpt.score表按学号升序和课程号降序建唯一索引3在Student表的Sname(姓名)列上建立一个聚簇索引(Student表中的记录将按照Sname值的升序存放)4在sjzpt数据库中的student表上创建名为IX_sexbirth的聚集索引,该索引基于ssex列和sbirthday(降序)列创建。练习:为‘班级’表创建基于‘系部代码’列的非聚集索引bj_index游标声明游标打开游标读取数据声明游标T-SQL中声明游标使用DECLARECURSOR语句,该语句有两种格式,分别支持SQL标准和T-SQL扩展的游标声明。1.SQL语法语句格式:DECLAREcursor_name[INSENSITIVE][SCROLL]CURSORFORselect_statement[FOR{READONLY|UPDATE[OFcolumn_name[,…n]]}]2.T-SQL扩展语句格式:DECLAREcursor_nameCURSOR[LOCAL|GLOBAL]/*游标作用域*/[FORWORD_ONLY|SCROLL]/*游标移动方向*/[STATIC|KEYSET|DYNAMIC|FAST_FORWARD]/*游标类型*/[READ_ONLY|SCROLL_LOCKS|OPTIMISTIC]/*访问属性*/[TYPE_WARNING]/*类型转换警告信息*/FORselect_statement/*SELECT查询语句*/[FORUPDATE[OFcolumn_name[,…n]]]/*可修改的列*/打开游标声明游标后,要使用游标从中提取数据,就必须先打开游标。在T-SQL中,使用OPEN语句打开游标,其格式为:OPEN{{[GLOBAL]cursor_name}|cursor_variable_name}【例】定义游标cursor1,然后打开该游标,输出其行数。DECLAREcursor1CURSORSTATICFORSELECT*fromscoreOPENcursor1SELECT'游标cursor1数据行数'=@@CURSOR_ROWS读取数据游标打开后,就可以使用FETCH语句从中读取数据。语法格式:FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE{n|@nvar}]FROM]{{[GLOBAL]cursor_name}|@cursor_variable_name}[INTO@variable_name[,…n]]【例】从游标cursor1中提取数据。设该游标已经打开。FETCHNEXTFROMcursor1练习:定义一个可滚动游标,显示在score表中把成绩大于80分的同学的信息。定位到第三条信息,并更新成绩为100分。
本文标题:视图索引和游标
链接地址:https://www.777doc.com/doc-3697739 .html