视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。
为什么要使用视图?因为视图的诸多优点,如下:
1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。
视图2个用处,一个是方便查询,比如下面的例子:SQL>CREATE VIEW
2v_sale_report_sum
3 AS
4 SELECT
5sale_item,
6SUM(sale_money) AS sale_money
7 FROM
8sale_report
9 GROUP BY
10sale_item
View created.
SQL>SELECT * FROM v_sale_report_sum
不使用视图的话,你每查询一次,都要写一段很长的 SQL 语句。又是SUM 又是GROUP BY的。
有了视图以后,一行SQL就解决问题。
还有一个用处,就是安全方面上的设置需要。
比如 人力资源那里,有一个员工表,里面有
员工的姓名、性别、生日、籍贯、工作年限、工资、所属部门 等信息。
人力资源的人,希望你帮忙写一个2011年,工作排版表的程序,但是又不希望你“知道得太多”。
那么就创建一个视图
CREATE VIEW v_员工 AS
SELECT
姓名, 性别, 所属部门
FROM
员工表
然后就给你一个 v_员工 的 检索权限,让你去写 排班程序去了。
mysql 与 oracle 都有视图
procedure 也就是存储过程,也就是某些与数据库 *** 作比较紧密的 *** 作,写在存储过程里面,比写在 java 或者 C# 之类的外部,效果要好一些。
例如一个百货商店的数据库,每天晚上营业结束了,要统计销售额,然后计算每个商品分类下面,当天的营业额是多少,然后将统计数据,插入到 统计表中。
这些 *** 作,基本上就是 SELECT SUM / GROUP BY , 然后 INSERT INTO 的 *** 作。
直接在数据库内部处理就可以了。
没必要把一大堆查询结果,先传递到外边的一个 java 或者 c#写的客户端。
然后再通过 客户端传递一大堆的 INSERT INTO 语句回来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)