Mysql 简明教程

MySQL - CREATE VIEW

MySQL 视图是一种虚拟表格。它们与一个相关名称一起存储在数据库中。它们允许用户执行以下操作:

  1. 以用户或用户类别觉得自然或直观的方式构建结构化数据。

  2. 限制对数据访问, 以便用户只能看到(有时可以修改)他们需要看到的内容, 不会更多。

  3. 总结可以用来生成报告的不同表中的数据。

视图可以从一个或多个表格建立,其中包含了所有或选择自其中的行列。除非已建立索引,否则视图不会存在于数据库中。

MySQL Create View Statement

创建视图只是使用一个查询创建一张虚拟表。视图是存储在数据库中并拥有关联名称的一条 SQL 语句。它实际上是通过预定义 SQL 查询形成的一张表。

Syntax

以下是 Create View 语句的语法:

CREATE VIEW view_name AS select_statements FROM table_name;

Example

假设我们使用下面的 Select 语句创建了一张表:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR(15) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS VARCHAR(25),
   SALARY DECIMAL(10, 2),
   PRIMARY KEY(ID)
);

让我们在以上创建的表中插入 7 条记录:

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', '32', 'Ahmedabad', 2000),
(2, 'Khilan', '25', 'Delhi', 1500),
(3, 'Kaushik', '23', 'Kota', 2500),
(4, 'Chaitali', '26', 'Mumbai', 6500),
(5, 'Hardik','27', 'Bhopal', 8500),
(6, 'Komal', '22', 'MP', 9000),
(7, 'Muffy', '24', 'Indore', 5500);

以下查询基于以上创建的表创建一个视图:

CREATE VIEW first_view AS SELECT * FROM CUSTOMERS;

Verification

你可以使用 select 查询验证视图的内容,如下所示 −

SELECT * FROM first_view;

视图将按如下方式创建:

With REPLACE and IF NOT EXISTS Clauses

通常情况下,如果你尝试通过一个与现有视图相同的名称创建视图,将生成一个错误,如下所示:

CREATE VIEW first_view AS SELECT * FROM CUSTOMERS;

因为视图已存在,所以将引发以下错误:

ERROR 1050 (42S01): Table 'first_view' already exists

因此,你可以使用 Replace 子句以及 Create View 来替换现有视图。

CREATE OR REPLACE VIEW first_view AS SELECT * FROM CUSTOMERS;

With WHERE Clause

我们还可以使用 Where 子句创建视图,如下所示:

CREATE VIEW test_view AS SELECT * FROM CUSTOMERS WHERE SALARY>3000;

以下是上述创建视图的内容:

The With Check Option

With Check Option 是与 Create View 语句一起使用的选项。此 With Check Option 的目的是为了确保所有 Update 和 Insert 语句满足查询中的条件。如果它们不满足条件,Update 或 Insert 将返回一个错误。

Syntax

以下是语法 -

CREATE VIEW view_name
AS SELECT column_name(s)
FROM table_name
WITH CHECK OPTION;

Example

在下面的示例中,我们使用 Create View 语句以及 With Check Option 创建视图:

CREATE VIEW NEW_VIEW
AS SELECT * FROM CUSTOMERS
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

视图按如下方式创建:

Creating a MySQL View Using Client Program

除了使用 SQL 查询在 MySQL 数据库中创建视图,我们还可以使用客户端程序创建视图。

Syntax

以下是用多种编程语言在 MySQL 中创建视图的语法:

Example

以下是该操作在各种编程语言中的实现 −