数据库中的视图及三级模式结构

一、视图

简单地说,视图可以看成是一个窗口,它所反映的是一个表或若干表的局部数据,可以简化查询语句。视图一经定义,用户就可以把它当作表一样来查询数据。

但视图和基本表不同,视图是一个虚表,即视图储存的是查询语句而不是查询结果一个视图既可以定义在基本表上,也可以定义在另一个视图上。一个视图可在几个表或视图上建立,一个表或视图也可建立多个视图

-- 建立计算机系的学生的视图
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子句中涉及的表也是导出该视图的基本表。
  • 另一个不允许更新的视图上定义的视图。

二、数据库三级模式结构

在这里插入图片描述

数据库的三级模式:

  1. 数据库模式:又称逻辑模式,是对数据库中全体数据逻辑结构特征的描述,是所有用户的公共数据视图,模式描述的是数据的全局逻辑结构。
  2. 数据库外模式:又称为子模式或用户模式,是数据库用户能够看见和使用的局部数据逻辑结构特征的描述,是数据库用户的数据视图,通常是模式的子集,一个数据库可以有多个外模式。
  3. 数据库内模式:又称存储模式,是对数据库物理结构存储方式的描述,是数据在数据库内部的表现形式,一个数据库只有一个内模式。

数据库的两级映像:外模式/模式的映像模式/内模式的映像,分别保证了数据库中数据的逻辑独立性物理独立性

数据库三级模式/两级映象的好处:

  • 方便了用户使用,简化了用户接口
  • 实现了数据的独立性(物理数据独立、逻辑数据独立)
  • 有利于数据共享
  • 有利于数据的安全和保密

猜你喜欢

转载自blog.csdn.net/qq_43686863/article/details/130115506