视图

视图

  1. 视图是一张虚拟表,它表示一张表的部分或多张表的综合的结构。
  2. 视图仅仅是表结构,没有表数据。视图的结构和数据建立在表的基础上。

作用

  1. 筛选数据,防止未经许可访问敏感数据
  2. 隐藏表结构
  3. 降低SQL语句的复杂度

一、演示数据

-- 学生表
create table student (
	id int unsigned primary key,
	name varchar(20) not null,
	age tinyint unsigned not null
);
-- 成绩表
create table mark (
	id int unsigned primary key,
	chinese int,
	math int,
	english int
);
-- 学生表数据
insert into student values(1, '张三', 21);
insert into student values(2, '李四', 22);
insert into student values(3, '王二', 23);
-- 成绩表数据
insert into mark values(1, 80, 75, 85);
insert into mark values(2, 90, 65, 95);
insert into mark values(3, 40, null, null);

二、创建视图

# 创建视图,所有的学科都有参加考试的学生
create view vw_student as select * from student where id in(select id from mark where chinese is not null and math is not null and english is not null);
# 查看表格
show tables;
+----------------+
| Tables_in_test |
+----------------+
| mark           |
| student        |
| vw_student     |
+----------------+

三、使用视图

视图是一张虚拟表,视图的用法和表的用法一样

select * from vw_student;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | 张三   |  21 |
|  2 | 李四   |  22 |
+----+--------+-----+

四、查看视图的结构

desc 视图名;

五、查看创建视图的语法

show create view 视图名;

六、查看所有的视图

# 查看所有表也可以查看到视图
show tables;

七、修改视图

# 将vm_student视图修改为所有的学生信息
alter view vw_student as select * from student;
# 查看
select * from vw_student;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | 张三   |  21 |
|  2 | 李四   |  22 |
|  3 | 王二   |  23 |
+----+--------+-----+

八、删除视图

drop view 视图名;

九、视图的算法

  • merge:合并算法,将视图的语句和外层的语句合并后在执行。
  • temptable:临时表算法,将视图生成一个临时表,再执行外层语句。
  • undefined:未定义,MySQL到底用merge还是用temptable由MySQL决定,这是一个默认的算法,一般视图都会选择merge算法,因为merge效率高。
create algorithm=temptable view 视图名
as
	select 语句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值