在MySQL中管理视图

时间:2019-11-20 08:52:14  来源:igfitidea点击:

简介:在本教程中,您将学习如何在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中管理视图,包括显示,修改和删除视图。