1.视图的引入
<1,视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。
<2,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。
❤️,使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

2.视图的作用
<1,使操作简便化;
<2,增加数据的安全性;
❤️,提高表的逻辑独立性;

3.在单表上创建视图
语法:

CREATE [ ALGORITHM ={ UNDEFIEND | MERGE | TEMPTABLE }]
VIEW 视图名 [ ( 属性清单) ]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

对其中参数的解释:
1.ALGORITHM 是可选参数,表示视图选择的算法;

2.“视图名”参数表示要创建的视图的名称;

3.“属性清单”是可选参数,其指定了视图中各种属性的名词,默认情况下与 SELECT 语句中查询的属性相同;

4.SELECT 语句参数是一个完整的查询语句,标识从某个表查出某些满足条件的记录,将这些记录导入视图中;

5.WITH CHECK OPTION 是可选参数,表似乎更新视图时要保证在该视图的权限范围之内;

6.ALGORITHM 包括 3 个选项 UNDEFINED、MERGE 和TEMPTABLE。
其中:
(1),UNDEFINED 选项表示 MySQL 将自动选择所要使用的算法;
(2),MERGE 选项表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;
(3),TEMPTABLE 选项表示将视图的结果存入临时表,然后使用临时表执行语句;

7.CASCADED是可选参数,表示更新视图时要满足所有相关视图和表的条件,该参数为默认值;LOCAL 表示更新视图时,要
满足该视图本身的定义条件即可;

4.在多表上创建视图
eg:

CREATE VIEW v5(a,b) AS SELECT tb.bookName,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.id = tby.id;
//这里用了表t_book和t_bookType,并都起了别名tb,tby,给字段也起了别名a和b。

5.查看视图
1 DESCRIBE 语句查看视图基本信息(指字段)
eg:

DESC v5;   //简写的

2 SHOW TABLE STATUS语句查看视图基本信息(所有)
语法:

SHOW TABLE STATUS LIKE 视图名/表名 
 eg:
 SHOW TABLE STATUS LIKE 'v5';

3 SHOW CREATE VIEW 语句查看视图详细信息
eg:

SHOW CREATE VIEW v5;

3 在 views 表中查看视图详细信息
views 表是系统内的表,会显示所有视图
选择information_schema数据库 -> 表 ->views

6.修改视图
1.重新改变视图的字段等(会全部改变)
语法:

CREATE OR REPLACE [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 视图名 [( 属性清单 )]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

2.返回修改操作,(退回一步)
语法:

ALTER [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 视图名 [( 属性清单 )]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

7.更新视图
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟的表,其中没有数据。通过视图更新时,都是转换基本表来更新。更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。

1 插入(INSERT)
语法:

INSERT INIO 视图名 VALUES(值1,值2,值3...);

2 更新(UPDATE)
语法:

UPDATE 视图名 	SET 字段1 = 数值1, 字段2 = 数值2... WHERE 条件表达式

3 删除(DELETE)
语法:

DELETE FROM 视图名 WHERE 条件表达式

8.删除视图
删除视图是指删除数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据;
语法:

DROP VIEW [ IF EXISTS ] 视图名列表 [ RESTRICT | CASCADE ];