【SQL】多表查询案例

📢本章节主要学习使用SQL多表查询的案例,多表查询基础概念 请点击此处。

 🎄数据准备

  • 首先我们创建一个新的表也就是薪资等级表,其余两个表(员工表和薪资表)在多表查询章节中已经创建。
  • 然后我么根据这三个表完成下面的12个需求。
create table salaryGrade(grade int,losal int,hisal int
)comment '薪资等级表';insert into salaryGrade values (1,0,3000),(2,3001,5000),(3,5001,8000),(4,8001,10000),(5,10001,15000),(6,15001,20000),(7,20001,25000),(8,25001,30000);

🎄案例

⭐案例1

. 📢 查询员工的姓名、年龄、职位、部门信息 (隐式内连接)
select employee.name,employee.age,employee.job,department.name from employee,department
where employee.dept_id = department.id;

⭐案例2

📢 查询年龄小于30 岁的员工的姓名、年龄、职位、部门信息(显式内连接)
select e.name,e.age,e.job,d.name from
employee as e join department as don (e.dept_id = d.id and e.age < 30);
  • 还有一种是在on子句后面加where条件
select e.name,e.age,e.job,d.name from
employee as e join department as don e.dept_id = d.id where e.age > 30;

⭐案例3

📢 查询拥有员工的部门ID 、部门名称
  • 这里有个重点要使用distinct对查出的列进行去重操作。
  • 对于distinct来说是它后面所有的列都完全相同时才会去重。
select distinct department.id, department.name from employee,department
where employee.dept_id = department.id

⭐案例4

📢查询所有年龄大于40岁的员工, 及其归属的部门名称; 如果员工没有分配部门, 也需要展示出

( 外连接 )
select e.*,department.name from (select * from employee where employee.age > 40) as eleft outer join department on e.dept_id = department.id;
  • 还有一种实现方式更为简单
select employee.*,department.name from employee left outer join departmenton employee.dept_id = department.id where employee.age > 40

⭐案例5

📢查询所有员工的工资等级

select employee.*,salaryGrade.grade from employee,salarygradewhere employee.salary between salaryGrade.losal and salaryGrade.hisal;

⭐案例6

📢 查询 " 研发部 " 所有员工的信息及 工资等级
  • 首先涉及到3个表,3个表的连接条件至少有两个,先确定连接条件
  • 连接条件:(employee.salary between salaryGrade.losal and salaryGrade.hisal) and department.id = employee.dept_id
  • 查询条件:department.name = '研发部'
select employee.*,salaryGrade.grade from employee ,department,salaryGrade
where  (employee.salary between salaryGrade.losal and salaryGrade.hisal) and department.id = employee.dept_id
and department.name = '研发部'

⭐案例7

📢 "研发部 " 员工的平均工资
select department.name, avg(employee.salary) as '平均工资'
from employee,department
where employee.dept_id = department.idand department.name = '研发部';/* 每个部门平均工资 */
select department.name, avg(employee.salary) as '平均工资'
from employee,department
where employee.dept_id = department.id
group by employee.dept_id;

⭐案例8

📢查询工资比灭绝高的员工
  • 这是一个典型的标量子查询,因为返回的值只有一个值。
select name from employee where salary > (
select salary from employee where name = '灭绝')
  • 当然这个也可以使用自查询,只不过比子查询要复杂
select a.name from employee as a join employee as b on a.salary > b.salary where  b.name = '灭绝'

⭐案例9

📢 查询比平均薪资高的员工信息
select name from employee where salary > (select avg(salary) from employee);

⭐案例10

📢 查询低于本部门平均工资的员工信息
select * from employee as a where a.salary <
(select avg(b.salary) from employee  as b where b.dept_id = a.dept_id)
  • 还可以使用分组查询+自连接
select a.* from employee as a join
(select employee.dept_id,avg(employee.salary) as avg_salary from employee group by dept_id )
as b on a.dept_id = b.dept_id
where a.salary < b.avg_salary

⭐案例11

📢 查询所有的部门信息 , 并统计部门的员工人数
  • 这里使用的子查询属于select类型。
