《Java面试题—数据库》

-- 1.列出至少有一个员工的所有部门。
-- SELECT DNAME FROM dept WHERE DEPTNO IN(SELECT DEPTNO FROM emp);  
-- 2.列出薪金比“SMITH”多或者相等的所有员工。
-- SELECT * FROM emp WHERE SAL > (SELECT SAL FROM emp WHERE ENAME = 'SMITH');  
-- 3.列出所有员工的姓名及其直接上级的姓名。
-- SELECT A.ENAME,(SELECT ENAME FROM emp B WHERE B.EMPNO =A.MGR) AS MGR_NAME FROM emp A; 
-- 4.列出受雇日期早于其直接上级的所有员工。
-- SELECT A.* FROM emp A WHERE A.HIREDATE<(SELECT HIREDATE FROM emp B WHERE B.EMPNO=A.MGR);
-- 5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
-- SELECT A.DNAME,B.* FROM dept A LEFT JOIN emp B ON A.DEPTNO=B.DEPTNO;  

  • 外连接:
  • left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
  • right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

-- 6.列出所有“CLERK”(办事员)的姓名及其部门名称。
-- SELECT A.ENAME,B.DNAME FROM emp A JOIN dept B ON A.DEPTNO=B.DEPTNO AND A.JOB='CLERK'; 

  • 内连接:join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

-- 7.列出最低薪金大于1500的各种工作。
-- SELECT DISTINCT JOB AS HIGHSAL_JOB FROM emp GROUP BY JOB HAVING MIN(SAL)>1500;  

  • DISTINCT:用于返回唯一不同的值。
  • HAVING:筛选分组后的各组数据。

-- 8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
-- SELECT ENAME FROM emp WHERE DEPTNO=(SELECT DEPTNO FROM dept WHERE DNAME='SALES');
-- 9.列出与“SCOTT”从事相同工作的所有员工。
-- SELECT * FROM emp WHERE JOB=(SELECT JOB FROM emp WHERE ENAME='SCOTT')
-- 10.列出薪金高于公司平均薪金的所有员工。
-- SELECT * FROM emp WHERE SAL>(SELECT AVG(SAL) FROM emp)
-- 11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
-- SELECT A.ENAME,A.SAL FROM emp A WHERE A.SAL IN (SELECT B.SAL FROM emp B WHERE B.DEPTNO=30)
-- 12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
-- SELECT ENAME,SAL FROM emp WHERE SAL>(SELECT MAX(SAL) FROM emp WHERE DEPTNO=30);   
-- 13.列出在每个部门工作的部门名称,员工数量、平均工资。
-- SELECT (SELECT B.DNAME FROM dept B WHERE A.DEPTNO=B.DEPTNO) AS DEPT_NAME ,COUNT(DEPTNO) AS DEPT_COUNT,AVG(SAL) AS DEPT_AVGSAL FROM emp A GROUP BY DEPTNO; 
-- 14.列出所有员工的姓名、部门名称和工资(含奖金)。
-- SELECT A.ENAME,(SELECT B.DNAME FROM dept B WHERE B.DEPTNO=A.DEPTNO) AS DNAME,SAL FROM emp A;
-- 15.列出所有部门的详细信息和部门人数。
-- SELECT A.DEPTNO,A.DNAME,A.LOC,(SELECT COUNT(DEPTNO) FROM emp B WHERE B.DEPTNO=A.DEPTNO GROUP BY B.DEPTNO) AS DEPT_COUNT FROM dept A;   
-- 16.列出各种工作的最低工资。
-- SELECT JOB,MIN(SAL) FROM emp GROUP BY JOB;
-- 17.列出各个MANAGER(经理)的最低薪金。
-- SELECT DEPTNO,MIN(SAL) FROM emp WHERE JOB='MANAGER' GROUP BY DEPTNO; 
-- 18.列出所有员工的年工资,按年薪从低到高排序。
-- SELECT ENAME,(SAL)*12 AS SAL_PERSAL FROM emp ORDER BY SAL_PERSAL;  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值