文章目录

数据库准备

show databases ;
create database multi_query_example;drop table if exists employee;
drop table if exists job_position;
drop table if exists department;
drop table if exists salary_grade;
-- 按顺序建立部门表,职位表,员工表,工资等级表
create table department(id int primary key ,name varchar(50),location varchar(50)
);create table job_position(id int primary key ,name varchar(20),description varchar(50)
);create table employee(id int primary key ,name varchar(50),job_id int ,supervisor int,join_date date,salary decimal(7,1),bonus decimal(7,1),depart_id int,constraint emp_job_id_fk foreign key (job_id)references job_position (id),constraint emp_depart_id_fk foreign key (depart_id)references department (id)
);create table salary_grade(grade int primary key ,low_salary int ,high_salary int
);
show tables;

建好表项之后ER图如此

-- 给每张表插入数据
insert into department(id,name,location) values
(10,'研发部','深圳'),
(20,'市场部','上海'),
(30,'财务部','北京'),
(40,'行政部','杭州');insert into job_position(id,name,description) values
(1,'董事长','公司重大决策签字人'),
(2,'部门经理','统筹各部门日常工作'),
(3,'市场专员','负责产品的宣传营销渠道'),
(4,'文员','维持公司内部运转');insert into employee(id,name,job_id,supervisor,join_date,salary,bonus,depart_id) values
(1001,'川建国',1,null,'2016-11-11','120000.0',null,20),
(1002,'伊万卡',2,1001,'2016-12-12','60000.0','20000.0',30),
(1003,'默克尔',2,1001,'2016-11-30','50000.0','14000.0',40),
(1004,'马斯克',2,1001,'2016-12-28','40000.0','10000.0',20),
(1005,'雷军',2,1001,'2017-01-15','30000.0','18000.0',10),
(1006,'罗翔',3,1004,'2017-01-20','20000.0','7000.0',20),
(1007,'林超',3,1004,'2017-02-12','18000.0','6000.0',20),
(1008,'董佳宁',3,1004,'2017-02-24','18000.0','5000.0',20),
(1009,'欣桐',4,1002,'2017-03-09','16000.0','4000.0',30),
(1010,'白骨精',4,1003,'2017-04-04','12000.0',null,40),
(1011,'蜘蛛精',4,1003,'2018-05-15','10000.0',null,40),
(1012,'鲁智深',3,1004,'2018-06-18','20000.0',null,20),
(1013,'孙二娘',4,1002,'2018-09-19','20000.0','5000.0',30),
(1014,'手工耿',4,1005,'2019-07-14','16000.0','14000.0',10);insert into salary_grade(grade, low_salary, high_salary) values
(1,1,15000),
(2,15001,20000),
(3,20001,30000),
(4,30001,50000),
(5,50001,999999);select *
from job_position;-- 更改此处表名查看各表内容

各表详情如下



文章目录

查询开始

-- 开始查询
-- 1.查询所有员工信息,员工编号,姓名,工资,职务名,职务描述
-- 隐式内连接,这里涉及员工表和职务表,是一对多的关系
select em.id, em.name, em.salary, jp.name, jp.description
from employee em,job_position jp
where em.job_id = jp.id;
-- 显式内连接
select em.id, em.name, em.salary, jp.name, jp.description
from employee emjoin job_position jp on em.job_id = jp.id;

-- 2.查询所有员工信息,员工编号,姓名,工资,职务名,职务描述,部门名,部门位置
-- 隐式内连接
select em.id, em.name, em.salary, jp.name, jp.description, dp.name, dp.location
from employee em,job_position jp,department dp
where em.job_id = jp.idand em.depart_id = dp.id;
-- 显式内连接
select em.id, em.name, em.salary, jp.name, jp.description, dp.name, dp.location
from employee emjoin job_position jp on jp.id = em.job_idjoin department dp on em.depart_id = dp.id;

-- 查询员工姓名,工资,工资等级,等级区间,注意正则*还可以这样这样用
-- 隐式
select name, salary, sg.*
from employee,salary_grade sg
where salary >= low_salaryand salary <= high_salary;-- 本例种除了正则表达式,别处无需使用别名
-- 显式
select name, salary, sg.*
from employeejoin salary_grade sg on salary between low_salary and high_salary;

-- 4.查询所有员工信息,员工编号,姓名,工资,职务名,职务描述,部门名,部门位置,工资等级,工资区间
-- 隐式
select em.id,em.name,em.salary,jp.name,jp.description,dp.name,dp.location,sg.*
from employee em,job_position jp,department dp,salary_grade sg
where em.job_id = jp.idand em.depart_id = dp.idand salary >= low_salaryand salary <= high_salary;
-- 显式
select em.id,em.name,em.salary,jp.name,jp.description,dp.name,dp.location,sg.*
from employee emjoin job_position jp on em.job_id = jp.idjoin department dp on dp.id = em.depart_idjoin salary_grade sg on salary between low_salary and high_salary;

