创建视图:
CREATE [ OR REPLACE ] [ ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}
VIEW [ db_name. ] view_name [(column_list)]
AS select_statment
[ WITH [ CASCADED | LOCAL] CHECK OPTION ] ;
OR REPLACE : 若给定了此子句,表示该语句能够替换已有视图
ALGORITHM : 为可选参数,表示视图选择的算法
UNDEFINED : 表示MySQL将自动选择使用的算法
MERGE : 表示将使用视图的语句与视图含义合并起来,使视图定义的某一部分取代语句的对应部分。
TEMPTABLE : 表示将视图的结果存入临时表,然后使用临时表执行此局。
view_name : 表示要创建视图的名称
column_list : 可选参数,表示属性清单,指定了视图中各个属性名,在默认情况下,它与SELECT 语句中查询的属性相同
AS : 表示指定视图要执行的操作
select_statement : 表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中
WITH CHECK OPTION : 为可选参数,表示创建视图时要保证在该视图的额权限范围之内
CASCADED : 为可选出参数,表示创建视图时,需要满足于该视图有关的所有视图和表的条件,该参数为默认值。
LOCAL : 为可选参数,表示创建视图时只要满足该视图本身定义的条件即可
在但表中创建视图:
CREATE VIEW view_emp ( 所要查询的列名 )
AS
SELECT 所查询的列名 FROM 原表名 ;
在多表中创建视图:
CREATE VIEW view_emp (ID,NAME,SEX,ACE,DEPARTMENT,POS,EXPERENCE)
AS
SELECT 表1别名.查询列名,...,表二别名.查询列名
FROM 表一 别名 , 表二 表名
WHERE 查询条件 ;
查看视图的三种方式:
第一种:使用 DESCRIBE 语句查看视图的字段:
DESC 视图名;
第二种:使用 SHOW TABLE STATUS LIKE 语句查看视图 ;
SHOW TABLE STATUS LIKE '视图名';
第三种:使用 SHOW CREATE VIEW 语句查看视图;
SHOW CREATE VIEW 视图名;
修改视图的两种方式:
第一种:使用CREATE OR REPLACE VIEW 语句修改视图;
CREATE [ OR REPLACE ] [ ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}
VIEW view_name [(column_list)]
AS select_statment
[ WITH [ CASCADED | LOCAL] CHECK OPTION ] ;
注意:使用以上语法修改视图时,若所修改的视图不存在,则会创建一个视图。
第二种:使用 ALTER 修改视图;
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [ CASCAED | LOCAL] CHECK OPTION] ;
注意:修改视图时必须具备删除视图以及(第二张:创建视图)的权限,同时具备查询涉及到的SELECT权限
更新视图的三种方式:
因为视图是虚拟表,所以更新视图种的数据时实际上是在更新建立视图的基本表种的数据,
例如: 删除视图种的数据,基本表种的数据同样被删除, 因此在更新视图时要小心谨慎。
第一种: 使用UPDATE 语句修改视图更新;
UPDATE 视图名 SET 字段名1 = 值1 [,字段名2 = 值2,...] [ WHERE 条件表达式 ] ;
第二种: 使用INSERT 语句插入视图更新:
INSERT INTO 视图名 VALUES (值1,值2,...值N );
第三种: 使用 DELETE 语句删除视图更新:
DELETE FROM 表名 [WHERE 条件表达式];
删除视图:
DROP VIEW [ IF EXISTS ] 视图名 [ , 视图1 ] …[ RESTRICT | CASCADE ] ;
注意: 在以上语法格式种,视图名时要删除的视图名称,视图名称可以添加多个,各个视图名称之间用逗号隔开;
IF EXISTS (可选参数) 用于判断视图是否存在,若存在则删除。