zoukankan      html  css  js  c++  java
  • MySQL视图

    一、视图的概念

    ​ 视图是虚拟的表。它将select语句查询到的数据包装成一张虚拟的表。后续可以直接利用这张虚拟表而不必知道原有表的结构,从而能简化后续的SQL操作。

    【注】视图本身是不包含数据的。视图提供了一种MySQL的select语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。

    二、利用视图简化复杂的联结

    举例:

    create view productcustomers as
    select cust_name, cust_contact, prod_id
    from customers, orders, orderitems
    where customer.cust_id = orders.cust_id
    	and orderitems.order_num = orders.order_num;
    /*
    	这条语句创建了一个名为productcustomers的视图,它联结了三个表,返回了一张包含了已订购任意产品的所有客户	   的虚拟表。
    */
    
    select cust_name, cust_contact
    from productcustomers
    where prod_id = 'TNT2';
    -- 从视图中检索订购了产品'TNT2'的客户。
    

    ​ 可以看出,利用视图可以极大地简化复杂的SQL语句。一次创建出来的视图可以被多次重复使用。

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

    举例:

    create view vendorlocations as
    select concat(rtrim(vend_name), '(', rtrim(vend_country), ')')
    	as vend_title
    from vendors
    order by vend_name;
    /*
    	如果需要经常使用这个格式的结果,就可以创建一个这样的视图,这样不必每次都得执行字符串连接操作,只需要直接使	 用已有的视图即可。
    */
    
    select *
    from vendorlocation;
    -- 从视图中直接检索这个格式的结果即可。
    

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

    举例:

    create view customeremaillist as
    select cust_id, cust_name, cust_email
    from customers
    where cust_email is not null;
    /*
    	先利用where子句过滤掉cust_email为null的那些行,然后创建视图,就可以得到一张所有cust_email都不为空的	虚拟表了。
    */
    

    五、利用视图简化计算字段的使用

    举例:

    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;
    
  • 相关阅读:
    Linux日志管理系统rsyslog
    Linux访问权限控制及时间同步实践
    Linux系统自动化安装之cobbler实现
    【转】java取整和java四舍五入方法
    The web application [ ] registered the JDBC driver [net.sourceforge.jtds.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver
    Python学习笔记之函数式编程
    Java去重字符串的两种方法以及java中冒号的使用
    Python学习之字符串格式化
    Python学习之文件操作
    Python学习笔记之爬虫
  • 原文地址:https://www.cnblogs.com/jiajun107/p/12893380.html
Copyright © 2011-2022 走看看