-- 5.查询部门编号,名称,位置,人数
select depart_id, count(*) from employee group by depart_id;-- 这个查询构成子表,临时,虚拟表,提供所需人数统计
-- 隐式
select *
from department,(select depart_id, count(*) from employee group by depart_id) temp
where temp.depart_id = department.id;-- 此处临时表必须要别名,否则depart_id字段会引用员工表的,报错
-- 显式
select *
from departmentjoin (select depart_id, count(*) from employee group by depart_id) tempon temp.depart_id = department.id;

20220604_MySQL_多表查询案例相关推荐

  1. 将联表查询简化为单表查询案例

    目录 1.将联表查询简化为单表查询案例 1.1 问题描述 1.2 优化过程 1.2.1 将联表查询修改为单表查询 1.2.2 利用覆盖索引避免回表 1.将联表查询简化为单表查询案例 1.1 问题描述 ...

  2. [MySQL]学生表、教师表、课程表、授课表、成绩表的多表查询案例(1)

    多表查询环境:已有5个表,student为学生表,teacher为教师表,teaching为授课表,course为课程表,sc为成绩表. (1) 查询计算机工程系女学生的学生学号.姓名及考试成绩. S ...

  3. mysql 查询案例dept,emp表内数据

    mysql 查询案例dept,emp表内数据 部门表 员工表 工资等级表 查询案例: 部门表 CREATE TABLE DEPT( DEPTNO INT PRIMARY KEY, – 部门编号 DNA ...

  4. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)

    mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...

  5. MySQL学习第四弹——多表查询分类以及案例练习源码详解

    多表查询(续) 连接查询 内连接: 相当于查询集合A与集合B的交集部分 外连接 左外连接:查询左表所有数据,以及两张表交集部分数据 右外连接:查询右表所有数据,以及两张表交集部分数据 自连接:当前表与 ...

  6. mysql教程多表查询_mysql重点,表查询操作和多表查询

    表单查询 1. 完整的查询语句语法 select distinct(* or 字段名 or 四则运算 )from 表名 where 条件 group by 条件 having 条件 order by ...

  7. MySQL----多表查询

    MySQL----多表查询 多表关系 表与表之间的联系: 一对多(多对一) 多对多 一对一 多表查询 多表查询的分类 数据准备 内连接 外连接 自连接 联合查询 子查询 标量子查询 列子查询 行子查询 ...

  8. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  9. 基础第三-MySQL-多表查询-索引-事务笔记

    多表查询介绍 目标 了解什么是多表查询,及多表查询的两种方式 什么是多表查询 查询多张表才能得到我们想要的数据 比如:我们想查询到孙悟空在哪个部门,需要将部门表和员工表同时进行查询 [外链图片转存失败 ...

最新文章

  1. hibernate里的generator中class =value介绍
  2. 子元素超出了父元素的高度_T恤定制融入中国元素,美出新高度
  3. linux下搭建hadoop环境步骤分享
  4. 将python编程为c_使用Cython为Python编写更快的C扩展
  5. python编程入门与实践_Python编程入门到实践(二)
  6. 小甲鱼Python第十九讲课后习题
  7. 一个老鸟眼中“IT民工”的发展方向
  8. 中国营养与健康调查(CHNS)2018年最新数据
  9. 同步、异步、阻塞与非阻塞给你说得明明白白
  10. FTP服务简介与配置
  11. 最新Win10离线安装.NET Framework 3.5的方法(不需要离线包,只需原版系统安装包,亲测完美快捷有效)
  12. 网站制作从原型图架构到设计开发的具体步骤
  13. 自律-克服不良习惯读后感
  14. SQL取日期为当前月份的第几周思路
  15. win10解决安装时的2503 2502问题
  16. Linux命令:dmesg
  17. 最新 | 用深度强化学习打造不亏钱的交易机器人(附代码)
  18. Java——从前序与中序遍历序列构造二叉树
  19. 日本知识产权局新设物联网相关技术专利分类
  20. Windows Server2012远程桌面服务配置和授权激活

热门文章

  1. 补充知识:笛卡尔积演示
  2. Java多线程,锁(CAS,synchronized,AQS,ReentrantLock)
  3. 2019年度中国锂离子电池出口百强榜发布
  4. java判断按钮已选择的值_如何获取buttonGroup的选定单选按钮的值 - java
  5. solr8.3.0查询
  6. python批量上传图片,python+selenium+Autoit+pandas 批量上传图片
  7. 使用segyio模块打开segy格式数据时出现RuntimeError: unable to find sorting
  8. PostgreSQL 中文(汉字)数字转阿拉伯数字
  9. 心脏出血漏洞复现(CVE-2014-0160)
  10. 有哪些linux的中文网站,开源中文社区