目录
一.问题
对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改
变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦
解决办法:定义视图
二.视图是什么
- 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
- 视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
- 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
三.定义视图
建议以v_开头
create view 视图名称 as select语句;
例子:
mysql> create view V_ke as select age from school_student;
Query OK, 0 rows affected (0.18 sec)
四.查看视图
查看表会将所有的视图也列出来
show tables;
例子:
mysql> show tables ;
+------------------+
| Tables_in_school |
+------------------+
| V_ke |
| school_student |
+------------------+
2 rows in set (0.00 sec)
五.使用视图
视图的用途就是查询
select * from 视图名称
mysql> select * from V_ke;
+------+
| age |
+------+
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
+------+
5 rows in set (0.10 sec)
六.删除视图
drop view 视图名称;
mysql> create view v_keke as select sex from school
Query OK, 0 rows affected (0.09 sec)
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| V_ke |
| school_student |
| v_keke |
+------------------+
3 rows in set (0.00 sec)
mysql> select * from v_keke;
+------+
| sex |
+------+
| 男 |
| 男 |
| 女 |
| 女 |
| 男 |
+------+
5 rows in set (0.00 sec)
mysql> drop view v_keke;
Query OK, 0 rows affected (0.32 sec)
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| V_ke |
| school_student |
+------------------+
2 rows in set (0.00 sec)
七.不能对视图做增删改操作,只能查询操作。
八.视图的作用
- 提高了重要性,就像一个函数
- 对数据库重构,却不影响程序的运行
- 提高了安全性能,可以对不同的用户
- 让数据更加清晰
我们可以用视图保存数据库的查询结果,进行对比整理