MySQL之视图内连接、外连接、子查询案例

目录

一.视图

        1.1 含义

        1.2 操作

二.案例

三.思维导图


一.视图

        1.1 含义

虚拟表,查询方面和普通表一样使用。

        1.2 操作

1.创建视图:

  • create or replace view 视图名
    as
    查询语句;

2.视图的修改:

  • 方式1
    • create or replace view 视图名
      as
      查询语句;
  • 方式2
    • alter view 视图名
      as
      查询语句;

3.删除视图:

  • drop view 视图名,视图名,...

4.查看视图:

  • DESC 视图名; —— 查看视图相关字段
  • SHOW CREATE VIEW 视图名; —— 查看视图相关语句

二.案例

01)查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

  • 1.涉及表:t_mysql_student, t_mysql_score
  • 2.连接方式:内连接
  • 3.行转列:流程函数
  • SELECT
        s.*,
        (case when t1.cid = '01' then t1.score end) 语文,
        (case when t2.cid = '02' then t2.score end) 数学
    FROM
        t_mysql_student s,
        ( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,
        ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 
    WHERE
        s.sid = t1.sid 
        AND t1.sid = t2.sid 
        AND t1.score > t2.score

02)查询同时存在" 01 "课程和" 02 "课程的情况

  • SELECT
        s.*,
        (case when t1.cid = '01' then t1.score end) 语文,
        (case when t2.cid = '02' then t2.score end) 数学
    FROM
        t_mysql_student s,
        ( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,
        ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 
    WHERE
        s.sid = t1.sid 
        AND t1.sid = t2.sid 

03)查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

  • 连接方式:外连接
  • SELECT
        s.*,
        ( CASE WHEN t1.cid = '01' THEN t1.score END ) 语文,
        ( CASE WHEN t2.cid = '02' THEN t2.score END ) 数学 
    FROM
        t_mysql_student s
        INNER JOIN ( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1 ON s.sid = t1.sid
        LEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 ON t1.sid = t2.sid

04)查询不存在" 01 "课程但存在" 02 "课程的情况

  • 考核:子查询
  • SELECT
        s.*,
        ( CASE WHEN sc.cid = '01' THEN sc.score END ) 语文,
        ( CASE WHEN sc.cid = '02' THEN sc.score END ) 数学 
    FROM
        t_mysql_student s,
        t_mysql_score sc 
    WHERE
        s.sid = sc.sid 
        AND s.sid NOT IN ( SELECT sid FROM t_mysql_score WHERE cid = '01' ) 
        AND cid = '02'

05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

  • 考核:聚合函数意味着分组,外连接
  • SELECT
        s.sid,
        s.sname,
        ROUND( avg( sc.score ), 2 ) n 
    FROM
        t_mysql_student s
        LEFT JOIN t_mysql_score sc ON s.sid = sc.sid 
    GROUP BY
        s.sid,
        s.sname 
    HAVING
        n >= 60

06)查询在t_mysql_score表存在成绩的学生信息

  • SELECT
        s.sid,
        s.sname 
    FROM
        t_mysql_student s
        INNER JOIN t_mysql_score sc ON s.sid = sc.sid 
    GROUP BY
        s.sid,
        s.sname

07)查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )

  • 考核:聚合函数,外连接
  • SELECT
        s.sid,
        s.sname,
        count( sc.score ) 选课总数,
        sum( sc.score ) 总成绩 
    FROM
        t_mysql_student s
        LEFT JOIN t_mysql_score sc ON s.sid = sc.sid 
    GROUP BY
        s.sid,
        s.sname

08)查询「李」姓老师的数量

  • SELECT
        count(*) 
    FROM
        t_mysql_teacher 
    WHERE
        tname LIKE '李%'

三.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326978.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

keras,一个超酷的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超酷的 Python 库 - keras。 Github地址:https://github.com/keras-team/keras 深度学习已经成为解决各种复杂问题的有力工具,而 Python Keras 是…

