zoukankan      html  css  js  c++  java
  • 视图

    1. 概述

    数据请采用我的另一篇文章《SQL的学习》中的数据。
    环境MySQL5.7,workbench。
    视图

    2. 历程

    也不知道怎么回事儿,在视图这一节,突然就想明白了联结。

    所谓的表的联结,其实就是通过两个表中相同的主键值,来将两个表的信息放到一个表中。或者多个表的信息放到一个表中。

    而我们这里所要说的视图,就相当于把联结的表保存下来了,在别处的查询中我可以使用视图。说白了,视图,就是一个表,不过,是我们由源数据组成的表加工出来的表。
    这也说明了,视图是实时更新的,因为它是由查询得到的。


    3. 视图

    3.1 创建视图

    USE test;       #用必知必会d的数据创建的数据库
    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;
    

    创建视图时,需要注意视图的可重复使用性;
    你可以注意到,通过创建视图,我们可以很好地降低联结的复杂性,从而简化联结及查询。

    3.2 删除视图

    DROP VIEW  ProductCustomers;
    

    3.3 格式化检索数据

    上面我们说了,视图的本质其实就是一个表,或者说一个查询结果,因此当我们需要重复使用某一种格式的数据的时候,我们可以通过视图来创建一个格式化后的表。

    USE test;
    CREATE VIEW Vendorlocations AS
    SELECT CONCAT(RTRIM(vend_name),'(',RTRIM(vend_country),')' )#具体请查看“连接”
    AS vend_title
    FROM vendors;    #创建视图
    SELECT * FROM Vendorlocations;  #查看
    

    结果

    3.4 视图过滤

    因为是一种查询结果,显而易见,它也可以使用where子句。

    CREATE VIEW CustomerEmaillist AS
    SELECT cust_id,cust_name,cust_email
    FROM customers
    WHERE cust_email IS NOT NULL;   #过滤没有电子邮件地址的顾客。
    SELECT * FROM CustomerEmaillist;
    

    结果

    3.5 计算字段

    CREATE VIEW zongjia AS
    SELECT
    order_num,
    prod_id,
    quantity,
    item_price,
    quantity * item_price AS expanded_price #进行计算
    FROM orderitems;
    SELECT * FROM zongjia WHERE order_num = 20008;
    

    结果


    所以说,就我目前看来(初学),我觉得SELECT能做的,视图都可以。
    用书上总结的话来说:

    1. 视图是虚拟的表。
    2. 它是一种SELECT语句的封装,从而简化数据处理,格式化,进而达到保护基础数据的目的。
  • 相关阅读:
    ubuntn16.04指令
    [Array]283. Move Zeroes
    spring框架
    Redis服务器搭建/配置/及Jedis客户端的使用方法
    [Java Performance] 数据库性能最佳实践
    iOS 序列化和反序列化
    SSH 获取GET/POST参数
    MAC中安卓开发环境的下载
    MAC OS下使用OpenSSL生成私钥和公钥的方法
    如何使用TestFlight进行Beta测试
  • 原文地址:https://www.cnblogs.com/sunshinewang/p/6869968.html
Copyright © 2011-2022 走看看