数据库的多表连接查询 emp表,dept表,salgrade表

emp表,dept表,salgrade表 相关表

#创建dept表
CREATE table dept(
DEPTON int(2) not NULL,
DNAME  varchar(14),
LOC    varchar(13)
)
INSERT into dept VALUES(10,'ACCOUNTING','NEW YORK');
INSERT into dept VALUES(20,'RESEARCH','DALLAS');
INSERT into dept VALUES(30,'SALES','CHICAGO');
INSERT into dept VALUES(40,'OPERATIONS','BOSTON');
#创建emp表
CREATE TABLE emp(
empno int(4) not null,
ename varchar(10),
job varchar(9),
mgr int(4),
hiredate date,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno int(2)
)
INSERT into emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT into emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT into emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT into emp values(7566,'JONES','MANNAGER',7839,'1981-04-02',2975,NULL,20);
INSERT into emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT into emp values(7698,'BLAKE','MANNAGER',7839,'1981-05-01',2850,NULL,30);
INSERT into emp values(7782,'CLARK','MANNAGER',7839,'1981-06-09',2450,NULL,10);
INSERT into emp values(7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20);
INSERT into emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT into emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT into emp values(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
INSERT into emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT into emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT into emp values(7934,'MILLER','CLERK',7782,'1982-01-13',1300,NULL,10);
#创建salgrade表
CREATE TABLE salgrade(
GRADE int(11) not NULL,
LOSAL VARCHAR(14),
HISAL VARCHAR(13)
)
INSERT into salgrade values(1,'700','1200');
INSERT into salgrade values(2,'1201','1400');
INSERT into salgrade values(3,'1401','2000');
INSERT into salgrade values(4,'2001','3000');
INSERT into salgrade values(5,'3001','9999');

emp表

dept表

salgrade表

#1.列出至少有三个员工的所有部门和部门信息。
//第一步先查出至少有三个员工的部门,然后通过查出来的结果当成一个新表与dept表建立关系,查出结果
SELECT deptno,dname,loc  from  dept d ,(SELECT deptno,count(*) from emp GROUP BY deptno HAVING  count(*)>=3) e WHERE d.depton=e.deptno
#2.列出所有员工的姓名及其上级的姓名。
//通过隐式内连接查找SELECT e1.ename,e2.ename  from emp e1,emp e2 WHERE e1.mgr=e2.empno;
#3.列出受雇日期早于直接上级的所有员工的编号,姓名,部门名称
SELECT  e3.e4,e3.e5,e3.e7,dname FROM dept d,
(SELECT e1.empno e4,e1.ename e5,e2.ename e6,e1.deptno e7  from emp e1,emp e2
WHERE e1.mgr=e2.empno and e1.hiredate<e2.hiredate) e3
WHERE d.depton=e3.e7;
#4.列出部门名称和这些部门员工的信息,同时列出那些没有员工的部门。
SELECT * from emp e RIGHT JOIN dept d on e.deptno=d.DEPTON
#5.列出“CLERK”的姓名和部门名称,部门人数:
SELECT ename,deptno,dname,d2.sum from  dept d1,(SELECT e.ename,e.deptno,d.sum FROM
(SELECT ename,deptno from emp WHERE job='clerk') e,
(SELECT deptno,COUNT(*) sum from emp GROUP BY deptno) d WHERE e.deptno=d.deptno) d2
WHERE  d1.depton=d2.deptno
#6.列出最低薪金大于1500的各种工作以及从事此工作的全部雇员人数
SELECT job,count(*) from emp GROUP BY job HAVING min(sal)>1500
#7.列出在部门销售部工作的员工姓名,假设不知道销售部的部门编号
SELECT ename from emp WHERE deptno=(SELECT depton FROM dept WHERE dname='sales')
#8.列出薪金高于工资平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
SELECT e6.e3,e6.e4,e6.e5,e6.e7,s.grade  FROM
(SELECT e1.ename e3,e1.deptno e4,e2.ename e5,e1.sal e7 FROM emp e1,emp e2
WHERE e1.sal>(SELECT avg(sal) FROM emp )
AND e1.mgr=e2.empno) e6,salgrade s
where e6.e7 BETWEEN s.losal and hisal
#9.列出和“SCOTT”从事相同工作的所有员工及部门名称:
SELECT e.ename,e.deptno,d.dname   from  (SELECT ename,deptno FROM emp WHERE job=(SELECT job from emp where ename='scott')) e,
dept d WHERE e.deptno=d.depton
#10.列出薪金等于部门30中员工薪金的所有员工的姓名和薪金
SELECT e.ename,e.sal from emp e WHERE sal in(SELECT sal from emp WHERE deptno=30)
#11.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称
SELECT ename,sal,deptno from emp WHERE sal>(SELECT MAX(sal) from emp WHERE deptno=30 )
#12.列出所有部门的详细信息和部门人数
SELECT e.deptno,e.sum,d.dname FROM (SELECT deptno,COUNT(*) sum from emp GROUP BY deptno) e, dept d WHERE e.deptno=d.depton
#13、列出各种工作的最低工资以及从事此工作的雇员姓名:
SELECT ename,sal FROM emp WHERE sal in(SELECT MIN(sal) from emp GROUP BY job)
#14、列出各个部门的MANAGER 的最低薪金:
SELECT deptno,min(sal) FROM emp WHERE job='manager' GROUP BY deptno
#15、列出所有员工的年工资,按照年薪从低到高排序:
SELECT ename,sal*12+IFNULL(comm,0)*12 salall from emp ORDER BY salall
#16、查询出某个员工的上级主管,并要求这些主管中的薪水超过3000
SELECT e1.ename,e2.ename from emp e1,emp e2 WHERE e1.mgr=e2.empno  and e2.sal>3000
#17、求出部门名称中带有’S‘字符的部门员工的工资合计,部门人数
select dname,ifnull(sum_sal,0) '工资合计',ifnull(人数,0) '人数' from dept LEFT JOIN
(select deptno, sum(sal) 'sum_sal',count(*) '人数'
from emp GROUP BY deptno) a on a.DEPTNO = dept.DEPTON where dname like '%s%'
#18、给任职日期超过10年的人加薪10%;
select ename,if(year(now())-year(hiredate)>39,sal*1.1,sal) from emp

数据库的多表连接查询 emp表,dept表,salgrade表相关推荐

  1. mysql select符合查询_数据库select group by 和having语句 多表连接查询 复合查询

    1.SELECT --group by 子句 group by子句按照指定的列column_name对表数据进行分组 group by 后面跟的列也叫分组特性列 使用group by后,能选择的列   ...

  2. oracle表连接查询逗号隔开_Oracle多表连接查询

    连接:将一张表中的行按照某种条件和另一张表中的行连接起来形成一个新行的的过程. 根据连接查询返回的结果,分为3类: 内连接(inner join) 外连接(outer join) 交叉连接(cross ...

  3. [Mysql] 多表连接查询

    在之前的学习当中,我们查询使用的都是一张表,而在实际的数据分析业务中,经常会使用多张表.将多张表连接起来就是多表连接(从一个表扩展为两个表,也可以更多个表) 多表连接查询 当查询结果的列来源于多张表时 ...

  4. 明了的 —— Mysql 多表连接查询

    Mysql 多表连接查询 每博一文案 看过这样一句话,我一直在寻找一个人能,在寒冷的日子里 牵起一双温暖的手,踏实向前走,但若是找了很久都没有寻到, 我便不再相信这个世界有这样一个人的存在, 当一个人 ...

  5. MySQL多表连接查询——等值连接、非等值连接和自连接

    MySQL多表连接查询 1. 含义: 又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 笛卡尔乘积现象: 表1 有m行,                               表2 有 ...

  6. Oracle数据库多表连接查询操作以及查询操作的补充

    文章目录 一.查询语句概述 1.查询语句基本语法格式 2.伪表和伪劣 二.单表查询 1.select子句 2.FROM子句 3.WHERE子句 4.DISTINCT关键字 5.GROUP BY子句与聚 ...

  7. 达梦数据库DM8-多表连接查询

    达梦数据库DM8-多表连接查询 系列文章目录 本文环境 1.达梦数据库连接查询介绍 2.交叉连接(cross join)迪卡集 2.1 无过滤条件 2.1 有过滤条件 3.自然连接 4.join... ...

  8. mysql教程详解之多表联合查询_详解数据库多表连接查询的实现方法

    详解数据库多表连接查询的实现方法 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必 ...

  9. Oracle数据库表连接查询并分页SQL语句提示未明确定义列

    Oracle数据库表连接查询并分页SQL语句提示未明确定义列 两张表中的字段: t_product t_category product_id category_id product_name cat ...

最新文章

  1. Selenium3自动化测试——9.多窗口切换
  2. linux下vim编辑器的基本使用
  3. C++高斯赛德迭代法,求线性方程组的解(version1.0)
  4. ZOJ_3501 Roman Order
  5. pythonweb开发面试_python 高级岗位面试要求
  6. BST(Binary Search Tree 二叉查找树模版)
  7. leetcode 341. Flatten Nested List Iterator | 341. 扁平化嵌套列表迭代器(Java)
  8. 告别只会调参和调包,全球顶会论文审稿人带你7天玩转图像分割
  9. Greenplum 添加或删除standby master节点
  10. 树莓派3B+ Ubuntu mate16.04 开启热点
  11. android自定义工具栏,Android工具栏中的自定义图标
  12. 学习PHP-感谢帅哥分享O(∩_∩)O~
  13. python 图像模糊处理实现
  14. 用计算机算出别人多少岁,年龄计算器 年龄计算器查询
  15. 洛谷 P4147 玉蟾宫【悬线法/单调栈】
  16. win10 运行debussy不能打开波形窗口问题
  17. 使用region注释,将代码块收(折叠)起来
  18. 微信小程序——前端——抵扣券、优惠券样式
  19. python 不转义:含有转义字符\的字符串
  20. uname 命令如何实现?

热门文章

  1. flask mysql 1366_Flask利用pymysql出现Warning:1366的解决办法
  2. 【让我们再聊聊浏览器资源加载优化】
  3. 【博弈论】【第一章】博弈论导论
  4. macOS Command - xattr
  5. hz和分贝怎么转换_分贝转换
  6. Linux服务器在线测速
  7. 机器学习性能评价指标汇总
  8. python中有数组吗_python中有数组吗
  9. 手机淘宝搜索排名的那些规则你知道多少?
  10. 分布式内存数据技术为查询提速