View

作者: SkyDavid | 来源:发表于2016-03-20 12:44 被阅读0次

    数据库可以分三个层次

    • 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

          本文链接:https://www.haomeiwen.com/subject/ritklttx.html