美文网首页
《mysql必知必会》读书实战笔记22-使用视图

《mysql必知必会》读书实战笔记22-使用视图

作者: thinkact | 来源:发表于2017-03-21 12:22 被阅读23次

    第22章 使用视图

    22.1视图

    视图是虚拟的表,是几个表联结查询的动态结果。
    视图不存储数据,每次查看视图时,要重新执行查询底表语句,因此大型、复杂视图性能低。

    22.1.1 为何使用视图

    1.重用sql语句,简化复杂查询,不必重复编写查询联结细节。
    2.保护数据,可以给用户授权只能访问表的一部分数据。
    3.更改数据格式和表示,与底表可以不同。

    22.1.2 视图的规则与限制

    视图名字必须唯一,

    视图数目无限制,

    创建视图需要有相应表的访问权限,

    视图可以嵌套,即联结其他视图来创建新视图,

    视图中order by作用,会被底表中的order by覆盖,

    视图不能有索引、触发器、默认值,

    视图可以和表一起使用,即连接查询。

    22.2 使用视图

    创建视图:create view 视图名 as select ...

    查看创建视图的语句:show create view 视图名;

    删除视图:drop view 视图名;

    更新视图:
    a.先删除drop view,再创建;
    b. create or replace view 视图名,如果视图不存在就创建,视图存在就替换。

    视图作用:

    22.2.1 简化复杂的联结查询:

    例:创建视图-列出订购任意产品的客户:
    create view prod_cust as
    select cust_name,cust_contact,prod_id 
    from customers a,orders b,orderitems c
    where a.cust_id=b.cust_id and b.order_num=c.order_num;

    从视图查询订购任意产品用户:select * from prod_cust;

    22.2.2 用视图格式化查询数据

    例:将供应商名称和地址字段合并显示:create or replace view vend_location as 
    select concat(rtrim(vend_name), ' (',rtrim(vend_country),')') as vend_title from vendors order by vend_name;

    22.2.3 用视图过滤不想要的数据

    例:找出有电子邮件的客户:create or replace view cust_email as
    select cust_name,cust_email from customers where cust_email is not null;

    注意:where子句:底表中和视图中的wher子句,会合并,产生交集过滤的效果。

    22.2.4 使用视图与计算字段

    例:计算每个订单中的物品总价:create or replace view orderitems_expanded as
    select order_num,prod_id,quantity,item_price,quantity*item_price as expanded_price
    from orderitems;

    例:查询订单20005中的物品总价信息:select * from orderitems_expanded where order_num=20005;

    22.2.5 更新视图

    一般应将视图用于检索(select),而非更新。

    对视图的增、删、改(insert,delete,update),实际是对底表数据进行操作。

    大部分视图不能更新,有以下:分组(group by、having)、联结、子查询、并查询(组合查询union)、聚合函数(sum/count/min/max/avg)、唯一值(distinct)、计算列。

    《mysql必知必会》是一本好书,是一本sql语言入门书,豆瓣评分很高。

    作者是英国的Ben Forta,世界知名的技术作家,由人民邮电出版社发行,我觉得原作名: MySQL Crash Course,直译为:《MYSQL速成》更具畅销书潜质,只是比较俗吧,呵呵。

    书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。

    前三章是基础概念,讲了SQL和数据库的基本概念,Mysql数据库的概念和使用方法,第四章开始SQL实操练习,这里是本书的一些实操练习笔记,有兴趣的话可以按这个练习几遍,相信对新手会很有帮助,让你不经意间功力大增。

    相关文章

      网友评论

          本文标题:《mysql必知必会》读书实战笔记22-使用视图

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