MySQL使用视图

来源:互联网 发布:常熟淘宝培训南天老师 编辑:程序博客网 时间:2024/06/08 16:32

说明:本文所使用的数据库样例表创建脚本下载地址:https://github.com/zhaoxd298/mysql_scripts

一、视图

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

二、使用视图的意义

  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 ASSELECT cust_name, cust_contact, prod_idFROM customers, orders, orderitemsWHERE customers.cust_id = orders.cust_id AND      orderitems.order_num = orders.order_num;

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

SELECT *FROM productCustomers;      

执行结果:
这里写图片描述

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

SELECT cust_name, cust_contactFROM productCustomersWHERE prod_id = 'TNT2';

执行结果:
这里写图片描述

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

DROP VIEW productCustomers;

删除后,若再想检索视图中的数据是将报错,如下所示:
这里写图片描述

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