MYSQL中视图的用法介绍(代码示例)
本篇文章给大家带来的内容是关于MYSQL中视图的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、什么是视图
执行一条SQL,将结果集保存在一张虚拟表中
(相关推荐:MySQL教程)
2、为什么要使用视图
重复利用SQL语句
简化SQL查询,快速取数据
只用知道表的部分结构
保护数据,根据特定授权
更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。
注意事项 " 在视图创建后,可以用与表基本相同的方式使用(查询、过滤、排序数据、与其他视图或连结、(添加、更新)) " 视图只是用来查看存储在别处的数据的设施,本身不包含数据,返回的数据也是从其他表检索出来的。 " 因为视图本身不包含数据,索引多个表连结或嵌套可能存在性能问题,需测试
3、规则和限制
表名必须唯一(与其他视图和表)
创建视图没有限制
足够权限
视图可以嵌套,可以从其他视图查询来构造一个视图
如果视图和从视图中查询都有order by,视图中的order by将被覆盖
视图不能索引
视图可以和表一起使用
4、使用视图
创建视图 create view
查看创建视图的语句。Show create view viewname
删除视图 drop view viewname
更新视图,1 泾 先drop后create 2 泾 直接用create or replace view
利用视图简化复杂的联结查询
5、利用视图简化复杂的联结查询
创建视图CREATE VIEW productcustomers ASSELECT cust_name, cust_contact, prod_idFROM customers, orders, orderitemsWHERE customers.cust_id = orders.cust_idANDorderitems.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_titlefrom vendors order by vend_name;如果经常用到这个格式的话,可以创建一个视图CREATE VIEW vendorlocations ASSELECTconcat ( rtrim( vend_name ), '(', rtrim( vend_country ), ')' ) AS vend_title FROMvendors ORDER BYvend_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查询SELECTprod_id,quantity,item_price,quantity * item_price AS expanded_price FROMorderitemsWHERE order_num=20005;创建视图CREATE VIEW orderitemsexpanded ASSELECTorder_num,prod_id,quantity,item_price,quantity * item_price AS expanded_price FROMorderitemsWHERE order_num=20005;使用视图SELECT*FROMorderitemsexpandedWHERE order_num=20005;9、更新视图
通常,视图是可以更新的(insert、update、delete)。更新视图将更新基表。如果视图中有以下定义将不能被更新。1. 分组(group by 和 having)2. 联结3. 自查询4. 并5. 聚合函数(min()、count()、sum()等)6. Distinct7. 导出(计算)列所以视图最好直接使用select查询。以上就是MYSQL中视图的用法介绍(代码示例)的详细内容,更多请关注小潘博客其它相关文章!