MySQL练习(三)

1.使用两种方式查询所有员工(EMP)信息

SELECT * from emp;
 SELECT empno,ename,job,mgr,sal,hiredate,comm,deptno from emp;

2.查询(EMP)员工编号、员工姓名、员工职位、员工月薪、工作部门编号。

 SELECT empno,ename,job,sal,deptno from emp;

3.员工转正后,月薪上调20%,请查询出所有员工转正后的月薪。

SELECT sal*1.2 FROM emp;

4.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的年薪所得(不考虑奖金部分,年薪的试用期6个月的月薪+转正后6个月的月薪)

SELECT sal*13.2 FROM emp;

5.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入(需考虑奖金部分),要求显示列标题为员工姓名,工资收入,奖金收入,总收入。

SELECT ename AS '员工姓名',(sal*1)*6 + (sal*1.2)*6 AS '工资收入',IFNULL(comm,0) AS '奖金收入',(sal*2.2)*6 + IFNULL(comm,0) AS '总收入' FROM emp;

6.查询员工表中一共有哪几种岗位类型。

SELECT DISTINCT JOB FROM emp;

7.分别查看员工表、部门表、薪资等级表的表结构。

DESCRIBE emp;

DESCRIBE dept;

DESCRIBE salgrade;

8.查询职位为SALESMAN的员工编号、职位、入职日期。

SELECT ename,hiredate,emp.EMPNO,emp.JOB FROM emp WHERE  JOB = 'SALESMAN';

9.查询1985年12月31日之前入职的员工姓名及入职日期。

SELECT ename,hiredate,emp.EMPNO,emp.JOB FROM emp WHERE  hiredate < '1985-12-31';

10.查询部门编号不在10部门的员工姓名、部门编号。

SELECT ename,emp.DEPTNO FROM emp WHERE  DEPTNO <> 10;

11.查询入职日期在82年至85年的员工姓名,入职日期。

SELECT ename,hiredate FROM emp
WHERE hiredate BETWEEN '1982-1-1' AND '1985-12-31';

12.查询月薪在3000到5000的员工姓名,月薪。

SELECT ename,sal FROM emp WHERE sal BETWEEN 3000 AND 5000;

13.查询部门编号为10或者20的员工姓名,部门编号。

SELECT ename,DEPTNO FROM emp WHERE DEPTNO in (10, 20);

14.查询经理编号为7902, 7566, 7788的员工姓名,经理编号。

SELECT ename,MGR FROM emp WHERE MGR in (7902, 7566, 7788);

15.查询员工姓名以W开头的员工姓名。

SELECT ENAME FROM emp WHERE emp.ENAME LIKE 'w%';

16.查询员工姓名倒数第2个字符为T的员工姓名。

SELECT ENAME FROM emp WHERE emp.ENAME LIKE '%T_';

17.查询奖金为空的员工姓名,奖金。

SELECT ENAME,COMM FROM emp WHERE emp.COMM IS NULL;

18.查询工资超过2000并且职位是MANAGER,或者职位是SALESMAN的员工姓名、职位、工资

SELECT ENAME,HIREDATE,SAL,JOB FROM emp WHERE emp.SAL > 2000 AND (emp.JOB = 'MANAGER' OR emp.JOB = 'SALESMAN') ;

19.查询工资超过2000并且职位是 MANAGER或SALESMAN的员工姓名、职位、工资。

SELECT ENAME,HIREDATE,SAL,JOB FROM emp WHERE emp.SAL > 2000 AND (emp.JOB = 'MANAGER' OR emp.JOB = 'SALESMAN') ;

20.查询部门在10或者20,并且工资在3000到5000之间的员工姓名、部门、工资。

select ename,deptno,sal from emp where sal >2000 and sal <5000 and deptno in (10,20);

21.查询入职日期在81年,并且职位不是SALES开头的员工姓名、入职日期、职位。

