视图的作用和创建、查询

1、什么是视图

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

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

2、视图的好处

视图的好处,可以主要分为四点: 
我简单的说一下,希望你能明白。 

第一点: 
使用视图,可以定制用户数据,聚焦特定的数据。 

解释: 
在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话, 
采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没 
有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视 
图,以后他在查询数据时,只需select   *   from   view_caigou   就可以啦。 

第二点:使用视图,可以简化数据操作。 

解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要 
显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能 
会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我 
们只需要select   *   from   view1就可以啦~,是不是很方便呀~ 

第三点:使用视图,基表中的数据就有了一定的安全性 

因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以 
将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集 
合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改 
和删除,可以保证数据的安全性。 

第四点:可以合并分离的数据,创建分区视图 

随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很 
多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务 
情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些 
数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字, 
将各分公司的数据合并为一个视图。 

以上,就是我认为视图的作用,实际上很多公司都使用视图来查询数据的

http://www.cnblogs.com/chuanzhang053/p/9230153.html

3、视图的创建和查询

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值