zoukankan      html  css  js  c++  java
  • mysql中,什么是视图,视图的作用是什么?

    需求描述:

      在看mysql的视图,对于视图的定义,进行基本的了解,在此记录下.

    概念解释:

      视图:存储的查询语句,当调用的时候,产生结果集,视图充当的是虚拟表的角色.

    测试过程:

    说明:

    • 如果要对一张表或者多张表进行查询,可以通过写复杂的SQL语句来实现
    • 如果要这些SQL语句存储为视图,那么查询的时候,就直接查询这个视图就可以了.

    1.创建表,插入数据,并且执行查询

    mysql> CREATE TABLE t (qty INT, price INT);
    Query OK, 0 rows affected (0.09 sec)
    
    mysql> INSERT INTO t VALUES(3, 50), (5, 60);
    Query OK, 2 rows affected (0.01 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM t;
    +------+-------+
    | qty  | price |
    +------+-------+
    |    3 |    50 |
    |    5 |    60 |
    +------+-------+
    2 rows in set (0.00 sec)

    2.创建视图,视图中的查询根据具体的情况有相应的表达式

    mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
    Query OK, 0 rows affected (0.01 sec)

    3.查询视图v

    mysql> SELECT * FROM v;
    +------+-------+-------+
    | qty  | price | value |
    +------+-------+-------+
    |    3 |    50 |   150 |
    |    5 |    60 |   300 |
    +------+-------+-------+
    2 rows in set (0.00 sec)

    对于视图的查询也可以加上过滤条件:

    mysql> SELECT * FROM v WHERE qty = 5;
    +------+-------+-------+
    | qty  | price | value |
    +------+-------+-------+
    |    5 |    60 |   300 |
    +------+-------+-------+
    1 row in set (0.00 sec)

    备注:所以仅仅查询这个视图,和执行定义语句中的SQL语句的效果相同.即就相当于查询了一张表.同时,视图也就等同于后面的查询语句,视图是存储在数据库中的,所以就理解了开头说的存储的查询.

    4.查看当前库下所有的视图

    mysql> show full tables where table_type like 'VIEW';
    +----------------+------------+
    | Tables_in_test | Table_type |
    +----------------+------------+
    | v              | VIEW       |
    | vw_01          | VIEW       |
    +----------------+------------+
    2 rows in set (0.00 sec)

    5.基于其他的视图来创建视图

    mysql> select * from vw_01;  #vw_01是一个视图.
    +---+------+
    | a | b    |
    +---+------+
    | 1 | NULL |
    | 2 | NULL |
    | 3 | NULL |
    | 4 | NULL |
    +---+------+
    4 rows in set (0.00 sec)
    
    mysql> create view v01 as select a,b from vw_01;  #基于视图来创建视图,也就是说,视图定义中的SELECT查询的是另外的视图.
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> select * from v01;
    +---+------+
    | a | b    |
    +---+------+
    | 1 | NULL |
    | 2 | NULL |
    | 3 | NULL |
    | 4 | NULL |
    +---+------+
    4 rows in set (0.00 sec)

    文档创建时间:2018年6月26日17:14:10

  • 相关阅读:
    关于上传的种种(一)
    由SharePoint:ChangeContentType想到的
    关于上传的种种(二)
    关于上传的种种(三)
    SharePoint 2013 Suite Bar
    SharePoint 2013 商城
    自定义列表默认的视图文件
    InfoPath表单与SPD无代码工作流(一)
    列表的展示分页
    无处不在的SharePoint按钮(二)
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/9230153.html
Copyright © 2011-2022 走看看