• MySQL数据库——视图的更新、视图作用以及案例


    目录

    视图的更新

    介绍

    示例

    视图作用 

    案例


    视图的更新

    介绍

    要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。

    如果视图包含以下任何一项,则该视图不可更新:

    • 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
    • DISTINCT
    • GROUP BY
    • HAVING
    • UNION或者 UNION ALL

    示例

    create view stu_v_count as select count(*) from student;

    上述的视图中,就只有一个单行单列的数据,与基础表不对应,如果我们对这个视图进行更新或插入的,将会报错。

    insert into stu_v_count values(10);

    视图作用 

    1.简单
    视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。


    2. 安全
    数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据。

    3. 数据独立
    视图可帮助用户屏蔽真实表结构变化带来的影响。

    案例

    1.为了保证数据库表的安全性,开发人员在操作tb_user表时,只能看到的用户的基本字段,屏蔽手机号和邮箱两个字段。

    2.查询每个学生所选修的课程(三张表联查),这个功能在很多的业务中都有使用到,为了简化操作,定义一个视图。

    1. -- 案例一
    2. -- 创建视图
    3. create view tb_user_view
    4. as
    5. select id,name,profession,age,gender,status,createtime
    6. from
    7. tb_user;
    8. -- 查询视图
    9. select * from tb_user_view;
    1. -- 案例二
    2. -- 三表联查
    3. select s.name,s.no,c.name
    4. from
    5. student s,student_course sc, course c
    6. where
    7. s.id = sc.studentid and sc.courseid = c.id;
    8. -- 把三表联查直接放到创建视图中会出现name重复出现的情况
    9. -- 需要重命名,下面创建视图
    10. create view tb_stu_course_view
    11. as
    12. select s.name student_name,s.no student_no,c.name course_name
    13. from
    14. student s,student_course sc, course c
    15. where
    16. s.id = sc.studentid and sc.courseid = c.id;
    17. -- 查询视图
    18. create * from tb_stu_course_view;


    END


    学习自:黑马程序员——MySQL数据库课程

  • 相关阅读:
    Java Web学习笔记4——HTML、CSS
    基于阿里云 Serverless 快速部署 function 的极致体验
    springboot景区寄存管理系统(源码+sql+论文报告)
    【JAVA学习笔记】39 - final关键字
    时光机特效什么app好?建议收藏这些软件
    Codewhisperer 使用评价
    手撕Vue-数据驱动界面改变上
    Spring Boot / Spring Cloud 常见面试题
    浅谈客户端框架设计|一|二|三
    试图带你一文搞懂transformer注意力机制(Self-Attention)的本质
  • 原文地址:https://blog.csdn.net/li13437542099/article/details/133974027