一、视图
1、视图:view。视图是一种有结构(有行有列的二维表结构)但没结果(结构中不真实存放数据)的虚拟表。虚拟表的结构来源不是自己定义的,而是从对应的基表中产生(视图的数据来源)
注:虚拟表的数据也不是从自己来的
二、创建视图
1、基本语法
-- 创建视图
-- select语句:可以是 普通查询|连接查询|联合查询|子查询
create view 视图名字 as select 语句;
(1)单表视图:基表只有一个
(2)多表视图:基表来源至少是两个
注:多表视图(基表有多张)的字段名不能重复。可以进行别名命名
-- 创建视图:单表视图
create view my_v1 as
select * from my_student;
-- 创建视图:多表视图
create view my_v2 as
select * from my_student as s left join my_class c on c.id = s.c_id;
-- 报错:Duplicate column name 'id',即 id重复(表中不允许出现同名字段)
-- 多表视图(基表有多张)的字段名不能重复(可以进行别名命名)
create view my_v2 as
select s.*, c.name as c_name, c.room from my_student as s
left join my_class c on c.id = s.c_id;
2、视图一旦创建,系统会在视图对应的数据库文件夹下创建一个对应的结构文件xxx.frm(视图不影响基表的存在,视图只是基于基表出现的东西)
注:视图名和表名不能重复。因为产生的都是xxx.frm结构文件
三、查看视图
1、视图是一张虚拟表,表的所有查看方式都适用于视图
-- 查看所有视图/表
show tables;
show tables like '视图名的模糊查询';
show views; -- 报错
-- 查看视图结构
desc 视图名;
-- 查看视图创建语句
show create table 视图名 [\G];
show create view 视图名 [\G];
四、使用视图
1、使用视图主要是为了查询数据,将视图当做表一样查询即可(视图不保存结果,但可以从基表拿到数据)
-- 使用视图,查询数据
-- 视图不保存结果,但可以从基表拿到数据
select * from my_v1;
2、视图的执行,其本质就是执行封装的select语句</