select a.id, a.name, (select count(*)  from employee as b where b.dept_id = a.id) as '部门人数'
from department as a;

⭐案例12

📢 查询所有学生的选课情况 , 展示出学生名称 , 学号 , 课程名称
  • 首先我们先把三张表的连接条件写出来。
  • 然后再去写表的查询条件。这个案例不需要写查询条件。
select student.name, student_course.studentno, student_course.courseno
from student,course,student_course
where student.no = student_course.studentnoand course.name = student_course.courseno

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

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

    相关文章

    PyTorch v2.6 Overview

    PyTorch v2.6 Overview Python APILibraries PyTorch 是一个优化的张量库&#xff0c;用于使用 GPU 和 CPU 进行深度学习。 Python API 序号API名称解释1torchPyTorch 核心库(中文:火炬)PyTorch 的核心库&#xff0c;提供了张量操作、自动求导等基础功能。2torch.nn神经网络模…

    如何调整CAN位宽容忍度?

    CAN位宽容忍度是指在控制器局域网络&#xff08;CAN, Controller Area Network&#xff09;中允许时钟同步的误差范围。这是CAN网络正常通信时的关键因素之一&#xff0c;因为CAN协议依赖位同步来确保多个节点在总线上正确解码数据。CAN位宽容忍度确保节点之间由于时钟偏差或抖…

    Django-Vue 学习-VUE

    主组件中有多个Vue组件 是指在Vue.js框架中&#xff0c;主组件是一个父组件&#xff0c;它包含了多个子组件&#xff08;Vue组件&#xff09;。这种组件嵌套的方式可以用于构建复杂的前端应用程序&#xff0c;通过拆分功能和视图&#xff0c;使代码更加模块化、可复用和易于维…

    怎么学习调试ISP的参数

    摄像头的 **Sensor 获取的 RAW 数据** 是未经处理的原始图像数据&#xff0c;通常需要经过 **ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;** 的处理&#xff0c;才能生成可用的图像或视频。ISP 的作用是对 RAW 数据进行一系列图像处理操作&a…

    万字长文解析:深入理解服务端渲染(SSR)架构与全栈实践指南

    一、SSR核心原理深度剖析 1.1 技术定义与演进历程 服务端渲染&#xff08;Server-Side Rendering&#xff09;指在服务器端完成页面DOM构建的技术方案。其发展历程可分为三个阶段&#xff1a; 阶段时期典型技术传统SSR2000-2010JSP/PHP现代SSR2015-2020Next.js/Nuxt.js混合渲…

    Ubuntu 下 nginx-1.24.0 源码分析 - ngx_array_push

    ngx_array_push 声明在 src\core\ngx_array.h void *ngx_array_push(ngx_array_t *a); 实现在 src\core\ngx_array.c void * ngx_array_push(ngx_array_t *a) {void *elt, *new;size_t size;ngx_pool_t *p;if (a->nelts a->nalloc) {/* the array is full…

    python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML

    pythonnet 是pythonhe.net通用的神器不多介绍了. 这次这基本上跟python没有关系了. 和winform一样先导包 import clr clr.AddReference("PresentationFramework.Classic, Version3.0.0.0, Cultureneutral, PublicKeyToken31bf3856ad364e35") clr.AddReference(&…

    MySql数据库运维学习笔记

    数据库运维常识 DQL、DML、DCL 和 DDL 是 SQL&#xff08;结构化查询语言&#xff09;中的四个重要类别&#xff0c;它们分别用于不同类型的数据库操作&#xff0c;下面为你简单明了地解释这四类语句&#xff1a; 1. DQL&#xff08;数据查询语言&#xff0c;Data Query Langu…

    如何为自己的 PDF 文件添加密码?在线加密 PDF 文件其实更简单

    随着信息泄露和数据安全问题的日益突出&#xff0c;保护敏感信息变得尤为重要。加密 PDF 文件是一种有效的手段&#xff0c;可以确保只有授权用户才能访问或修改文档内容。本文将详细介绍如何使用 CleverPDF 在线工具为你的 PDF 文件添加密码保护&#xff0c;确保其安全性。 为…

    UEFI Spec 学习笔记---9 - Protocols — EFI Loaded Image

    本节定义EFI_LOADED_IMAGE_PROTOCOL和 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL。这些协议分别描述了已加载到内存中的映像&#xff0c;并指定了PE/COFF映像通过EFI引导服务LoadImage()加载 时使用的设备路径。这些描述包括 load image 的源、映像在内存中的当前位置、为image分…

    pycharm中配置PyQt6详细教程

    PyQt6 是 Qt 框架的 Python 绑定库,基于 Qt 6 开发,专为创建跨平台图形用户界面(GUI)应用程序设计。 本章教程,主要记录在pycharm中配置使用PyQt6的流程。 一、安装基础环境 在此之前,你需要提前安装好Python解释器,推荐使用anaconda创建虚拟环境。 conda create -n pyt…

    AJAX 简介

    AJAX 简介 引言 随着互联网技术的不断发展,Web 应用程序已经从简单的信息展示平台演变成为高度交互的动态系统。AJAX(Asynchronous JavaScript and XML)作为一种关键技术,极大地推动了Web应用的发展。本文将详细介绍AJAX的基本概念、工作原理、应用场景以及未来发展趋势。…

    大模型在肝硬化风险预测及临床决策中的应用研究

    目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、肝硬化及大模型相关理论基础 2.1 肝硬化概述 2.2 大模型技术原理 2.3 大模型在医疗领域的应用现状 三、大模型预测肝硬化术前风险 3.1 术前风险因素分析 3.2 大模型预测术前风险…

    Java+SpringBoot+Vue+数据可视化的综合健身管理平台(程序+论文+讲解+安装+调试+售后)

    感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今社会&#xff0c;随着人们生活水平的不断提高和健康意识的日益增强&#xff0c;健…

    【从0做项目】Java音缘心动(2)———登录、统一返回设计

    阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;登录模块设计 1&#xff1a;实体类 2&#xff1a;登录的请求和响应设计 二&#xff…

    【Linux网络】认识协议(TCP/UDP)、Mac/IP地址和端口号、网络字节序、socket套接字

    ⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、初识协议2、UDP、TCP3、Mac、IP地址4、端口号5、网络字节序6、socket 1、初识协议 协议就是一种约定。如何让不同厂商生产的计…

    【个人开源】——从零开始在高通手机上部署sd(二)

    代码&#xff1a;https://github.com/chenjun2hao/qualcomm.ai 推理耗时统计 单位/ms 硬件qnncpu_clipqnncpu_unetqnncpu_vaehtp_cliphtp_unethtp_vae骁龙8 gen124716.994133440.39723.215411.097696.327 1. 下载依赖 下载opencv_x64.tar,提取码: rrbp下载opencv_aarch64.t…

    从混沌到有序:一个数据血缘分析的进化故事

    从混沌到有序&#xff1a;一个数据血缘分析的进化故事 从混沌到有序的数据治理之路数据血缘的建设方法和实践路径数据血缘的实践场景和未来趋势。 数据就像流淌在企业血管中的血液&#xff0c;它的每一次流动、每一次转化都留下独特的印记。 作为数据工程师&#xff0c;我曾困惑…

    JavaSE学习笔记25-反射(reflection)

    反射 在Java中&#xff0c;反射&#xff08;Reflection&#xff09; 是一种强大的机制&#xff0c;允许程序在运行时检查和操作类、方法、字段等信息。通过反射&#xff0c;可以动态地创建对象、调用方法、访问字段&#xff0c;甚至修改私有成员。反射的核心类是 java.lang.re…

    图表控件Aspose.Diagram入门教程:使用 Python 将 VSDX 转换为 PDF

    将VSDX转换为PDF可让用户轻松共享图表。PDF 文件保留原始文档的布局和设计。它们广泛用于演示文稿、报告和文档。在这篇博文中&#xff0c;我们将探讨如何在 Python 中将 VSDX 转换为 PDF。 本文涵盖以下主题&#xff1a; Python VSDX 到 PDF 转换器库使用 Python 将 VSDX 转…