MySQL使用视图

说明:本文所使用的数据库样例表创建脚本下载地址: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 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。如果要更新的视图不存在则会创建一个视图,若存在则会替换原来的视图。

使用MySQL视图有以下几个优势: 1. 提高查询效率:视图是基于数据库中的数据生成的,因此在查询视图时,实际上是在查询底层的数据。如果底层数据进行了优化,视图也将会获得相应的优化效果。 2. 简化复杂查询:复杂或大量的数据操作通常比较复杂和耗时,通过创建视图,可以将复杂的查询转化为简单的查询,减少不必要的复杂操作,从而提高查询效率。 3. 隐藏数据:视图可以用来隐藏表中的某些数据,对于一些敏感信息或者需要保护的数据,可以通过视图来隐藏。 4. 保护数据:视图也可以用来保护数据,防止直接访问某些不应该被访问的数据表。 5. 保持数据安全:创建视图后,底层数据的修改不会立即反映到视图中,这有助于保护数据的安全性。 6. 灵活的数据库架构:视图可以非常灵活地组织数据库架构,比如在主表和辅助表中建立视图,方便对数据进行分类和组织。 7. 降低维护成本:使用视图可以减少直接对底层表的操作,从而降低维护成本。 需要注意的是,虽然视图有很多优势,但它们并不提供自己的存储空间,而是基于底层表的查询结果。因此,如果底层表的数据发生变化,视图的结果也会相应地变化。同时,由于视图是基于查询结果的,因此如果查询本身存在问题或者性能不佳,那么视图可能也无法提供预期的结果。因此,在使用视图时,需要对查询性能和底层表的稳定性进行适当的监控和管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值