在MySQL中管理视图
简介:在本教程中,您将学习如何在MySQL中管理视图,包括显示,修改和删除视图。
显示视图定义
MySQL提供了SHOW CREATE VIEW语句,该语句显示视图的定义。
以下是SHOW CREATE VIEW语句的语法:
SHOW CREATE VIEW [database_name].[view_ name];
要显示视图的定义,您需要在SHOW CREATE VIEW子句后面指定其名称。
让我们为演示创建一个视图。
我们基于雇员表创建一个简单的视图,以显示公司的组织结构:
CREATE VIEW organization AS SELECT CONCAT(E.lastname, E.firstname) AS Employee, CONCAT(M.lastname, M.firstname) AS Manager FROM employees AS E INNER JOIN employees AS M ON M.employeeNumber = E.ReportsTo ORDER BY Manager;
要显示视图的定义,请使用SHOW CREATE VIEW语句,如下所示:
SHOW CREATE VIEW organization;
您也可以使用任何纯文本编辑器(例如记事本)显示视图的定义,以在数据库文件夹中打开视图定义文件。
例如,要打开组织视图定义,您可以找到具有以下路径的视图定义文件:\ data \ classicmodels \ organization.frm
但是,您不应直接在* .frm文件中修改视图。
修改视图
MySQL提供了两个语句可让您修改现有视图:ALTER VIEW和CREATE OR REPLACE VIEW
使用ALTER VIEW语句修改视图
创建视图后,您可以使用ALTER VIEW语句对其进行修改。
ALTER VIEW语句的语法类似于CREATE VIEW语句,不同之处在于CREATE关键字被ALTER关键字替换。
ALTER [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW [database_name]. [view_name] AS [SELECT statement]
以下语句通过添加电子邮件列来修改组织视图。
ALTER VIEW organization AS SELECT CONCAT(E.lastname,E.firstname) AS Employee, E.email AS employeeEmail, CONCAT(M.lastname,M.firstname) AS Manager FROM employees AS E INNER JOIN employees AS M ON M.employeeNumber = E.ReportsTo ORDER BY Manager;
要验证更改,可以从组织视图中查询数据:
SELECT * FROM Organization;
使用CREATE或REPLACE VIEW语句修改视图
除了ALTER VIEW语句之外,您还可以使用CREATE或REPLACE VIEW语句来创建或替换现有视图。
如果已经存在视图,MySQL会简单地修改视图。
如果该视图不存在,MySQL将创建一个新视图。
以下语句使用CREATE OR REPLACE VIEW语法基于employees表创建联系人视图:
CREATE OR REPLACE VIEW contacts AS SELECT firstName, lastName, extension, email FROM employees;
假设您想将职务标题列添加到联系人视图中,只需使用以下语句即可。
CREATE OR REPLACE VIEW contacts AS SELECT firstName, lastName, extension, email, jobtitle FROM employees;
删除视图
创建视图后,可以使用DROP VIEW语句将其删除。
下面说明了DROP VIEW语句的语法:
DROP VIEW [IF EXISTS] [database_name].[view_name]
IF EXISTS是语句的可选子句,它使您可以检查视图是否存在。
它可以帮助您避免删除不存在的视图的错误。
例如,如果要删除组织视图,则可以使用DROP VIEW语句,如下所示:
DROP VIEW IF EXISTS organization;
每次修改或删除视图时,MySQL都会将视图定义文件备份到/ database_name / arc /文件夹中。
万一意外修改或删除视图,可以从arc文件夹中获取其备份。
在本教程中,您学习了如何在MySQL中管理视图,包括显示,修改和删除视图。