文章目录
- 一、视图
- 二、数据库三级模式结构
一、视图
简单地说,视图可以看成是一个窗口,它所反映的是一个表或若干表的局部数据,可以简化查询语句。视图一经定义,用户就可以把它当作表一样来查询数据。
但视图和基本表不同,视图是一个虚表,即视图储存的是查询语句而不是查询结果。一个视图既可以定义在基本表上,也可以定义在另一个视图上。一个视图可在几个表或视图上建立,一个表或视图也可建立多个视图。
-- 建立计算机系的学生的视图
CREATE OR REPLACE VIEW XS_DEPT_VIEW
AS SELECT * FROM XS WHERE DEPT = '计算机系';
-- 通过视图查询计算机系的学生的信息
SELECT * FROM XS_DEPT_VIEW;
-- 建立学生的学号与平均成绩的视图
CREATE OR REPLACE VIEW CJ_AVG_VIEW(SNO, AGE_GRADE)
AS SELECT SNO, AVG(GRADE) FROM CJ GROUP BY SNO;
-- 通过视图查询平均成绩在90分以上的学生的学号
SELECT * FROM CJ_AVG_VIEW
WHERE AGE_GRADE > 90;
-- 不使用视图查询平均成绩在90分以上的学生的学号
SELECT SNO, AVG(GRADE)
FROM CJ
GROUP BY SNO
HAVING AVG(GRADE) > 90;
行列子集视图是指从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主键的视图。
在关系数据库中,基本表的行列子集视图一般是可更新的,但对于某些视图来说,由于对视图的更新不能通过视图消解唯一地、有意义地转换成对相应的基本表的更新,因此这些视图不允许更新:
- 视图是由两个以上基本表导出的。
- 视图的字段来自于字段表达式、聚集函数或常数。
- 视图定义中含有
GROUP BY
子句或DISTINCT
短语。 - 视图定义中含有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表。
- 在另一个不允许更新的视图上定义的视图。
二、数据库三级模式结构
数据库的三级模式:
- 数据库模式:又称逻辑模式,是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,模式描述的是数据的全局逻辑结构。
- 数据库外模式:又称为子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,通常是模式的子集,一个数据库可以有多个外模式。
- 数据库内模式:又称存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表现形式,一个数据库只有一个内模式。
数据库的两级映像:外模式/模式的映像、模式/内模式的映像,分别保证了数据库中数据的逻辑独立性和物理独立性。
数据库三级模式/两级映象的好处:
- 方便了用户使用,简化了用户接口
- 实现了数据的独立性(物理数据独立、逻辑数据独立)
- 有利于数据共享
- 有利于数据的安全和保密