View

数据库可以分三个层次

  • Physical:就是储存在磁盘上的数据
  • Conceptual:对磁盘上的数据抽象成我们定义的一个个 Relation
  • Logical:进一步抽象,View

View 的存在能让一些查询变得更加简单自然,而且提供了一种对数据库操作进行模块化的方法
因此现实中的应用使用了大量的 View

view 只是逻辑上的概念,并不真实存在。对 view 进行查询操作,会根据 view 的定义从定义它的 relation(可能也是view)中进行操作(这是一个递归过程)
ps:感觉 view 更像程序语言中的变量用作对 query 的一部分进行命名

create view CSaccept AS
SELECT sID, cName
FROM Apply
WHERE major = 'CS' AND decision = 'Y';

SELECT Student.sID, sName, GPA
FROM Student, CSaccept
WHERE Student.sID = CSaccept.sID AND cName = 'Stanford' AND GPA < 3.8

-- 等效为如下查询
SELECT Student.sID, sName, GPA
FROM Student, Apply
WHERE major = 'CS' AND decision = 'Y' AND
      Student.sID = Apply.sID AND cName = 'Stanford' AND GPA < 3.8 

-- 可以根据 view 创建 view
create view CSberk AS
SELECT Student.sID, sName, GPA 
FROM Student, CSaccept
WHERE Student.sID = Csaccept.sID AND cName = 'Berkeley'

-- 更加体现了 view 的好处
create view Mega AS
SELECT College.cName, state, enrollment, Student.sID, 
       sName, GPA, sizeHS, major, decision
FROM College, Student, Apply
WHERE College.cName = Apply.cName AND Student.sID = Apply.sID

Modify View

待补充

你可能感兴趣的:(View)