MySQL 多表查询强化练习

环境准备

create table dept(
	id int PRIMARY KEY,
	dname VARCHAR(50),
	loc VARCHAR(50)
);
insert into dept values
(10,'研发部','北京'),
(20,'学工部', '上海'),
(30,'销售部','广州' ),
(40,'财务部','深圳');

create table job(
	id int PRIMARY KEY,
	jname VARCHAR(20),
	descripition VARCHAR(50)
);

INSERT INTO job VALUES
(1,'董事长','管理整个公司接单'),
(2,'经理','管理部门员工'),
(3,'销售员','向客人推销产品'),
(4,'文员','使用办公软件');

CREATE TABLE salarygrade(
	grade int primary key,
	losalary int,
	hisalary int
);

insert into 
	salarygrade 
VALUES
	(1,7000,12000),
	(2,12000,14000),
	(3,14000,20010),
	(4,20010,30010),
	(5,30010,99990)
;

create table emp(
	id int PRIMARY KEY,
	ename VARCHAR(50),
	job_id INT,
	mgr INT,
	joindate date,
	salary DECIMAL(7,2),
	bonus DECIMAL(7,2),
	dept_id INT,
	FOREIGN KEY(job_id) REFERENCES job(id),
	FOREIGN KEY(dept_id) REFERENCES dept(id)
);

insert into emp values
(1001,'孙悟空',4,1004,'2000-12-17','8000.00',NULL,20),
(1002,'卢俊义',3,1006,'2001-02-20','16000.00','3000.00',30),
(100,'林冲',3,1006,'2001-02-22','12500.00','5000.00',30),
(1004,'唐僧',2,1009,'2001-04-02','29750.00',NULL,20),
(1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00',30),
(1006,'宋江',2,1009, '2001-05-01','28500.00',NULL,30),
(1007,'刘备',2,1009,'2001-09-01','24500.00',NULL,10),
(1008,'猪八戒',4,1004,'2007-04-19','30000.00',NULL,20),
(1009,'罗贯中',1,NULL,'2001-11-17','50000.00',NULL,10),
(1010,'吴用',3,1006,'2001-09-08','15000.00','0.00',30),
(1011,'沙僧',4,1004,'2007-05-23','11000.00',NULL,20),
(1012,'李逵',4,1006,'2001-12-03','9500.00',NULL,30),
(1013,'小白龙',4,1004,'2001-12-03','30000.00',NULL,20),
(1014,'关羽',4,1007,'2002-01-23','13000.00',NULL,10);
1.查询所有员工信息,查询员工编号,员工姓名,工资,职务名称,职务描述
select 	
	t1.id,t1.ename,t1.salary,t2.jname,t2.descripition
from 
	emp t1,job t2
where
	t1.job_id=t2.id
;

在这里插入图片描述

2.查询员工编号,员工名称,工资,职务名称,职务描述,部门名称,部门位置
//分析: 
//1.员工编号,员工名称,工资 emp
//2.职务名称,职务描述 job
//3.部门名称,部门位置 dept
//条件:
//1.emp.job_id=job.id
//2.emp.dept_id=dept.id
select 
	t1.id,t1.ename,t1.salary,
	t2.jname,t2.descripition,
	t3.dname,t3.loc
from 
	emp t1,job t2, dept t3
where 
	t1.job_id=t2.id and t1.dept_id=t3.id
;

在这里插入图片描述

3.查询员工名称,工资,工资等级
//分析:
//1.员工名称, 工资 emp 
//2.工资等级 salarygrade 
//条件:
//1.emp.salary >= salarygrade.losalary and emp.salary <= salarygrade.hisalary
//或者 emp.salary between salarygrade.losalary and  salarygrade.hisalary

select 
	t1.ename,t1.salary,t2.grade
from 
	emp t1,salarygrade t2
where 
	t1.salary between t2.losalary and t2.hisalary
;

在这里插入图片描述

4.查询员工名称,工资,职务名称,职务描述,部门名称,部门位置,工资等级
//分析:
//1.员工名称,工资 emp
//2.职务名称,职务描述 job
//3.部门名称,部门位置 dept
//4.工资等级 salarygrade
//条件:
//1.emp.job_id=job.id
//2.emp.dept_id=dept.id
//3.emp.salary between salarygrade.losalary and  salarygrade.hisalary

select 
	t1.ename,t1.salary,t2.jname,t2.descripition,t3.dname,t3.loc,t4.grade
from 
	emp t1,job t2,dept t3,salarygrade t4
where 
	t1.job_id=t2.id and t1.dept_id=t3.id and t1.salary between t4.losalary and t4.hisalary
;

在这里插入图片描述

5.查询出部门编号,部门名称,部门位置,部门人数
//分析:
//1.部门名称,部门位置 dept
//2.部门人数 emp
//条件
//1.根据emp.dept_id进行分组,查询count(id)
//2.使用子查询将上一步的结果和dept表进行关联查询

select 
	t1.id,t1.dname,t1.loc,t2.total	
from 
	dept t1,
	(select dept_id,count(id) total from emp group by dept_id) t2
where 
	t1.id = t2.dept_id
;

在这里插入图片描述

6.查询所有员工的姓名及其直接上级的名称,没有领导的员工也需要查询
//分析:
//1.员工的姓名 emp->t1
//2.直接上级的名称 emp->t2
//条件
//1.t1.mgr=t2.id
//2.左外连接

select 
	t1.id, t1.ename,t2.id, t2.ename
from 
	emp t1
left join
	emp t2
on 
	t1.mgr=t2.id
;

在这里插入图片描述

点击返回 MySQL 快速学习目录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

latex如何对一段文本进行加粗

在LaTeX中&#xff0c;你可以使用\textbf{}命令来对一段文本进行加粗。例如&#xff1a; \textbf{这是要加粗的文本}这将会把"这是要加粗的文本"这段文字显示为加粗。 如果你想要对整段文本进行加粗&#xff0c;你可以将整段文本都放在\textbf{}命令中&#xff0c;…

jsp学习

1.新建文件&#xff0c;创建web动态项目 2.项目点击next两下&#xff0c;点击勾选gentear&#xff0c;点击finish 3.文件成功后是有jsp文件 4.在webapp新建jsp文件 5. 使用模板html5建立文件 <% page language"java" contentType"text/html; charsetUTF-8&qu…

西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)

