【MYSQL】-1 使用视图

作者: silent_eyes_77 | 来源:发表于2019-02-10 15:16 被阅读14次

本周学习了<mysql 必知必会>,本文对于之前还未掌握的视图操作进行总结。

视图是什么?

视图是用于查看存储在别处的数据的一种设施,其本身不包含数据;

视图有什么作用?

1)重用sql语句
2) 简化复杂的sql操作
3)可以只使用表的组成部分,而非整个表
4)保护数据。可以给用户授予表特定部分的访问权限,而不是整个表的访问
5)更改数据格式和表示。视图可以返回与底层表的表示和格式不同的数据

视图使用规则

1)唯一命名
2)不限创建数目
3)创建视图要有权限
4)视图可以嵌套
5)order by 出现在视图语句和select 语句中,select 优先级更高
6)不能索引,不能有关联的触发器,无默认值

视图的几个应用

  1. 利用视图创建复杂的链接

    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 cust_name,cust_contact from productcustomers
    -> where prod_id='TNT2';
    

    +----------------+--------------+
    | cust_name | cust_contact |
    +----------------+--------------+
    | Coyote Inc. | Y Lee |
    | Yosemite Place | Y Sam |
    +----------------+--------------+

对于常用操作,可以用视图格式化检索出的数据:
select 在单个组合计算列中返回供应商名和位置

1)不用视图:

select concat(RTrim(vend_name),'(',RTrim(vend_country),')')
    -> as vend_title
    -> from vendors
    -> order by vend_name;

+------------------------+
| vend_title |
+------------------------+
| ACME(USA) |
| Anvils R Us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| LT Supplies(USA) |
+------------------------+
6 rows in set (0.00 sec)

2)用视图:现在,假如经常需要这个格式的结果,不必在每次需要的时候执行联结,创建一个视图,每次需要的时候使用它即可。为把此语句转换为视图,可以按如 下进行

create view vendorlocations 
    -> as select concat(RTrim(vend_name),'(',RTrim(vend_country),')')
    ->    as vend_title
    -> from vendors
    -> order by vend_name;

select * from vendorlocations;

+------------------------+
| vend_title |
+------------------------+
| ACME(USA) |
| Anvils R Us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| LT Supplies(USA) |
+------------------------+

  1. 使用视图过滤不想要的数据:发送邮件时,过滤没有邮件地址的用户
 create view cutomeremaillist as 
    -> select cust_id,cust_name,cust_email
    -> from customers
    -> where cust_email is not null;
select * from cutomeremaillist;

+---------+----------------+---------------------+
| cust_id | cust_name | cust_email |
+---------+----------------+---------------------+
| 10001 | Coyote Inc. | ylee@coyote.com |
| 10003 | Wascals | rabbit@wascally.com |
| 10004 | Yosemite Place | sam@yosemite.com |
+---------+----------------+---------------------+

3 . 使用视图简化计算字段
1) 无视图操作:

select prod_id,quantity,item_price,quantity*item_price as expanded_price
   -> from orderitems
   -> where order_num=20005;

+---------+----------+------------+----------------+
| prod_id | quantity | item_price | expanded_price |
+---------+----------+------------+----------------+
| ANV01 | 10 | 5.99 | 59.90 |
| ANV02 | 3 | 9.99 | 29.97 |
| TNT2 | 5 | 10.00 | 50.00 |
| FB | 1 | 10.00 | 10.00 |
+---------+----------+------------+----------------+

create view orderitemsexpanded as 
    -> select order_num,prod_id,quantity,item_price,quantity*item_price 
    -> as expanded_price
    -> from orderitems;

select * from orderitemsexpanded where order_num=20005;

+-----------+---------+----------+------------+----------------+
| order_num | prod_id | quantity | item_price | expanded_price |
+-----------+---------+----------+------------+----------------+
| 20005 | ANV01 | 10 | 5.99 | 59.90 |
| 20005 | ANV02 | 3 | 9.99 | 29.97 |
| 20005 | TNT2 | 5 | 10.00 | 50.00 |
| 20005 | FB | 1 | 10.00 | 10.00 |
+-----------+---------+----------+------------+----------------+

相关文章

  • 【MYSQL】-1 使用视图

    本周学习了,本文对于之前还未掌握的视图操作进行总结。 视图是什么? 视图是用于查看存储在别...

  • MySQL View 视图分析

    为什么MySQL中很少使用视图功能? 首先MySQL使用视图有什么好处: 清晰简单,可以让简单的语句逻辑更清晰 可...

  • mysql视图,触发器,存储过程优缺点及应用分析

    mysql视图,触发器,存储过程优缺点及应用分析 视图 mysql使用较少,是sql server和orcale使...

  • 数据库学习笔记——18使用视图

    1 视图 MySQL 5添加了对视图的支持。 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的...

  • MySQL使用视图

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

  • MySQL面试题 | 附答案解析(十一)

    视图 1. 为什么要使用视图?什么是视图? 为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系...

  • MySQL之视图VIEW

    本文主要介绍MySQL中的视图, 在什么情况下使用视图。 I、视图介绍 1.1 视图的初步理解 视图是虚拟的表,与...

  • mysql高级:视图、事务、索引

    # mysql高级:视图、事务、索引 * 视图 * 事务 * 索引 * 账户管理 * 主从 ## 1.视图 动态抽...

  • MySQL数据库高级操作一

    前言 MySQL增删改查基本操作后,为了优化数据库还可使用视图、事务、索引等数据库操作。 1、视图——SQL语句查...

  • MySQL——使用视图(十五)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQ...

网友评论

    本文标题:【MYSQL】-1 使用视图

    本文链接:https://www.haomeiwen.com/subject/ibnteqtx.html