MySQL 单表和多表的基本练习题

2 单表

  1. 查找部门30中员工的详细信息。

SELECT * FROM EMP WHERE DEPTNO = 30;

  1. 找出从事clerk工作的员工的编号、姓名、部门号。

SELECT EMPNO,ENAME,DEPTNO FROM EMP WHERE JOB = ‘CLERK’;

  1. 检索出奖金多于基本工资的员工信息。

SELECT * FROM EMP WHERE COMM > SAL;

  1. 检索出奖金多于基本工资60%的员工信息。

SELECT * FROM EMP WHERE COMM > SAL * 0.6;

  1. 找出10部门的经理、20部门的职员 的员工信息。

SELECT * FROM EMP WHERE DEPTNO=10 AND JOB=‘MANAGER’ OR DEPTNO=20 AND JOB=‘CLERK’;

  1. 找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。

SELECT * FROM EMP WHERE (DEPTNO=10 AND JOB=‘MANAGER’ OR DEPTNO=20 AND JOB=‘CLERK’) OR (JOB!=‘MANAGER’ AND JOB!=‘CLERK’ AND SAL>2000);

  1. 找出获得奖金的员工的工作。

SELECT * FROM EMP WHERE COMM;

  1. 找出奖金少于100或者没有获得奖金的员工的信息。

SELECT * FROM EMP WHERE COMM<100 OR COMM IS NULL;

  1. 找出姓名以A、B、S开始的员工信息。

SELECT * FROM EMP WHERE ENAME LIKE ‘A%’ OR ENAME LIKE ‘B%’ OR ENAME LIKE ‘S%’;

  1. 找到名字长度为6个字符的员工信息。

SELECT * FROM EMP WHERE LENGTH(ENAME)=6;

  1. 名字中不包含R字符的员工信息。

SELECT * FROM EMP WHERE ENAME NOT LIKE ‘%R%’;

  1. 返回员工的详细信息并按姓名排序。

SELECT * FROM EMP ORDER BY ENAME ASC;

  1. 返回员工的信息并按工作降序工资升序排列。

SELECT * FROM EMP ORDER BY JOB DESC, SAL ASC;

  1. 计算员工的日薪(按30天)。

SELECT ENAME,ROUND(SAL/30, 2) AS ‘日薪’ FROM EMP;

  1. 找出姓名中包含A的员工信息。

SELECT * FROM EMP WHERE ENAME LIKE ‘%A%’;

3 多表

  1. 返回拥有员工的部门名、部门号。

SELECT DNAME,DEPTNO FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE DEPTNO);

  1. 工资水平多于smith的员工信息。

SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=‘SMITH’);

  1. 返回员工和所属经理的姓名。

SELECT E.ENAME, M.ENAME FROM EMP E LEFT OUTER JOIN EMP M ON E.MGR=M.EMPNO;

   or    (没有经理是否显示)

SELECT E.ENAME, M.ENAME FROM EMP E, EMP M WHERE E.MGR=M.EMPNO;

  1. 返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名

SELECT E.ENAME, M.ENAME FROM EMP E LEFT OUTER JOIN EMP M ON E.MGR=M.EMPNO WHERE E.HIREDATE<M.HIREDATE;

  1. 返回员工姓名及其所在的部门名称。

SELECT ENAME,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

  1. 返回从事clerk工作的员工姓名和所在部门名称。

SELECT ENAME,DNAME FROM EMP,DEPT WHERE JOB=‘CLERK’ AND EMP.DEPTNO=DEPT.DEPTNO;

  1. 返回部门号及其本部门的最低工资。

SELECT DEPTNO,MIN(SAL) FROM EMP GROUP BY DEPTNO;

  1. 返回销售部(sales)所有员工的姓名。

SELECT ENAME FROM EMP WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME=‘SALES’);

  1. 返回工资水平多于平均工资的员工。

SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP WHERE SAL);

  1. 返回与SCOTT从事相同工作的员工。

SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME=‘SCOTT’);
如果不包含自己
SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME=‘SCOTT’) AND ENAME!=‘SCOTT’;

  1. 返回与30部门员工工资水平相同的员工姓名与工资。

SELECT ENAME,SAL FROM EMP WHERE SAL IN (SELECT SAL FROM EMP WHERE DEPTNO=30);

  1. 返回工资高于30部门所有员工工资水平的员工信息。

SELECT * FROM EMP WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);

  1. 返回部门号、部门名、部门所在位置及其每个部门的员工总数。

SELECT DEPT.DEPTNO,DNAME,LOC,COUNT(EMP.DEPTNO) AS NUMBER FROM DEPT,EMP WHERE DEPT.DEPTNO=EMP.DEPTNO GROUP BY EMP.DEPTNO;

  1. 返回员工的姓名、所在部门名及其工资。

SELECT ENAME,DNAME,SAL FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

  1. 返回员工的详细信息。(包括部门名)

SELECT EMP.*,DEPT.DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

  1. 返回员工工作及其从事此工作的最低工资。

SELECT JOB, MIN(SAL) AS SAL FROM EMP GROUP BY JOB;

  1. 返回不同部门经理的最低工资。

SELECT DEPT.DEPTNO,ENAME,JOB,MIN(SAL) FROM DEPT,EMP WHERE JOB=‘MANAGER’ GROUP BY EMP.DEPTNO;

  1. 计算出员工的年薪,并且以年薪排序。

SELECT ENAME,SAL*12 AS ySalary FROM EMP ORDER BY ySalary ASC;

  1. 返回工资处于第四级别的员工的姓名。

SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN
(SELECT LOSAL FROM SALGRADE WHERE GRADE=4)
AND (SELECT HISAL FROM SALGRADE WHERE GRADE=4);

  1. 返回工资为二等级的职员名字、部门所在地、和二等级的最低工资和最高工资

SELECT ENAME,LOC,SAL,LOSAL,HISAL FROM DEPT,EMP,SALGRADE
WHERE EMP.DEPTNO=DEPT.DEPTNO AND GRADE=2 AND SAL BETWEEN LOSAL AND HISAL;

  1. 返回工资为二等级的职员名字、部门所在地、二等级员工工资的最低工资和最高工资

SELECT MIN(SAL),MAX(SAL) FROM DEPT,EMP,SALGRADE
WHERE EMP.DEPTNO=DEPT.DEPTNO AND GRADE=2 AND SAL BETWEEN LOSAL AND HISAL;

  1. 工资等级多于smith的员工信息。

SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=‘smith’);

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值