需求描述:
在看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