前言 在学习到这部分时&#xff0c;对 ℓ-rank 以及AUC的关系难以理解透彻&#xff0c;在网上看到其他博主也并未弄明白&#xff0c;大家大多写自己的理解&#xff0c;我希望您在看完这篇文章时能够深刻理解这二者的关系&#xff0c;如果我的理解有误&#xff0c;希望您在评论…

数据结构 之 二叉树

&#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff01;&#xff01;&…

python网络爬虫实战教学——urllib的使用(1)

文章目录 专栏导读1、前言2、urllib的使用3、发送请求3.1 urlopen3.2 request 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对…

mysql 数据库 基本介绍

一 数据 &#xff08;一&#xff09;数据是什么 描述事物的符号记录 包括数字&#xff0c;文字、图形、图像、声音、档案记录气 以“记录”形式按统一的格式进行存储 &#xff08;二&#xff09;数据的分类 1&#xff0c;结构化的数据 即有固定格式和有限长度的数据。例…

01_Kubernetes基础

Kubernetes为什么叫K8S&#xff1a;因为K和S之间有8个字母 为什么需要K8S 对于云计算来说有自己的交互标准 Paas的下一代标准就是容器化&#xff0c;容器的集群化有没有很好的方案&#xff1f;有需求就会有产品&#xff0c;这个产品就叫做资源管理器。 首先是Apache的MESOS&…

Linux虚拟主机默认隐藏文件,如何开启显示

收到一位用户反馈他买了Hostease Linux虚拟主机&#xff0c;想要知道主机默认隐藏文件如何开启。据悉目前大部分主机提供商出售的Linux虚拟主机带的都是cPanel面板&#xff0c;因此开启隐藏文件操做需要进入到cPanel面板。操做步骤如下&#xff1a; 1.首先需要先登陆cPanel面板…

深度强化学习03价值学习

Q*类似于先知&#xff0c;知道动作的后果 价值学习是得到一个近似的价值函数

