![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg)
*****
## 视图
### 1\. 问题
对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦
<br>解决办法:定义视图
### 2\. 视图是什么
通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
<br>视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
<br>方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
### 3\. 定义视图
建议以v\_开头
~~~
create view 视图名称 as select语句;
~~~
### 4\. 查看视图
查看表会将所有的视图也列出来
~~~
show tables;
~~~
### 5\. 使用视图
视图的用途就是查询
~~~
select * from v_stu_score;
~~~
### 6\. 删除视图
~~~
drop view 视图名称;
例:
drop view v_stu_sco;
~~~
### 7.视图案例
```
select p.id,p.`province`,c.`city` from provinces as p inner join cities as c on p.`provinceid` = c.provinceid having p.`province` = '黑龙江省';
```
### 8.视图的修改
有下列内容之一,视图不能做修改
- select子句中包含distinct
- select子句中包含组函数
- select语句中包含group by子句
- select语句中包含order by子句
- where子句中包含相关子查询
- from子句中包含多个表
- 如果视图中有计算列,则不能更新
- 如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作
### 9\. 视图的作用
1. 提高了重用性,就像一个函数
2. 对数据库重构,却不影响程序的运行
3. 提高了安全性能,可以对不同的用户
4. 让数据更加清晰
- 1-数据库-基本使用
- 1-1-数据存储
- 1-2-数据库
- 1-3-MySQL安装和配置
- 1-4-SQL
- 1-5-数据完整性
- 1-6-命令行操作数据库
- 2-MySQL查询
- 2-1-MySQL查询
- 2-2-条件
- 2-3-聚合函数
- 2-4-分组
- 2-5-排序
- 2-6-分页
- 2-7-连接查询
- 2-8-子查询
- 2-9-自关联
- 3-MySQL外键
- 4-MySQL与Python交互
- 4-1-数据准备
- 4-2-数据表的拆分
- 4-3-Python操作MySQL
- 5-MySQL高级
- 5-1-视图
- 5-2-事务
- 5-3-索引
- 5-4-账户管理(了解)
- 6-数据库存储引擎
- 6-1-MyISAM存储引擎
- 6-2-Innodb存储引擎
- 6-3-CSV存储引擎
- 6-4-Memory存储引
- 7-MySQL基准测试
- 8-explain分析SQL语句
- 8-1-影响服务器性能的几个方面
- 8-2-explain分析SQL
- 9-索引优化案例
- 10-索引优化
- 11-排序优化
- 12-慢查询日志
- 13-Show Profile进行SQL分析
- 14-数据库锁
- 15-主从复制
- 16-MySQL分区表
- 17-MySQL操作规范