首页 > 数据库 >Mysql-多表查询子查询 案例

Mysql-多表查询子查询 案例

时间:2022-11-27 14:11:34浏览次数:41  
标签:多表 t2 t1 dept job emp Mysql 查询 id

-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
/*
分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id

/
-- 隐式内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description
FROM
emp t1,
job t2
WHERE
t1.job_id = t2.id;
-- 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id;
-- 2. 有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
/

分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id
4.部门名称和部门位置来自于部门表dept表
5.dept和emp一对多的关系 dept.id=emp.dept_id

/
-- 隐式内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc
FROM
emp t1,
job t2,
dept t3
WHERE
t1.job_id = t2.id
AND t3.id = t1.dept_id;
-- 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id
INNER JOIN dept t3 ON t3.id = t1.dept_id;
--3.查询员工姓名,工资,工资等级 /

分析:
1.员工姓名,工资 信息在emp表
2.工资等级 信息在salarygrade 工资等级表
3.emp.salary>=salarygrade.losalary and emp.salary <= salarygrade.hisalary

*/

SELECT
emp.ename,
emp.salary,
t2.*
FROM
emp,
salarygrade t2
WHERE
emp.salary >= t2.losalary
AND emp.salary <= t2.hisalary;

-- 使用between and 优化
SELECT
emp.ename,
emp.salary,
t2.*
FROM
emp,
salarygrade t2
WHERE
emp.salary
BETWEEN t2.losalary
AND t2.hisalary;

-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
/*
分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id
4.部门名称和部门位置来自于部门表dept表
5.dept和emp一对多的关系 dept.id=emp.dept_id
6工资等级 信息在salarygrade 工资等级表
7emp.salary>=salarygrade.losalary and emp.salary <= salarygrade.hisalary

*/
-- 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc,
t4.grade
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id
INNER JOIN dept t3 ON t3.id = t1.dept_id
INNER JOIN salarygrade t4 oN t1.salary BETWEEN t4.losalary and t4.hisalary
;

-- 查询出部门的编号,部门名称,部门位置,部门人数

/*
分析:
	1.部门的编号,部门名称,部门位置 在dept部门表
	2.部门人数:在emp表中按照对应的dept_id 分组 用count(*)统计数量
	3.使用子查询让部门表和分组后的表进行内连接

*/
select * from dept ;

SELECT dept_id,count(*) from emp GROUP BY dept_id;

SELECT
dept.id,
dept.dname,
dept.loc,
t1.count
FROM
dept,(
SELECT
dept_id,
count(*) count
FROM
emp
GROUP BY
dept_id
) t1
WHERE
dept.id = t1.dept_id;

标签:多表,t2,t1,dept,job,emp,Mysql,查询,id
From: https://www.cnblogs.com/cy-xt/p/16929579.html

相关文章

  • 基于Servlet+jsp+mysql开发javaWeb学生管理系统(学生信息、学生选课、学生成绩、学生
    你知道的越多,你不知道的越多点赞再看,养成习惯文章目录​​一、开发背景​​​​二、需求分析​​​​三、开发环境​​​​四、运行效果​​​​五、开发流程​​​​工......
  • Mysql 启动报错问题排查
    报错信息1:MySQL启动报错:File./mysql-bin.indexnotfound(Errcode:13)_MySQL请检查MySQL数据目录的权限/usr/local/mysql/data  ,  errcode13,一般就是权限问题,my......
  • MySQL 5.6/8.0 zip 安装
    MySQL5.7/8.0zip先安装rem配置系统环境变量Path中添加mysql.zip\bincd/dmysql.zip\binrem本地root密码为空mysqld--initialize-insecuremysqldinstallnet......
  • MySQL8.0新特性—生成列
    生成列(generatedcolumn)的值是根据列定义中包含的表达式计算得出的。生成列包含下面两种类型:virtual(虚拟):当从表中读取记录时,将动态计算该列。stored(存储):当向表中写入新......
  • 【MySQL】记一次复杂数据查询排重
    事原在某一次仿真环境测试过程中发现数据列表中出现重复条目,如下图:经过排查后发现,用户登录后cust_id(企业id)字段做了mybatis的动态语句判断。其中出现问题的SQL脚本如下:SELEC......
  • Failed to start mysqld.service: Unit not found
    转载自:https://blog.csdn.net/miaodichiyou/article/details/99289160 ========================= 很多人对本博客的方法提出了质疑,在此我解释一下:由于MySQL在CentO......
  • 记录一次MySQL主从同步
    主库配置server-id=1log-bin=mysql-binbinlog_format=ROWbinlog_row_image=minimalbinlog-do-db=yjtb-cloud解释一哈,server-id必须要唯一,如果你的数据库没有特意配置事务......
  • 二进制安装Mysql数据库的快速方法
    二进制安装Mysql数据库的快速方法摘要还是国产操作系统rpm包可能不太兼容,为了简单准备使用tar包方式安装mysql数据库这里简单记录一下过程.为以后使用.介质下载......
  • Net6 操作时序数据库influxdb,数据插入查询/增删存储桶
    十年河东,十年河西,莫骑少年穷学无止境,精益求精官方文档:​​https://docs.influxdata.com/influxdb/v2.4/api/​​1、项目详情<ProjectSdk="Microsoft.NET.Sdk"><Property......
  • MySQL安装详细教程
    mysql是一个关系型数据库软件,由瑞典MySQLAB公司开发,目前属于Oracle公司。为什么使用mysql:1)mysql是开源的,所以你不需要支付额外的费用就能使用。2)mysql支持大型的数据库......