SQL中简单视图和复杂视图的区别
SQL中的视图作为来自一个或多个表的数据的逻辑子集。 视图用于限制数据访问。 视图不包含它自己的数据,而是包含类似的窗口,通过该窗口可以查看或更改表中的数据。 视图所基于的表称为基本表。
SQL中有两种视图:简单视图和复杂视图。 简单视图只能包含一个基表。 可以在多个基表上构建复杂视图。 特别是复杂视图可以包含:连接条件、group by 子句、order by 子句。
SQL中简单视图和复杂视图的主要区别是:
简单视图 | 复杂视图 |
---|---|
仅包含一个基表或仅从一个表创建。 | 包含多个基表或由多个表创建。 |
不能使用 MAX()、COUNT() 等组函数。 | 可以使用组函数。 |
不包含数据组。 | 可以包含数据组。 |
DML 操作可以通过一个简单的视图来执行。 | DML 操作不能总是通过复杂的视图来执行。 |
INSERT 、 DELETE 和 UPDATE 可以直接在简单视图上进行。 |
不能直接在复杂视图上应用 INSERT 、 DELETE 和 UPDATE 。 |
简单视图不包含 group by 、 distinct 、伪列(如 rownum)、由表达式定义的列。 |
可以包含 group by 、 distinct 、伪列(如 rownum)、由表达式定义的列。 |
不包括基表中的 NOT NULL 列。 |
NOT NULL 列可以包含在复杂视图中。 |