MySQL—多表查询—练习(1)

news2025/1/12 21:05:58

一、引言

上几篇关于多表查询的基本几个部分全部学习完了。

多表查询的基本类型的查询包括以下:

1、内连接(隐式内连接、显示内连接):... [INNER] JOIN ... ON 条件; 

2、外连接(左外连接、右外连接):... LEFT / RIGHT [OUTER] JOIN ... ON 条件;

3、自连接:表 A 别名 A join 表 A 别名 B ON 条件 ...;

4、联合查询:UNION(去重) / UNION ALL

5、子查询(标量子查询、列子查询、行子查询、表子查询)


下面将通过12个案例来关于多表查询操作的巩固。这篇博客只有5个案例,剩下的后面博客写。

二、案例

下面这些案例涵盖了内连接、外连接、自连接、子查询以及它们的整合使用。

打开 DataGrip 工具完成以下这些需求。

(0)数据准备(员工表 emp 、部门表 dept 、薪资等级表 salgrade)

员工表:emp 

部门表:dept

薪资等级表:salgrade

(下面是创建表结构、插入数据)

CREATE TABLE salgrade(
    grade INT COMMENT '薪资等级',
    losal INT COMMENT '该等级最低薪资',
    hisal INT COMMENT '该等级最高薪资'
)COMMENT '薪资等级表';

INSERT INTO salgrade VALUES (1,0,3000);
INSERT INTO salgrade VALUES (2,3001,5000);
INSERT INTO salgrade VALUES (3,5001,8000);
INSERT INTO salgrade VALUES (4,8001,10000);
INSERT INTO salgrade VALUES (5,10001,15000);
INSERT INTO salgrade VALUES (6,15001,20000);
INSERT INTO salgrade VALUES (7,20001,25000);
INSERT INTO salgrade VALUES (8,25001,30000);

涉及到的全部表的预览

(1)查询员工的姓名、年龄、职位、部门名称(隐式内连接)

用到隐式内连接,多张表用逗号隔开。要注意笛卡尔积的问题(消除无效查询)

SELECT e.name,e.age,e.job,d.name FROM emp AS e,dept AS d WHERE (e.dept_id = d.id);

(2)查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显式内连接)
SELECT e.name,e.age,e.job,d.name FROM emp AS e INNER JOIN dept AS d ON e.dept_id = d.id WHERE e.age < 30;

(3)查询拥有员工的部门ID、部门名称

(注意:这里在部门表中 "人事部" 是没有员工的)

1、先查询拥有部门id的员工中的部门信息,再去重复数据。
SELECT dept.id,dept.name FROM emp,dept WHERE emp.dept_id=dept.id;

2、去除重复数据,就要用到一个关键字:distinct(DISTINCT)
SELECT DISTINCT dept.id,dept.name FROM emp,dept WHERE emp.dept_id=dept.id;

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

这里注意:一看就要用到外连接(避免有些字段的 NULL 影响查询的结果)

SELECT e.*,d.name FROM emp e LEFT OUTER JOIN  dept d ON e.dept_id = d.id WHERE age >40;

也可以用昨天学的子查询(表子查询)

SELECT e.*,d.name FROM (SELECT * FROM emp WHERE age>40) AS e LEFT JOIN dept AS d ON e.dept_id= d.id;
(5)查询所有员工的工资等级

涉及到两张表:员工表 emp,薪资等级表 salgrade

连接条件:salary 与 薪资的范围 losal 、hisal

emp.salary >= salgrade.losal AND emp.salary <= salgrade.hisal

SELECT e.*,s.grade,s.losal as '最低工资' , s.hisal as '最高工资' FROM emp e ,salgrade s WHERE e.salary >= s.losal AND e.salary <= s.hisal;

对于这题还有一种SQL语句的写法。

