SQL实用简明教程

上传人:tian****1990 文档编号:245000099 上传时间:2024-10-07 格式:PPT 页数:13 大小:216.50KB
返回 下载 相关 举报
SQL实用简明教程_第1页
第1页 / 共13页
SQL实用简明教程_第2页
第2页 / 共13页
SQL实用简明教程_第3页
第3页 / 共13页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,SQL实用简明,教程,第9章 视图的使用,重点内容:,视图的定义,创建视图,更新视图,删除视图,视图的应用,一、视图定义,视图是由基于一个或多个表上的一个查询所定义的虚拟表,它将该查询的具体标准暂时保存起来,也就是说,我们存储一个视图,只需要存储它的定义,而不必像实际的数据表那样需要在数据库中占据着物理空间,但是视图的操作方法是和实际数据表的操作方法一样的。,在ANSI/SQL标准中,视图只是作为一个被查看的虚拟表,而它的建立基础即实际的表则作为基本表。视图可以将数据库中的数据按照用户的要求,以不同的方式呈现给不同的用户。由于视图保存了我们经常使用的查询,这样用户如果需要在视图代表的某个查询的结果中重复使用其中的数据就不用多次输入查询语句了这么复杂了,而且不同的用户看见的数据集的表现形式也不同,相当的自由和灵活。,二、视图的优缺点,(1)优点,简化查询:视图可以基于多个不同的表来建立,它将多个表中抽取得数据放在一起,像一个单表一样操作。,简化结构:无论数据在数据表中的物理布局如何,视图都可以使数据按照不同用户的要求任意地将其选择组合为虚表来呈现给用户,满足不同用户的需求,很好地体现了数据库的“个人化”操作。,安全性:通过视图来访问数据库中的数据,可以限制用户对数据库内容的访问范围,让用户只能访问视图的创建者想让他们看到的具体数据。,数据完整性:在用户通过视图访问或者更新数据时,数据库管理系统DBMS的相关部分会自动地检查数据,确保预先设定的完整性约束。,(2)缺点,性能不高:虽然对用户来说,利用视图访问数据的方法和表相同,但是,数据库管理系统DBMS处理用户对视图的查询时,必须要先将其转换为对底层源表的查询。,数据更新受限,三、创建视图,创建视图使用命令CREATE VIEW。,CREATE VIEW view_name(column_name,column_name.),AS,SELECT_STATEMENT,上面的语句为视图指定了一个名称,并且指明了定义视图的查询语句。当然要成功创建视图,还必须得到对所有源表的访问权限。,在定义视图的SELECT语句中,我们可以简单地选择指定源表中的行和列,还可以使用下面的对象和这些对象的组合来创建视图:单个表,多个表,另一个视图,其他多个视图,视图和表的组合。,三、创建视图,1、,创建列的别名,创建视图时,如果用户没有特别指定视图中的列名,视图列将继承SELECT语句中源表的列名。但是如果视图中的列是通过计算得出的或者有多个列具有相同的名称,就必须要给视图列命名,这个名称也叫源表中的列的别名。指定的列名清单放在CREATE语句的视图名称之后的括号中。,CREATE VIEW Manager(mgr_name,sex,id,dno),AS,SELECT name,sex,id,dno,FROM Employee e,Department d,WHERE e.id=d.mgrid,三、创建视图,2、单表视图,如果视图只有一个源表,那么我们就说这个视图是单表视图。单表视图通常在一个包含有很多行或者很多列的表的基础上创建使用,通过单表视图用户可以对它的源表中最常用的数据子集进行查询,而不用去理会那些用不着的数据行和列,使操作对象看起来更加简洁好用。,如果一个表中的数据只有特定的行和列允许用户使用的话,在这个表上建立单表视图也可以保证数据库的安全性。赋予用户对视图的访问权,而不允许他们访问表可以很好地防止用户越权访问。,CREATE VIEW Worker(name,sex,id),AS,SELECT name,sex,id,FROM Employee,WHERE SUBSTR(TO_CHAR(id),2,3)!=001,三、创建视图,3、,使用连接的视图,视图可以在单表上建立,也可以在多个表的基础上创建。使用在多个表上创建的视图,用户就不必考虑自己使用的数据来自于哪个数据表或者需要在那个表中查找自己需要的数据。需要做的就是,在视图中使用这些数据,就好像它们一直就存储在同一个表上一样。下面我们介绍使用连接的视图。要创建一个使用连接的视图,只需使用多表连接查询来定义。,CREATE VIEW Mgr_Dep(No,department,Manager,mgrid),AS,SELECT d.dnumber,d.dname,e.name,e.id,FROM Department d,Employee e,WHERE d.mgrid=e.id,三、创建视图,4、,使用连接的视图,用户可以使用包含了子查询的查询语句来定义一个视图。这些子查询的使用方法和它们在常规的SELECT语句中的使用一样,在本书第8章中详细讨论了子查询的使用,读者可以参考。下面我们举几个简单的例子来说明子查询在视图创建中的运用。,CREATE VIEW Worker(name,sex,id),AS,SELECT name,sex,id,FROM Employee,WHERE SUBSTR(TO_CHAR(id),2,3)!=,001,CREATE VIEW Worker(name,sex,id),AS,SELECT name,sex,id,FROM Employee,WHERE name NOT IN,SELECT name,FROM Manager,CREATE VIEW Up_Dep_Worker,AS,SELECT name,sex,id,salary,FROM Employee,WHERE dno IN,(SELECT dno,FROM Employee,GROUP BY dno,HAVING AVG(salary)4000),四、更新视图,视图可更新性的最基本的规则:视图中的每一行数据都必须映射到视图使用的基本表的单独一个记录行上。,下面列出了ANSI标准所不允许进行更新操作的几种常见的会破坏这个基本规则的视图创建和操作方式:,(1)视图的列中没有包括源表中有NOT NULL定义的表列,(2)在定义视图的查询语句SELECT后的选择清单中使用了数学表达式来定义视图列,(3)在定义视图的查询语句SELECT后的选择清单中使用了函数调用或是聚集函数来定义视图列,(4)在视图创建中对GROUP BY和HAVING的使用,(5)在视图创建的选择清单中使用了DISTINCT运算符,(6)在创建视图的查询语句中的任意位置引用了不可更新视图,(7)在创建视图的查询语句中使用了子查询或者大部分类型的连接,五、删除视图,删除视图的操作很简单,使用DROP VIEW命令来完成这个操作。,DROP VIEW view_name,六、视图的应用,1、简化复杂的查询,如果我们在对数据库中的数据进行某种操作时,需要执行一系列的查询语句,会发现这么做是很复杂的,这种情况下,我们可以使用合适的视图来简化查询。,2、,从多个数据源汇总数据,如果在创建视图的查询语句中直接连接多个数据源表,或通过其它的视图来间接连接多个数据源表,我们就可以利用该视图来汇总这些源表上的数据。使用这种方法,可以简化我们很多针对这些数据表的查询。,六、视图的应用,3、,单位转换,有时候,我们将数据库中的数据提供给用户时,需要对数据进行一些单位转换,以适应不同用户对数据单位的不同要求。,4、保障安全性,数据库系统的用户可以分为好几类,每类用户都有一组在数据库系统各个元素上的权限。其中,数据库管理员DBA可以拥有所有的权限。如果一个用户可以随意访问不在他权限范围内的数据内容,将给数据库的管理带来很大的安全隐患。数据库管理系统中有专门负责安全性管理的部分,它依据不同用户在数据库各元素上所拥有的权限来允许或禁止用户对这些元素的访问。使用视图可以很好地保障数据库系统的安全性,因为我们可以通过在创建它的查询语句中控制选择清单的内容来限制使用该视图的用户允许访问的数据范围,然后通过授权语句授予用户通过视图对这些数据的操作权限,再保证用户对源表没有直接访问权,就可以完全使用视图来保障这些用户不会进行越权操作了。,本章小结:,了解视图的优缺点,掌握创建、更新和删除视图的方法,掌握视图的应用,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!