SELECT emp.ENAME, emp.HIREDATE, emp.JOB FROM emp WHERE emp.HIREDATE BETWEEN '1981-0-0' AND '1981-12-31' AND emp.JOB NOT LIKE 'SALES%';

22.查询职位为SALESMAN或MANAGER,部门编号为10或者20,姓名包含A的员工姓名、职位、部门编号。

SELECT emp.ENAME, emp.JOB, emp.DEPTNO FROM emp WHERE emp.ENAME LIKE '%A%' AND emp.JOB IN ('SALESMAN', 'MANAGER') AND emp.DEPTNO IN (10, 20);

23.查询部门在20或30的员工姓名,部门编号,并按照工资升序排序。

SELECT emp.ENAME, emp.DEPTNO, emp.SAL FROM emp WHERE emp.DEPTNO IN (10, 20) ORDER BY emp.SAL;

24.查询工资在2000-3000之间,部门不在10号的员工姓名,部门编号,工资,并按照部门升序,工资降序排序。

SELECT emp.ENAME, emp.DEPTNO, emp.SAL FROM emp WHERE emp.DEPTNO != 10 ORDER BY emp.DEPTNO, emp.SAL DESC;

25.查询入职日期在82年至83年之间,职位以SALES或者MAN开头的员工姓名,入职日期,职位,并按照入职日期降序排序。

SELECT emp.ENAME, emp.HIREDATE, emp.JOB FROM emp WHERE emp.HIREDATE BETWEEN '1982-0-0' AND '1983-0-0' AND  emp.JOB LIKE 'SALES%' OR 'MAN' ORDER BY emp.HIREDATE DESC;

26.查询入职日期最早的前5名员工姓名,入职日期。

SELECT emp.ENAME, emp.HIREDATE FROM emp ORDER BY emp.HIREDATE LIMIT 0, 5;

27.查询工作在CHICAGO并且入职日期最早的前2名员工姓名,入职日期。

SELECT emp.ENAME, emp.HIREDATE FROM ((SELECT * FROM dept WHERE dept.LOC = 'CHICAGO') AS L JOIN emp ON L.DEPTNO = emp.DEPTNO
) ORDER BY emp.HIREDATE LIMIT 2;

28.按照每页显示5条记录,分别查询第1页,第2页,第3页信息,要求显示员工姓名、入职日期、部门名称。

SELECT emp.ENAME, emp.HIREDATE, dept.DNAME FROM emp JOIN dept ON emp.DEPTNO = dept.DEPTNO LIMIT 0, 5;
SELECT emp.ENAME, emp.HIREDATE, dept.DNAME FROM emp JOIN dept ON emp.DEPTNO = dept.DEPTNO LIMIT 5, 5;
SELECT emp.ENAME, emp.HIREDATE, dept.DNAME FROM emp JOIN dept ON emp.DEPTNO = dept.DEPTNO LIMIT 10, 5;

29.查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。

SELECT emp.ENAME, emp.HIREDATE, emp.JOB FROM emp WHERE emp.JOB != 'SALESMAN';

30.查询员工姓名的第三个字母是a的员工姓名。

SELECT emp.ENAME FROM emp WHERE emp.ENAME LIKE '__a%';

31.查询除了10、20号部门以外的员工姓名、部门编号。

SELECT emp.ENAME, emp.DEPTNO FROM emp WHERE emp.DEPTNO NOT IN (10, 20);

32.查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。

SELECT * FROM emp WHERE emp.DEPTNO = 30 ORDER BY emp.SAL, emp.ENAME;

33.查询没有上级的员工(经理号为空)的员工姓名。

SELECT emp.ENAME FROM emp WHERE emp.MGR IS NULL;

34.查询工资大于等于4500并且部门为10或者20的员工的姓名、工资、部门编号。

SELECT emp.ENAME,emp.SAL, emp.DEPTNO FROM emp WHERE emp.SAL > 4500 AND emp.DEPTNO IN(10, 20);
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注