Sql 简明教程

SQL - CREATE View

What is SQL View

SQL 中的视图是存储在数据库中的虚拟表,并具有关联的名称。它实际上是以预定义 SQL 查询的形式组成的一个表。视图可以包含现有表中的行(全部或选定的)。视图可以从一个或多个表创建。除非编制索引,否则视图在数据库中不存在。

视图中的数据在数据库中物理不存在。视图通常由数据库管理员创建,并用于 −

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

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

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

The SQL CREATE VIEW Statement

如要在数据库中创建视图, 可以使用 SQL CREATE VIEW 语句。

Syntax

以下是 SQL CREATE VIEW 语句的语法:

CREATE VIEW view_name AS
SELECT column1, column2....
FROM table_name
WHERE [condition];

Example

假设我们使用以下查询使用 CREATE TABLE 语句创建名为 CUSTOMERS 的表:

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

现在,使用如下所示的 INSERT 语句向此表中插入值:

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

以下查询基于上述创建的表格创建一个视图 −

CREATE VIEW CUSTOMERS_VIEW AS SELECT * FROM CUSTOMERS;

Verification

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

SELECT * FROM CUSTOMERS_VIEW;

视图显示如下 −

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

6

Komal

22

Hyderabad

4500.00

7

Muffy

24

Indore

10000.00

Create View With WHERE Clause

还可以使用 where 子句连同 SQL CREATE VIEW 语句一起从表中创建带有限定记录的视图,如下所示:

CREATE VIEW BUYERS_VIEW as SELECT * FROM CUSTOMERS
WHERE SALARY > 3000;

Verification

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

SELECT * FROM BUYERS_VIEW;

视图显示如下 −

ID

NAME

AGE

ADDRESS

SALARY

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

6

Komal

22

Hyderabad

4500.00

7

Muffy

24

Indore

10000.00

The WITH CHECK OPTION Clause

WITH CHECK OPTION 是 CREATE VIEW 语句选项。WITH CHECK OPTION 的目的是确保所有 UPDATE 和 INSERT 语句都满足 WHERE 子句指定的条件。

如果它们不满足条件,则 UPDATE 或 INSERT 语句返回错误。以下示例使用 WITH CHECK OPTION 子句创建名为 BUYERS_VIEW 的视图。

CREATE VIEW MY_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age >= 25
WITH CHECK OPTION;

在这种情况下,WITH CHECK OPTION 应拒绝输入和更新年龄值大于或等于 25 的记录。

Verification

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

SELECT * FROM MY_VIEW;

视图显示如下 −

NAME

AGE

Ramesh

32

Khilan

25

Chaitali

25

Hardik

27