154 lines
3.4 KiB
Markdown
154 lines
3.4 KiB
Markdown
# 视图
|
||
|
||
|
||
|
||
## 一、视图概述
|
||
|
||
虚拟表,是从数据库中一个或多个表中导出来的
|
||
|
||
简单,安全性,权限限制
|
||
|
||
|
||
|
||
## 二、创建视图(create view)
|
||
|
||
```mysql
|
||
create view 视图名 as 查询语句;
|
||
示例:
|
||
create view vt as select quantity,price,quantity*price from t;
|
||
```
|
||
|
||
![image-20220405082050293](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405082050293.png)
|
||
|
||
```mysql
|
||
create view 视图名(表中列新名称) as 查询语句;
|
||
示例:
|
||
create view vt2(qty,p,total) as select quantity,price,quantity*price from t;
|
||
```
|
||
|
||
![image-20220405082320391](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405082320391.png)
|
||
|
||
```mysql
|
||
在多个表中创建视图
|
||
create view vt4 as select stu.s_id,name,glass from stu join info on stu.s_id=info.a_id;
|
||
```
|
||
|
||
|
||
|
||
## 三、查看视图
|
||
|
||
### 1.describe查看视图基本信息
|
||
|
||
```mysql
|
||
desc vt4;
|
||
```
|
||
|
||
![image-20220405084010690](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405084010690.png)
|
||
|
||
### 2.show table status like'视图名'语句查看视图的基本信息
|
||
|
||
查询视图信息:
|
||
|
||
```mysql
|
||
show table status like 'vt4';
|
||
```
|
||
|
||
![image-20220405085355433](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405085355433.png)
|
||
|
||
查询结果,comment值为view说明该为视图,其他大部分信息为null说明是一个虚表
|
||
|
||
查询表信息:
|
||
|
||
```mysql
|
||
show table status like'stu';
|
||
```
|
||
|
||
![image-20220405085422810](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405085422810.png)
|
||
|
||
查询结果包含了存储引擎、行数等信息,comment信息为空,这是表和视图查询结果的区别
|
||
|
||
### 3.show create view 视图名:语句查看视图的详细信息(视图名、创建视图的语句等信息)
|
||
|
||
```mysql
|
||
show create view vt4;
|
||
```
|
||
|
||
![image-20220405090735295](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405090735295.png)
|
||
|
||
### 4.在views表中查询所有视图
|
||
|
||
```mysql
|
||
select * from information_schema.views;
|
||
```
|
||
|
||
|
||
|
||
## 四、修改视图
|
||
|
||
### 1.create ro replace view
|
||
|
||
```mysql
|
||
create ro replace view 视图名 as 查询语句;
|
||
示例:
|
||
create ro replace view vt as select * from t;
|
||
```
|
||
|
||
![image-20220405091444983](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405091444983.png)
|
||
|
||
### 2.alter view
|
||
|
||
```mysql
|
||
alter view 视图名 as 查询语句;
|
||
示例:
|
||
alter view vt as select price from t;
|
||
```
|
||
|
||
![image-20220405091450188](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405091450188.png)
|
||
|
||
###
|
||
|
||
## 五、更新视图(相当于更新基本表)
|
||
|
||
# 1.update
|
||
|
||
```mysql
|
||
update 视图名 set 字段名=新值;
|
||
示例:(表中数据跟随更改)
|
||
update vt set price=30;
|
||
```
|
||
|
||
![image-20220405091758090](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405091758090.png)
|
||
|
||
### 2.insert
|
||
|
||
```mysql
|
||
insert into 视图名 values(数据);
|
||
示例:
|
||
insert into vt values(80);
|
||
```
|
||
|
||
![image-20220405092415253](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405092415253.png)
|
||
|
||
### 3.delect
|
||
|
||
```mysql
|
||
delete from 视图名 where 条件;
|
||
示例:
|
||
delete from vt where price=80;
|
||
```
|
||
|
||
![image-20220405092640643](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405092640643.png)
|
||
|
||
## 六、删除视图
|
||
|
||
```mysql
|
||
drop view 视图名;
|
||
添加判断
|
||
drop view if exists vt;
|
||
```
|
||
|
||
![image-20220405093346162](https://yovinchen-1308133012.cos.ap-beijing.myqcloud.com/image-20220405093346162.png)
|
||
|
||
## 七、综合案例
|
||
|