(用 BETWEEN ... AND....

SELECT e.*,s.grade,s.losal as '最低工资' , s.hisal as '最高工资' FROM emp e ,salgrade s WHERE e.salary BETWEEN s.losal AND s.hisal;
后面的案例下一篇博客学习。

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

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

相关文章

中国蚁剑 安装教程 2024年5月

2024/5/11 中国蚁剑 安装教程 一、下载中国蚁剑的加载器和核心源码&#xff08;两个都要用到&#xff09; github官方下载地址&#xff1a;https://github.com/AntSwordProject/ 参考文档&#xff1a;antSword/README_CN.md at master AntSwordProject/antSword GitHub 核…

iPhone - 为什么姓名和付款都变成灰色?

问题描述 为什么姓名和付款都变成灰色&#xff1f;点开订阅也显示图 2 的无法连接&#xff1f; 原因分析 联网 WIFI 没有对『设置』开放权限。 解决方案 设置 - 无线局域网 - 使用无线局域网与蜂窝网络的App - 找到『设置』应用 - 勾选『无线局域网与蜂窝数据』

品牌渠道健康发展的关键与方法

一个品牌的渠道健康与否对其长期发展至关重要。品牌虽多&#xff0c;但并非所有产品都能成为品牌&#xff0c;创建品牌需大量精力&#xff0c;而让品牌长久健康发展则需多方面努力。 力维网络服务众多知名品牌&#xff0c;总结出一些渠道治理方法供品牌参考。首先&#xff0c;管…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么&#xff1f; Matlab&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名&#xff0c;广泛应用于科学研究、工程模拟…

IP协议(二)

TOC 一: 网段划分 同一个局域网的主机,要按一定的规则分配IP地址 把一个IP地址分为两部分: 前半部分 ,网络号 >用来表示局域网后半部分,主机号 > 用来区分同一个局域网中的不同主机 同一个局域网内部&#xff0c;主机之间的IP &#xff0c; 网络号相同&#xff0c;主…

进口电动双座调节阀选型-美国品牌

在选型进口电动双座调节阀时&#xff0c;需要综合考虑多个因素以确保选择到最适合的调节阀。以下是一个清晰的选型指南&#xff0c;结合了参考文章中的相关信息&#xff1a; 1. 根据工艺需求确定调节阀类型 流量需求&#xff1a;对于需要大流量调节的场合&#xff0c;双座调节…

选电气还是机械?

电气工程和机械工程都是非常重要的工程领域&#xff0c;但它们确实有不同的特点和就业前景。我这里有一套自动化入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习自动化&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&…

基于LangChain的Prompt模板

简介&#xff1a; LangChain是一个开源库&#xff0c;简化了基于LLM的AI应用开发&#xff0c;充当AI开发的万能适配器&#xff0c;抽象并整合了大语言模型&#xff08;如OpenAI和文心&#xff09;的交互。要使用LangChain&#xff0c;首先通过pip install langchain安装。示例展…

还在为复制粘贴烦恼吗?这5个工具帮你轻松搞定

在日常工作中&#xff0c;CtrlC和CtrlV无疑是我们使用最为频繁的快捷键组合。 复制粘贴&#xff0c;轻松快捷。 但是在使用中&#xff0c;也会有一点不便&#xff0c;那就是无法保存剪贴历史内容。 比如我说复制之后&#xff0c;我想要想要找回这一次复制之前的内容&#xf…

2024年,计算机相关专业还值得选择吗?

计算机专业&#xff1a;2024年的热门选择还是明智之选&#xff1f; 随着2024年高考的尘埃落定&#xff0c;许多考生和家长都站在了人生新的十字路口&#xff0c;思考着如何为未来的职业生涯铺设基石。在众多专业中&#xff0c;计算机相关专业始终占据着一席之地&#xff0c;其…

javaspringbootmysql小程序的竞赛管理系统71209-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景, 运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数库来完成对系统的设计。整个开发过程首先对竞赛管理系统进行需求分…

上位机图像处理和嵌入式模块部署(f407 mcu中的网络开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和大家想的不太一样&#xff0c;只要mcu当中带有了mac ip&#xff0c;那么就意味着mcu本身支持了网络开发。但是如果需要mcu支持完整的tcp/ip&…

用友U8 表单视图名查询方法

比如要获取【采购订单】表名和视图名 具体操作如下&#xff1a; 先打开写字板&#xff0c;然后进入U8的采购订单做单界面&#xff0c;按住键盘上的&#xff0c;CtrlshiftC&#xff0c;有的是CtrlC&#xff0c;点增加 然后CtrlV到写字板 key就是采购订单的值 打开SQL 输入语句…

《大道平渊》· 拾贰 —— 天下大事必作于细:做好每一件小事,必然大有所成!

《平渊》 拾贰 "天下难事必作于易&#xff0c;天下大事必作于细。" 社群一位大佬最近在研究新项目, 他做事的 "方法论" 令我深受启发。 他在测试项目时, 每一步都做的非常细致&#xff1a; 整个项目的测试都被划分为一件件小事, 然后有条不紊地推进…… …

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局按钮组件封装&#xff0c;可根据UI设计师要求自定义修改。 Button组件 1. 功能分析 &#xff08;1&#xff09;可以通过className属性自定义按钮样式&#xff0c;传递…

多客圈子论坛系统 httpGet 任意文件读取漏洞复现

0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…

运营商大模型进化之路:策略分野与AI未来的璀璨展望

运营商大模型的进化路线“分野”与AI大模型的璀璨前景 随着人工智能技术的飞速发展&#xff0c;AI大模型已成为推动科技进步和产业变革的重要力量。在这个浪潮中&#xff0c;运营商作为通信行业的巨头&#xff0c;也纷纷投入大模型的研发与应用&#xff0c;探索出各自独特的进化…

css 剪切属性clip-path

实现效果如下&#xff1a; <!DOCTYPE html> <html><head><style>.clipped {width: 200px;height: 200px;background-color: #3498db;clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 30% 100%);}</style></head><body><div cla…

弘君资本股市资讯:增逾20倍!百亿细分龙头利好来了

5月以来&#xff0c;A股进入了时间短的成绩发表空档期&#xff0c;而百亿化工细分龙头齐翔腾达&#xff0c;则以一份高增的成绩预告&#xff0c;摆开半年报成绩预告发表序幕。 6月10日晚间&#xff0c;齐翔腾达发表的成绩预告显现&#xff0c;上半年估计完成归母净赢利1.3亿元…

全球Web数据库管理工具推荐(ChatGPT 4o的推荐是什么样?)

在现代数据管理和开发中&#xff0c;Web数据库管理工具变得越来越重要。这些工具不仅提供了直观的用户界面&#xff0c;还支持跨平台操作&#xff0c;方便用户在任何地方进行数据库管理。 目录 1. SQLynx 2. phpMyAdmin 3. Adminer 4. DBeaver 5 结论 以下是几款推荐的Web…