使用视图

一、视图

  视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。

二、使用视图的意义

  1.替代重复的SQL语句; 
  2.简化复杂的SQL操作。在编写查询后,可以方便地重用它,而不必知道它的基本查询细节; 
  3.使用表的组成部分而不是整个表; 
  4.保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限; 
  5.更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。

三、视图的规则和限制

  1.与表名一样,视图必须唯一命名; 
  2.可创建的视图数目没有限制; 
  3.为了创建视图必须有足够的权限; 
  4.视图可以嵌套,即可以从其他视图中检索数据的查询来构造一个视图; 
  5.ORDER BY可以用在视图中,但如果从该视图检索数据的SELECT语句中也含有ORDER BY,那么视图中的ORDER BY将被覆盖; 
  6.视图不能索引,也不能有关联的触发器或默认值; 
  7.视图可以和表一起使用。

四、使用视图

1.创建视图 

  视图用CREATE VIEW语句来创建。可以使用SHOW CREATE VIEW viewname;来查询创建视图的语句。下面为创建视图的例子:

CREATE VIEW productCustomers AS
SELECT cust_name, cust_contact, prod_id
FROM customers, orders, orderitems
WHERE customers.cust_id = orders.cust_id AND
      orderitems.order_num = orders.order_num;

使用下列语句来查看一下创建的视图:

SELECT *
FROM productCustomers

执行结果: 

这里写图片描述

可以检索订购了产品TNT2的客户信息:

SELECT cust_name, cust_contact
FROM productCustomers
WHERE prod_id = 'TNT2';

执行结果: 

这里写图片描述

2.删除视图 

  使用DROP删除视图,其语法为DROP VIEW viewname;下列语句将删除视图productCustomers:

DROP VIEW productCustomers;
删除后,若再想检索视图中的数据是将报错,如下所示: 

这里写图片描述

3.更新视图 

  更新视图时,可以先用DROP删除视图,再用CREATE创建视图。也可以直接用CREATE OR REPLACE VIEW。如果要更新的视图不存在则会创建一个视图,若存在则会替换原来的视图。

如果视图定义中有以下操作,则不能进行视图的更新:

分组(使用GROUP BY和HAVING);

联结;

子查询;

并;

聚集函数(Min()、Count()、Sum()等);

DISTINCT。

一般的,应该将视图用于检索(SELECT语句),而并不用于更新(INSERT、UPDATE、DELLETE)。



猜你喜欢

转载自blog.csdn.net/wangjian530/article/details/80560037
今日推荐