data.png
一 : 视图
视图: view, 是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表, 虚拟表的结构来源不是自己定义, 而是从对应的基表中产生(视图的数据来源).
( 1 ) : 创建视图
基本语法
Create view 视图名字 as select语句; -- select语句可以是普通查询;可以是连接查询; 可以是联合查询; 可以是子查询.
创建单表视图
create view my_v1 as
select * from my_student;
创建多表视图
视图表中有多表的情况下,字段不能重复
create view my_v3 as
select * from my_student as s left join my_class c on s.c_id = c.id; -- id重复
ERROR 1060 (42S21): Duplicate column name 'id'
正确创建多表
create view my_v3 as
select s.*,c.c_name,c.room from my_student as s
left join my_class c
on s.c_id = c.id;
( 2 ) : 查看视图
查看表结构
show create view my_v3\G
show create table my_v3\G
*************************** 1. row ***************************
View: my_v3
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `my_v3` AS select `s`.`id` AS `id`,`s`.`number` AS `number`,`s`.`name` AS `name`,`s`.`sex` AS `sex`,`s`.`height` AS `height`,`s`.`c_id` AS `c_id`,`s`.`age` AS `age`,`c`.`c_name` AS `c_name`,`c`.`room` AS `room` from (`my_student` `s` left join `my_class` `c` on((`s`.`c_id` = `c`.`id`)))
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)
视图是一张虚拟表: 表, 表的所有查看方式都适用于视图: show tables [like]/desc 视图名字/show create table 视图名;
( 3 ) : 使用视图
使用视图主要是为了查询: 将视图当做表一样查询即可.
视图的执行: 其实本质就是执行封装的select语句.
( 5 ) : 修改视图
视图本身不可修改, 但是视图的来源是可以修改的.
修改视图: 修改视图本身的来源语句(select语句)
desc my_v1
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | 0 | |
| number | char(10) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| height | i