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);
以上是关于SQL基础教程(第2版)第5章 复杂查询:5-1 视图和表的主要内容,如果未能解决你的问题,请参考以下文章
SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询
SQL基础教程(第2版)第2章 查询基础:2-2 算数运算符和比较运算符
SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序