【Linux】Linux安装软件---软件包管理器 yum

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.Linux中安装软件 1.1 源代码安装 1.2 rpm包安装 1.3 yum安装 1.3.1 举例 1.3.2 图示yum下载安装 2.Linux系统的生态 如何选…

如何构建Docker自定义镜像

说明&#xff1a;平常我们使用Docker运行各种容器&#xff0c;极大地方便了我们对开发应用的使用&#xff0c;如MySQL、Redis&#xff0c;以及各种中间件&#xff0c;使用时只要拉镜像&#xff0c;运行容器即可。本文介绍如何创建一个Demo&#xff0c;自定义构建一个镜像。 开…

酷开科技聚焦大屏端数据研究,构建酷开系统深度挖掘大屏商业价值

中国所有的彩色大屏中&#xff0c;智能电视规模已经过半&#xff0c;OTT平台的数据价值越发引起人们关注。作为OTT行业的头部代表&#xff0c;酷开科技一直聚焦大屏端数据研究&#xff0c;目前已经形成一套基于大屏指数的智慧营销体系&#xff0c;让OTT大屏的数字营销化水平实现…

开源工具专题-02 Confluence企业级wiki

开源工具专题-02 Confluence企业级wiki 注&#xff1a; 本教程由羞涩梦整理同步发布&#xff0c;本人技术分享站点&#xff1a;blog.hukanfa.com 转发本文请备注原文链接&#xff0c;本文内容整理日期&#xff1a;2024-3-20 csdn 博客名称&#xff1a;五维空间-影子&#xf…

使用libdivsufsort库构建后缀数组

libdivsufsort是一个C语言库,用于构建后缀数组(Suffix Array)以及执行与后缀数组相关的操作。后缀数组是一种数据结构,用于有效地解决字符串处理问题,如字符串匹配、最长公共子串等。这个库的目标是提供高效、可移植和易于使用的后缀数组实现。 https://github.com/y-256…

我的自建博客之旅06之Mrdoc

这个是我折腾笔记项目的最后一篇文章了,这个项目是类似于语雀的文档笔记项目,因为我当初想找一个既可以当做笔记,又可以作为团队文档分享的笔记,除了语雀,就发现了这个项目。 这个开源项目的界面或者文档组织方式其实是我最喜欢的,但是我后来放弃它的原因是它的后台编辑逻…

Android StateLayout状态页

文章目录 Android StateLayout状态页概述源码使用源码下载 Android StateLayout状态页 概述 StateLayout&#xff08;状态页&#xff09;包含&#xff1a;加载中页面&#xff0c;错误页面&#xff0c;空页面&#xff0c;内含状态默认页面&#xff0c;支持自定义页面。 源码 …

提高WhatsApp营销效果:如何在WhatsApp上增加打开率和提高转化率?

提高WhatsApp营销效果&#xff1a;如何在WhatsApp上增加打开率和提高转化率&#xff1f; WhatsApp是一款广受欢迎的社交应用程序&#xff0c;不仅可以用于个人通讯&#xff0c;也可以用于企业营销。许多企业已经开始在WhatsApp上进行营销活动&#xff0c;但是如何提高营销效果…

极佳文件备份工具支持独占文件备份

1 指定备份的文件夹或者分区盘符 或者子文件夹dir1;dir2;dir3; 2 指定备份到哪里 例如disk1 E分区内的backup文件夹 3 指定备份周期 每日几点几分备份&#xff0c;每周几 几点几分备份 或者 间隔几时几分备份 4 备份模式 单向 将数据源文件夹 完整复制到 目标文件夹, 包括正…

JavaScript高级(十八)---进程和线程,宏任务和微任务

进程和线程 进程&#xff08;process&#xff09;&#xff1a;计算机已经运行的程序&#xff0c;是操作系统管理程序的一种方式&#xff0c;我们可以认为&#xff0c;启动一个应用程序&#xff0c;就会默认启动一个进程&#xff08;也可能是多个进程&#xff09;。 线程&…

【现代C++】移动语义和右值引用

现代C中的移动语义和右值引用是C11引入的重要特性&#xff0c;旨在优化资源管理和提升性能。这些特性允许资源的转移而非复制&#xff0c;特别是对于临时对象和大型对象。 1. 右值引用 右值引用是对临时对象的引用&#xff0c;它允许你修改临时对象。使用&&来声明右值…