SQL基础教程(第2版)第5章 复杂查询:5-1 视图和表

Posted 绍耕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础教程(第2版)第5章 复杂查询:5-1 视图和表相关的知识,希望对你有一定的参考价值。

本章将以此前学过的SELECT语句,以及嵌套在SELECT语句中的视图和子查询等技术为中心进行学习。
由于视图和子查询可以像表一样进行使用,因此如果能恰当地使用这些技术,就可以写出更加灵活的 SQL 了。

● 表中保存的是实际的数据,而视图中保存的是SELECT语句(视图本身并不存储数据)。
● 使用视图,可以轻松完成跨多表查询数据等复杂操作。
● 可以将常用的SELECT语句做成视图来使用。
● 创建视图需要使用CREATE VIEW语句。
● 视图包含“不能使用ORDER BY”和“可对其进行有限制的更新”两项限制。


■ 视图和表

通常,我们在创建表时,会通过 INSERT 语句将数据保存到数据库之中,而数据库中的数据实际上会被保存到计算机的存储设备(通常是硬盘)中。
因此,我们通过 SELECT 语句查询数据时,实际上就是从存储设备(硬盘)中读取数据,进行各种计算之后,再将结果返回给用户这样一个过程。
但是使用视图时并不会将数据保存到存储设备之中,而且也不会将数据保存到其他任何地方。实际上视图保存的是 SELECT 语句(图 5-1)。

■ 视图的优点

第二个优点就是可以将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写了。 
数据保存在表中时,必须要显式地执行 SQL 更新语句才能对数据进行更新;视图中的数据会随着原表的变化自动更新。 

特别是在进行汇总以及复杂的查询条件导致 SELECT 语句非常庞大时,使用视图可以大大提高效率。

■ 创建视图的方法



还可能出现以视图为基础创建视图的多重视图(图 5-2)。例如,我们可以像代码清单 5-4 那样以 ProductSum 为基础创建出视图 ProductSumJim

■ 视图的限制①——定义视图时不能使用ORDER BY子句在 PostgreSQL 中 才可以。)
■ 视图的限制②——对视图进行更新

■ 能够更新视图的情况

代码清单5-A 允许PostgreSQL对视图进行更新

/* 
  在PostgreSQL中执行代码清单5-6的INSERT语句之前
  必须要执行以下代码将试图设置为可以更新。
*/
CREATE OR REPLACE RULE insert_rule
AS ON INSERT
TO  ProductJim DO INSTEAD
INSERT INTO Product VALUES (
           new.product_id, 
           new.product_name, 
           new.product_type, 
           new.sale_price, 
           new.purchase_price, 
           new.regist_date);
View Code

以上是关于SQL基础教程(第2版)第5章 复杂查询:5-1 视图和表的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程(第2版)第5章 复杂查询:练习题

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

SQL基础教程(第2版)第2章 查询基础:2-2 算数运算符和比较运算符

SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序

SQL基础教程(第2版)第3章 聚合与排序:3-1 对表进行聚合查询

SQL基础教程(第2版)第8章 SQL高级处理:8-1 窗口函数