SQL必知必会 第五篇

第十八课    

        这一课介绍什么是视图,它们怎样工作,何时使用它们;还讲述如何使用视图简化前几课中执行的某些SQL操作

        主要代码如下:

create view ProductCustomers as
select cust_name, cust_contact, prod_id
from Customers, Orders, OrderItems
where Customers.cust_id = Orders.cust_id
 and OrderItems.order_num = Orders.order_num;
select cust_name, cust_contact
from ProductCustomers
where prod_id = 'RGAN01';
create view vendorlocations as
select rtrim(vend_name) + '(' + rtrim(vend_country) + ')' as vend_title
from vendors;
select *
from vendorlocations;
create view customeremaillist as
select cust_id, cust_name, cust_email
from Customers
where cust_email is not null;
select *
from customeremaillist;
create view orderitemsexpanded as
select order_num, prod_id, quantity, item_price, quantity*item_price as expanded_price
from orderitems;
select *
from orderitemsexpanded
where order_num = 20008;

        1. 视图是虚拟的表。与包含数据的表不一样,视图只包含使用动态检索数据的查询

        2. 视图的一些常见应用:

  • 重用SQL语句
  • 简化复杂的SQL操作
  • 使用表的一部分而不是全部表
  • 保护数据
  • 更改数据格式和表示,视图可以返回与底层表的表示和格式不同的数据

        3. 创建视图之后,可以用与表基本相同的方式使用它们

        4. 视图返回的数据是从其他表中检索出来的,在改变这些表的数据时,视图将返回改变过的数据

        5. 在部署使用了大量视图的应用前,应该进行测试

        6. 视图创建和使用的一些最常见规则和限制

  • 与表一样,视图必须唯一命名
  • 对于可以创建的视图数目没有限制
  • 创建视图必须要有足够的访问权限
  • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造视图
  • 许多DBMS禁止在视图查询中使用ORDER BY子句
  • 有些DBMS要求对返回的所有列进行命名    
  • 视图不能索引,也不能有关联的触发器或默认值
  • 有些DBMS把视图作为只读的查询,这表示可以从视图检索数据,但不能把数据写回底层表
  • 有些DBMS允许创建这样的视图,它不能进行导致行不再属于视图的插入或更新

        7. 视图用CREATE VIEW语句来创建,用DROP VIEW语句来删除视图,覆盖(或更新)视图,必须先删除它,然后在重新创建

        8. 扩展视图的范围可以使得它被重用,而且可能更有用

        9. 从视图检索数据时如果使用了一条WHERE子句,则两组子句将自动组合

小结:视图为虚拟的表。它们包含的不是数据而是需要检索数据的查询。视图提供了一种封装SELECT语句的层次,可用来简化数据处理,重新格式化或保护基础数据


第十九课

        这一课介绍什么是存储过程,为什么要使用存储过程,如何使用存储过程,以及创建和使用存储过程的基本语法

        主要代码如下:

        1. 简单来说,存储过程就是为以后使用而保存的一条或多条SQL语句。可将其视为批文件,虽然它们的作用不仅限于批处理

        2. 使用存储过程的主要原因

  • 通过把处理封装在一个易用的单元中,可以简化复杂的操作
  • 由于不要求反复建立一系列处理步骤,因而保证了数据的一致性
  • 简化对变动的管理
  • DBMS处理命令所需的工作量少,提高了性能
  • 存在只能用在单个请求中的SQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码

        3. 缺陷

  • 不同DBMS中的存储过程语法有所不同
  • 一般来说,编写存储过程比编写基本SQL语句复杂,需要更高的技能,更丰富的经验

        4. 

你可能感兴趣的:(SQL必知必会 第五篇)