创建视图使用CREATE VIEW语句,基本语法格式如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION];
其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;
ALGORITHM表示视图选择的算法;
view_name为视图的名称,column_list为属性列;
SELECT_statement表示SELECT语句;
WITH [CASCADED | LOCAL] CHECK OPTION参数表示视图在更新时保证在视图的权限范围之内。
DESCRIBE
可以用来查看视图,具体的语法如下:
DESCRIBE 视图名;
查看视图的信息可以通过SHOW TABLE STATUS
的方法,具体的语法如下:
SHOW TABLE STATUS LIKE '视图名';
执行结果除了Comment的值为VIEW,其他的信息均为NULL,说明这是一个虚表。
使用SHOW CREATE VIEW
语句可以查看视图详细定义,语法如下:
SHOW CREATE VIEW 视图名;
在MySQL中,information_schema数据下的views表中存储了所有视图的定义。通过对views表的查询,可以查看数据库中所有视图的详细信息,查询语句如下:
SELECT * FROM information_schema.views
WHERE TABLE_NAME = '视图名';
在MySQL中修改视图可以使用CREATE OR REPLACE VIEW
语句,语法如下:
CREATE OR REPLACE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION];
修改视图的语句和创建视图的语句是完全一样的。当视图已经存在时,修改语句对视图进行修改;当视图不存在时,创建视图。
ALTER语句是MySQL提供的另外一种修改视图的方法,语法如下:
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION];
更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。基本操作语句与更新表相同。
当视图中含有如下内容时,视图的更新操作将不能被执行:
(1)视图中不包含基表中被定义为非空的列。
(2)在定义视图的SELECT语句后的字段列表中使用了数学表达式。
(3)在定义视图的SELECT语句后的字段列表中使用了聚合函数。
(4)在定义视图的SELECT语句中使用了DISTINCT、UNION、TOP、GROUP BY或HAVING子句。
删除一个或多个视图可以使用DROP VIEW语句,语法如下:
DROP VIEW [IF EXISTS]
view_name [,view_name]...
[RESTRICT | CASCADE];