博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL中视图的使用
阅读量:6371 次
发布时间:2019-06-23

本文共 1936 字,大约阅读时间需要 6 分钟。

1、什么是视图

执行一条SQL,将结果集保存在一张虚拟表中

2、为什么要使用视图

  1. 重复利用SQL语句
  2. 简化SQL查询,快速取数据
  3. 只用知道表的部分结构
  4. 保护数据,根据特定授权
  5. 更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。

注意事项

• 在视图创建后,可以用与表基本相同的方式使用(查询、过滤、排序数据、与其他视图或连结、(添加、更新))
• 视图只是用来查看存储在别处的数据的设施,本身不包含数据,返回的数据也是从其他表检索出来的。
• 因为视图本身不包含数据,索引多个表连结或嵌套可能存在性能问题,需测试

3、规则和限制

  1. 表名必须唯一(与其他视图和表)
  2. 创建视图没有限制
  3. 足够权限
  4. 视图可以嵌套,可以从其他视图查询来构造一个视图
  5. 如果视图和从视图中查询都有order by,视图中的order by将被覆盖
  6. 视图不能索引
  7. 视图可以和表一起使用

4、使用视图

  1. 创建视图 create view
  2. 查看创建视图的语句。Show create view viewname
  3. 删除视图 drop view viewname
  4. 更新视图,1⃣️ 先drop后create 2⃣️ 直接用create or replace view
  5. 利用视图简化复杂的联结查询

5、利用视图简化复杂的联结查询

创建视图

CREATE VIEW productcustomers ASSELECT cust_name, cust_contact, prod_idFROM customers, orders, orderitemsWHERE customers.cust_id = orders.cust_idAND   orderitems.order_num = orders.order_num

使用视图

SELECT cust_name, cust_contactFROM productcustomersWHERE prod_id = 'TNT2';

6、用视图重新格式化检索出的数据

select concat (rtrim(vend_name) , '(',rtrim(vend_country),')') as vend_title   from vendors order by vend_name;

如果经常用到这个格式的话,可以创建一个视图

CREATE VIEW vendorlocations ASSELECT    concat ( rtrim( vend_name ), '(', rtrim( vend_country ), ')' ) AS vend_title FROM    vendors ORDER BY    vend_name;

可以直接通过视图查询得出结果

SELECT * FROM vendorlocations;

7、用视图过滤不想要的数据

create view custmeremaillist ASSELECT cust_id ,cust_name,cust_emailfrom customerswhere cust_email is not NULL;

直接使用视图

SELECT * from custmeremaillist ;

8、使用视图与计算字段

mysql查询

SELECT    prod_id,    quantity,    item_price,    quantity * item_price AS expanded_price FROM    orderitemsWHERE order_num=20005;

创建视图

CREATE VIEW orderitemsexpanded ASSELECT    order_num,    prod_id,    quantity,    item_price,    quantity * item_price AS expanded_price FROM    orderitemsWHERE order_num=20005;

使用视图

SELECT    *FROM    orderitemsexpandedWHERE order_num=20005;

9、更新视图

通常,视图是可以更新的(insert、update、delete)。更新视图将更新基表。如果视图中有以下定义将不能被更新。

1. 分组(group by 和 having)2. 联结3. 自查询4. 并5. 聚合函数(min()、count()、sum()等)6. Distinct7. 导出(计算)列

所以视图最好直接使用select查询

以上内容均引自《mysql必知必会》

转载地址:http://pjyqa.baihongyu.com/

你可能感兴趣的文章
数据显示:2016年移动支付用户将突破10亿
查看>>
从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会
查看>>
MySQL:Innodb Handler_read_* 变量解释
查看>>
规则引擎在公安系统中的应用及作用
查看>>
Android桌面小部件AppWidget:音乐播放器桌面控制部件Widget(3)
查看>>
09 - JavaSE之线程
查看>>
云界十年群雄论剑,第十届中国云计算大会开幕
查看>>
Xshell用鼠标选中一段文字后自动换行的问题
查看>>
英特尔与Voke合作,用VR直播纽约时装周
查看>>
第132天:移动web端-rem布局(进阶)
查看>>
第135天:移动端开发经验总结
查看>>
Dozer 使用小结
查看>>
第153天:关于HTML标签嵌套的问题详解
查看>>
可通过区块链实现去中心化的三大网络巨头
查看>>
vue-element-admin 4.0.1 发布,后台集成方案
查看>>
一位耶鲁教授,在和大公司比谁最快造出第一台量子计算机
查看>>
TMS云应邀参加第六届西部国际物流博览会
查看>>
(四)开源IT资产管理系统-->部署GLPI与OCS数据同步
查看>>
Hyper-V Server 第二代虚拟机
查看>>
Oracle Sys用户用默认密码change_on_install 无法登录的问题(错误代码:ORA-28009)
查看>>