视图SQLServerppt课件.ppt

上传人:sccc 文档编号:5378413 上传时间:2023-07-01 格式:PPT 页数:26 大小:296.51KB
返回 下载 相关 举报
视图SQLServerppt课件.ppt_第1页
第1页 / 共26页
视图SQLServerppt课件.ppt_第2页
第2页 / 共26页
视图SQLServerppt课件.ppt_第3页
第3页 / 共26页
视图SQLServerppt课件.ppt_第4页
第4页 / 共26页
视图SQLServerppt课件.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《视图SQLServerppt课件.ppt》由会员分享,可在线阅读,更多相关《视图SQLServerppt课件.ppt(26页珍藏版)》请在三一办公上搜索。

1、视图,杨之江,内容,视图简介视图的优点创建视图管理视图通过视图管理数据Q&A,1 视图简介,视图是个虚表,是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除,2 视图的优点,视点集中:视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。简化操作:视图大大地简化了用户对数据的操作,视图本身就是一个复杂查询的结果集这

2、样在每一次执行相同的查询时不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可可见视图向用户隐藏了表与表之间的复杂的连接操作定制数据:视图可以让不同的用户以不同的方式看到不同或者相同的数据集。合并分割数据:在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。而使用视图可以重新组织数据,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。安全性:视图提供了一个简单而有效的安全机制。,3 创建视图,SQL Server 2000提供了如下几种创建视图的方法:(1)用SQL SERVER企业管理器创建视图;(2)用

3、Transact-SQL语句中的CREATE VIEW命令创建视图;创建视图时应该注意以下情况:1)只能在当前数据库中创建视图,在视图中最多只能引用1024列,视图中记录的数目限制只由其基表中的记录数决定。2)如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。3)如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。4)不能在视图上创建索引,不能在规则、默认、触发器的定义中引用视图。5)当通过视图查询数据时,SQL Server要检查以确保语句中涉及的所有数据库对象存在,每个数据库对象在语句的上下文中有效,而且数据修改语句不能违反

4、数据完整性规则。6)视图的名称必须遵循标识符的规则,且对每个用户必须是惟一的。此外,该名称不得与该用户拥有的任何表的名称相同。,3.1 使用SQL SERVER Enterprise Manager 来创建视图,启动SQL SERVER Enterprise Manager 登录到指定的服务器打开要创建视图的数据库文件夹选中视图图标此时在右面的窗格中显示当前数据库的所有视图,右击图标在弹出菜单中选择New View 选项打开New View 对话框,在New View 对话框中共有四个区:表区、列区、SQL script 区、数据结果区在创建视图时首先点击 按钮,打开添加表对话框在列区中选择将

5、包括在视图的数据列,此时相应的SQL SERVER 脚本便显示在SQL script 区单点 按钮,在数据结果区将显示包含在视图中的数据行单击 按钮在弹出对话框中输入视图名单击保存完成视图的创建,3.2 Transact-SQL 命令创建视图,使用Transact-SQL 命令CREATE VIEW 创建视图的语法格式为:CREATE VIEW view_name(column,.n)WITH,.n ASselect_statement WITH CHECK OPTION:=ENCRYPTION|SCHEMABINDING|VIEW_METADATA,参数含义,column,.n,视图列名se

6、lect_statement,构成视图文本的主体利用SELECT 命令从表中或视图中选择列构成新视图的列,但是在SELECT 语句中,不能使用ORDER BY、COMPUTE、COMPUTE BY语句,不能使用INTO关键字,不能使用临时表WITH CHECK OPTION 保证在对视图执行数据修改后,通过视图能够仍看到这些数据。比如创建视图时定义了条件语句,很明显视图结果集中只包括满足条件的数据行,如果对某一行数据进行修改导致该行记录不满足这一条件,但由于在创建视图时使用了WITH CHECH OPTION 选项,所以查询视图时结果集中仍包括该条记录,同时修改无效ENCRYPTION 加密S

7、CHEMABINDING 表名视图名或函数名前必须有所有者前缀VIEW_METADATA返回视图的元数据信息,创建视图 示例1,使用WITH ENCRYPTION WITH CHECK OPTION 选项并且包含函数列use pubsif exists(select table_name from information_schema.viewswhere table_name=emprange)drop view emprangegocreate view emprange(emp_id,fname,lname,pubid,job_id,rows)with encryptionasselec

8、t emp_id,fname,lname,pub_id,job_id,rowcountfrom employeewhere job_id between 11 and 12with check optiongo,创建视图 示例1,由于使用了WITH CHECK OPTION 所以当对视图进行修改时将返回错误信息比如执行以下语句update emprangeset job_id=5where emp_id=PCM98509F返回错误信息为The attempted insert or update failed because the target view either specifies W

