视图
1. 需求:为什么要有视图?
没有视图的弊:
我们在逻辑模型层的任何操作所导致的变化都会被映射到数据库底层,引起底层数据的变化。
有了视图的利:
1. 安全性:
让所有用户都看到整个逻辑模型(数据表)是不合适的。出于安全考虑,需要向用户隐藏特定的数据,比如:工资
2. 个性化:
用户希望能创建符合其要求的个性化的关系集合。
例如:教务处希望有一个“各个系每年的秋季学期所开设的课程列表”。这样的关系集合在逻辑模型层并不存在,需要用户创建。如果没有视图,意味着每次使用时,都要手动SQL查询,及其不方便。而有了视图,可以“一次定义,终身使用”。
2. 使用:视图定义与使用
视图定义
0. 概念
虚关系:通过SQL查询定义,在概念上包含查询的结果
视图:不是逻辑模型的一部分,但作为“虚关系”对用户可见的关系
1. 标准视图定义
create view v as <query expression>
其中:
<query expression>:任何合法的查询表达式
v:视图别名
2. 显式指定视图的属性名
create view dept_total_salary(dept_name, total_salary) as
select dept_name, sum(salary)
from instrctor
group by dept_