SQL 创建视图
SQL视图是什么
SQL中的视图是以关联名称存储在数据库中的虚拟表。它实际上是一个预定义的SQL查询形式的表的组合。视图可以包含现有表中的行(全部或选定的)。一个视图可以由一个或多个表创建。除非被索引,否则视图在数据库中不存在。
视图中的数据在数据库中并不存在物理上。视图通常由数据库管理员创建,并用于:
- 以对用户或用户类别自然或直观的方式组织数据。
- 以限制访问数据,使用户只能查看并(有时)修改所需的内容,而不会超出。
- 对来自不同表的数据进行汇总,用于生成报告。
SQL CREATE VIEW语句
要在数据库中创建视图,可以使用SQL CREATE VIEW语句。
语法
以下是SQL CREATE VIEW语句的语法-
CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
示例
假设我们使用以下查询语句使用 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语句将值插入到这个表中,如下所示−
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) 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;
验证
您可以使用如下所示的 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 |
使用WHERE子句创建视图
我们还可以使用WHERE子句和SQL CREATE VIEW语句一起,从表中只选择特定的记录来创建视图,如下所示:
CREATE VIEW BUYERS_VIEW as SELECT * FROM CUSTOMERS WHERE SALARY > 3000;
验证
以下是上述创建视图的内容-
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 |
WITH CHECK OPTION子句
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的记录的录入和更新。
验证
以下是上述创建的视图的内容。
SELECT * FROM MY_VIEW;
视图显示如下:
NAME | AGE |
---|---|
Ramesh | 32 |
Khilan | 25 |
Chaitali | 25 |
Hardik | 27 |