MySQL(1)CentOS彻底卸载MySQL
MySQL(2-1)CentOS安装MySQL详细操作
MySQL(2-2)CentOS7系统使用Docker安装mysql数据库
MySQL(3)MySQL中的数据类型和约束
MySQL(4)数据库常见操作命令详解
MySQL(5)数据表常见的操作命令详解
MySQL(6)数据表中数据的增删改查
MySQL(7)常用的基本查询命令详解
MySQL(8)常用的条件查询命令详解
MySQL(9)查询并排序详细用法
MySQL(10)聚合查询、分组查询、分页查询
MySQL(11)连接查询
MySQL(12)自关联(以省市县数据实例详解)
MySQL(13)子查询
MySQL(14)数据库的设计
MySQL(15)视图
MySQL(16)事务
MySQL(17)索引
MySQL(18)账户管理
1、视图简介
- 背景:对于复杂的查询,往往是有多个数据表进行关联查询而得到的,如果数据库因为需求等原因发生改变,为了保证查询出来的数据与之前的相同,则需要在多个地方进行修改,维护起来非常麻烦,解决这个问题的方案就是定义视图
- 视图,通俗的来说,就是select语句查询到的执行返回的结果集,视图是多若干张表的引用,一张虚表,查询语句执行的结果,视图不存储具体的数据,当基本的数据表中的数据发生了变化,视图中的数据也会跟着发生变化
2、视图使用流程
- 定义视图
create view 视图名称 as select语句;
如,根据之前创建的省市区的数据表,通过如下的命令可以查出来省-市-区结构,比如这里只查了江苏的情况:
那么这里其实就可以根据这个命令创建一个视图,这个视图中有三个字段,分别是省,市,和区,这样后续查询数据时就可以不用非常复杂的sql命令,而是直接从这个视图中查询了如:
mysql> create view v_province_city_dist as select p.atitle as province,c.atitle as city ,d.atitle as dist from areas as p, areas as c, areas as d where p.pid=0 and p.aid=c.pid and c.aid=d.pid;
- 查看视图
show tables;
- 使用视图
select * from v_province_city_dist where province='江苏省';
如下,视图看上去好像就是一个数据表一样
所以,当需求变化了,需要更新数据表的时候,为了适配已经开发的代码,可以通过创建一个视图来适配现有的代码,从而做到了数据库的修改与代码开发的解耦
这里还需要注意的是,视图是专门用例查看数据的,如果要修改数据,还是要取基本的数据表修改,而基础的数据表更新了,视图中查到的数据会同步更新的
- 删除视图
drop view xxx
如:
3、视图的作用
- 提高了重用性,就像一个函数接口一样
- 对数据库重构,却不影响程序的运行
- 提高了安全性能,可以对不同的用户
- 让数据更加清晰