小游戏实战丨基于PyGame的俄罗斯方块小游戏

文章目录 写在前面PyGame五子棋注意事项系列文章写在后面 写在前面 本期内容:基于pygame的俄罗斯方块小游戏 下载地址:https://download.csdn.net/download/m0_68111267/88700182 实验环境 python3.11及以上pycharmtkinter PyGame Pygame是一个非常…

在 sealos 上使用 redisinsight 完美管理 redis

先起一个 redis 集群,在 sealos 上可以点点鼠标就搞定: 简单两步,redis 集群搞定。 再启动 RedisInsight, 是一个 redis 的可视化管理工具。 就可以看到部署后的地址了。进去之后填写 redis 的链接信息即可: 链接信息在数据库的…

如何建立标准且有效的评审流程?6个重点

为了进一步提高项目质量,项目评审管理需要遵循一定的标准化流程。而建立标准且有效的评审流程,能够快速提高项目质量和效率,优化团队协作,降低风险,提高项目成功率。如果组织没有建立起标准化的评审流程,就…

信息学奥赛之《向量几何一文通》

Geometry π \pi π: arccos ⁡ ( − 1 ) \arccos(-1) arccos(−1)余弦定理:对于任意三角形(三边长为 a , b , c a,b,c a,b,c),则有 c 2 a 2 b 2 − 2 a b cos ⁡ θ c^2a^2b^2-2ab\cos_{\theta} c2a2b2−2abcosθ…

基于Spring-boot-websocket的聊天应用开发总结

目录 1.概述 1.1 Websocket 1.2 STOMP 1.3 源码 2.Springboot集成WS 2.1 添加依赖 2.2 ws配置 2.2.1 WebSocketMessageBrokerConfigurer 2.2.2 ChatController 2.2.3 ChatInRoomController 2.2.4 ChatToUserController 2.3 前端聊天配置 2.3.1 index.html和main.j…

OpenSource - File Preview 文件预览组件

文章目录 file-preview-spring-boot-starterkkFileView file-preview-spring-boot-starter https://github.com/wb04307201/file-preview-spring-boot-starter https://gitee.com/wb04307201/file-preview-spring-boot-starter 一个文档在线预览的中间件,可通过简…

软件测试|Docker Kill/Pause/Unpause命令详细使用指南

简介 Docker是一种流行的容器化平台,提供了各种命令和功能来管理和操作容器。本文将详细介绍Docker中的三个重要命令:kill、pause和unpause。我们将深入了解它们的作用、用法和示例,帮助您更好地理解和使用这些命令。 什么是Docker Kill/Pa…

Linux操作系统基础(12):Linux的Shell解释器

1. Shell的介绍 在Linux中,Shell 是一种命令行解释器,它是用户与操作系统内核之间的接口,它负责解释用户输入的命令,并将其转换成系统调用或其他操作系统能够执行的指令。 Shell 提供了一种交互式的方式来与操作系统进行通信&am…

线性代数笔记6 1.6

学习视频: 2.2 矩阵运算(二)_哔哩哔哩_bilibili 包括内容: p29 4.4 方程组解的结构(一) p30 4.4 方程组解的结构(二) p32 5.1 矩阵的特征值与特征向量(一)…

UI5与后端的文件交互(二)

文章目录 前言一、开发Action1. 创建Structure2. BEDF添加Action3. class中实现Action 二、修改UI5 项目1. 添加一个按钮2. 定义事件函数 三、测试及解析1. 测试2. js中提取到的excel流数据3. 后端解析 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使用文件进行…

玩转爱斯维尔 LaTeX 模板:定制技巧一网打尽!

简介 关于 LaTeX 小编写过一些推文: 适合撰写课程论文的 LaTeX 模板; LaTeX 常用数学符号汇总; 免费升级 overleaf 高级账户!; 如何下载使用期刊的 LaTeX 模板 本文基于常用的 Elsevier 期刊模板,小编分享个人常用的使用技巧&#xff0…