「数据库视图」的定义及操作全解析 (数据库视图定义及其相关操作)

数据库视图的定义及操作全解析

数据库视图是指从一个或多个数据库表中选择一定数据行和列组成的虚拟表,用户可以像操作表一样使用它进行查询和修改数据。

数据库视图的好处

使用视图可以将复杂的查询任务简化为单个 SELECT 语句,展示出部分表的字段,以便于数据库管理员和业务用户进行查询,而不是直接使用复杂 SQL 语句。

此外,还可以使用视图进行数据的授权管理,只可读或增删改一些特定字段等。视图的另一个好用特性就是:在隐藏部分表和字段的同时,展示出合适的数据来源,使得查询的成本变得更低。

创建视图

相对于创建表和插入数据,创建视图是相对比较简单的。只需要将 SELECT 所需的列提取出来,然后使用 CREATE VIEW 名称(列名1,列名2,…)AS SELECT 语句 即可。

例如:

CREATE VIEW all_students(id, name, age, class_name) AS

SELECT stu.id, stu.name, stu.age, class.name as class_name

FROM student as stu

LEFT JOIN class ON stu.class_id = class.id;

其中,all_students 是视图名称,id、name、age、class_name 是虚拟的列名,SELECT 语句中指定的则是实际的数据来源。

查询视图

查询一个视图时,可以直接像查询表一样使用 SELECT 语句,但是不需要指定数据来源。例如:

SELECT * FROM all_students;

以上的语句将返回 all_students 视图中的所有字段和数据。 如果要对视图查询数据进行限制,可以使用 WHERE 子句对视图进行过滤,例如:

SELECT * FROM all_students WHERE age>20;

此外,还可以对视图使用 ORDER BY、GROUP BY 以及 HAVING 子句对查询结果进行排序、分组和过滤。

更新视图

更新一个视图就像操作一张表一样。不过,在工作流的种种规则限制下,视图还是有一些限制的,例如:

1. 视图必须来源于单张表或多张相关联的表。

2. 视图中不能包含计算列或用户定义函数。

3. 视图中不允许插入数据,它不能有插入触发器。

4. 对数据进行更新时,视图可能依赖多个表,因此我不能确定影响到外部表的数据了。

5. 视图中不能有可读可写的瞬态表和全局临时表。

6. 视图中不能使用 FOR UPDATE 子句,因为视图不是一张真正的表。

下面是对视图进行更新的示例 SQL 语句:

UPDATE all_students SET age = 21 WHERE id = 2;

以上语句将视图中 id 为 2 的学生的年龄设定为 21.

删除视图

同样,删除一个视图也很容易。使用简单的 DROP VIEW 语句即可,例如:

DROP VIEW all_students;

注意,删除视图并不会删除关联表中的数据,数据仍旧存在,只是不再有视图访问它了。

数据库视图是数据库中常用的数据对象之一,它可以显著地减少数据库的查询成本,便于用户使用。创建视图和更新视图都非常简单,是在工作中被广泛使用的。但是,需要注意的是在更新视图时必须遵守视图更新的限制和规则。


数据运维技术 » 「数据库视图」的定义及操作全解析 (数据库视图定义及其相关操作)