9、ITH CHECK OPTION orspans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did notqualify under the CHECK OPTION constraint.The statement has been terminated.,创建视图 示例1,由于使用了WITH ENCRYPTION 选项所以当执行以下语句时会看到很多乱码use pubsgoselect c.id,c.textfrom syscomments c,sysob

10、jects owhere c.id=o.id and o.name=emprangego,创建视图 示例2,若表被垂直分割成多个子表使用视图重新装载表的数据create view comptableasselect*from table1 unionselect*from table2 unionselect*from table 3,创建视图 示例3,显示包含内置函数的视图定义。使用函数时,必须在 CREATE VIEW 语句中为派生列指定列名 CREATE VIEW categories(category,average_price)AS SELECT type,AVG(price)FRO

11、M titles GROUP BY type,创建视图 示例4,ROWCOUNT 函数作为视图定义的一部分 CREATE VIEW myview AS SELECT au_lname,au_fname,ROWCOUNT AS bar FROM authors WHERE state=UT,4 管理视图,查看、修改视图使用存储过程检查视图删除视图,4.1 查看、修改视图,通过企业管理器通过ALTER VIEW,4.2 使用存储过程检查视图,sp_depends 视图名称 sp_depends emprangesp_help 视图名称sp_helptext 视图名称,4.3 删除视图,通过企业管理

12、器通过查询分析器通过DROP VIEW,5 通过视图管理数据,插入数据记录 更新和删除数据记录,使用视图修改数据时,需要注意以下几点:(1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。(2)不能修改那些通过计算得到的字段,例如包含计算值或者合计函数的字段。(3)如果在创建视图时指定了WITH CHECK OPTION选项,那么使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。(4)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。(5)如果视图引用多个表时,无法

13、用DELETE命令删除数据,若使用UPDATE命令则应与INSERT操作一样,被更新的列必须属于同一个表。,5.1 插入数据记录,例 创建一个基于表employees的新视图v_employees。程序清单如下:create view v_employees(number,name,age,sex,salary)asselect number,name,age,sex,salary from employeeswhere name=张三执行以下语句可向表employees中添加一条新的数据记录:Insert into v_employeesValues(001,李力,22,m,2000),5.

14、1 插入数据记录,例首先创建一个包含限制条件的视图v_employee2,限制条件为工资2000,然后插入了一条不满足限制条件的记录,再用SELECT语句检索视图和表。程序清单如下:create view v_employee2asselect*from employeewhere salary2000goinsert into v_employee2values(002,王则,30,f,1000)goselect*from employeegoselect*from v_employee2go,5.1 插入数据记录,create view castate(au_id,au_lname,au_

15、fname,phone,address,city,state,contract)asselect au_id,au_lname,au_fname,phone,address,city,state,contractfrom authorswhere state=ca执行以下语句向视图中插入一条数据记录insert into castatevalues(234-34-4512,John,Smith,415 548-7723,18 Broadway Av.,San Jose,ca,1)使用SELECT 语句可以在视图和表中查到该条记录,但是如果执行下面的语句虽然仍可以成功执行,但只可以在表而不是视图

16、中查到该条数据insert into castatevalue(234-34-4512,John,Smith,415 548-7723,18 Broadway Av.,Gary,IN,1),5.1 插入数据记录,在本例中所创建的视图引用了多个表create view au_title(author_au_id,au_lname,au_fname,contract,title_au_id,title_id,au_ord,royaltyper)asselect a.au_id,a.au_lname,a.au_fname,a.contract,t.au_id,t.title_id,t.au_ord,

17、t.royaltyperfrom authors a,titleauthor twhere a.au_id=t.au_id若要执行INSERT 语句则在同一个语句只能对属于同一个表的列执行操作所以若向视图au_title 中插入一行数据只能分别执行以下语句insert into au_title(author_au_id,au_lname,au_fname,contract)values(234-34-4611,John,Smith,1)insert into au_title(title_au_id,title_id,au_ord,royaltyper)values(234-34-4611,

18、BU1111,1,50),5.2 更新和删除数据记录,使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。使用视图删除记录,可以删除任何基表中的记录,直接利用DELETE语句删除记录即可。但应该注意,必须指定在视图中定义过的字段来删除记录。例:创建了一个基于表employees的视图v_employees,然后通过该视图修改表employees中的记录。create view v_employees as select*from employees update v_employees set name=张然 where name=张三例:利用视图v_employees删除表employees中姓名为张然的记录delete from v_employees where name=张然,Question&Answer,Thank you,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号