• 2015-12-01 视图


    建立信息系学生的视图
    create view is_student
    as
    select sno,sname,sage
    from student
    where sdept='is';
    建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生
    create view is_student
    as
    select sno,sname,sage
    from student
    where sdept='is'
    WITH CHECK OPTION;
    在定义视图时加上WITH CHECK OPTION子句,以后对该视图进行插入,修改和删除操作时,RDBMS会自动加上sdept='is'的条件

    建立信息系选修了1号课程的学生的视图
    create view is_s1(sno,sname,grade)
    as
    select student.sno,sname,grade
    from student,sc
    where sdept='is' and
    student.sno=sc.sno and
    sc.cno=1;

    建立信息系选修了1号课程且成绩在90分以上的学生的视图
    create view is_s2
    as
    select sno,sname,grade
    from is_s1
    where grade>=90;

    定义一个反映学生出生年份的视图
    create view bt_s(sno,sname,sbirth)
    as
    select sno,sname,2004-sage
    from student;

    将学生的学号及他的平均成绩定义为一个视图
    create view s_g(sno,grade)
    as
    select sno,avg(grade)
    from sc
    group by sno;

    将student表中所有女生记录定义为一个视图
    create view f_student(f_sno,name,sex,age,dept)
    as
    select *
    from student
    where ssex='女';

    在信息系学生的视图中找出年龄小于20岁的学生
    select sno,sage
    from is_student
    where sage<20;

    查询选修了1号课程的信息系学生
    select is_student.sno,sname
    from is_student,sc
    where is_student.sno=sc.sno and sc.sno='1';

    查询平均成绩在90分以上的学生学号和平均成绩
    select sno,avg(grade)
    from sc
    where avg(grade)>=90
    group by sno;

    由于视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。
    为防止用户通过视图对数据进行增加,删除,修改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION子句。这样在视图上增删改数据时,RDBMS会检查视图定义中的条件,若不满足条件,则拒绝执行该操作。

    将信息系学生视图is_student中学号为200215122的学生姓名改为"刘辰"
    update is_student
    set sname='刘辰'
    where sno='200215122';
    转换后的更新语句为
    update student
    set sname='刘辰'
    where sno='200215122' and sdept='is';

    视图的作用:
    简化用户操作
    使用户能以多种角度看待同一数据
    视图对重构数据库提供了一定程度的逻辑独立性
    能够对机密数据提供安全保护
    适当地利用属兔可以更清晰的表达查询

  • 相关阅读:
    关于组建“智彩足球技术研究团队”的说明
    2次成功投诉EMS和中国移动的经验
    为什么选择玩足球彩票以及玩彩票的心态?
    【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍
    【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
    【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩
    【文章】本站收集与转载文章目录
    【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制
    分享一个Visual Studio的背景插件,让堆码更富情趣
    【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
  • 原文地址:https://www.cnblogs.com/daochong/p/5011886.html
Copyright © 2020-2023  润新知