任务1:执行SQL脚本创建表、插入数据
create database company mysql -u root -p company < /Users/caizhenzu/Desktop/data.sql
任务2:查询软件部门下的所有员工
select e.empno,e.ename,d.dname from emp e, dept d where d.deptno = e.deptno and dname = "软件部"; +--------+-----------+-----------+ | empno | ename | dname | +--------+-----------+-----------+ | 2001 | 林冲 | 软件部 | | 20011 | 李逵 | 软件部 | | 20012 | 扈三娘 | 软件部 | | 200111 | 时迁 | 软件部 | +--------+-----------+-----------+
任务3:统计所有的员工都分布在那些部门信息
select distinct d.deptno 部门号,d.dname 部门名,d.loc 部门地点 from emp e, dept d where d.deptno = e.deptno; +-----------+-----------+--------------+ | 部门号 | 部门名 | 部门地点 | +-----------+-----------+--------------+ | 10 | 人事部 | 北京 | | 20 | 软件部 | 深圳 | | 30 | 销售部 | 杭州 | +-----------+-----------+--------------+
任务4:查询公司中比任意一个员工的工资高的所有员工
select e.ename 员工姓名,e.sal from emp e where e.sal = (select max(sal) from emp p); select * from emp where sal > any (select distinct sal from emp); +--------------+------+ | 员工姓名 | sal | +--------------+------+ | 宋江 | 6000 | | 林冲 | 6000 | +--------------+------+
任务5:查询公司中比所有的助理工资高但不是助理的员工
select p.ename 姓名 from emp p where p.sal > (select max(e.sal) 工资 from emp e where e.job like '%助理%'); +--------+ | 姓名 | +--------+ | 宋江 | | 林冲 | +--------+
任务6:查询公司中和员工张青相同薪水和奖金的员工
select p.ename 姓名,p.sal 工资,p.comm 奖金 from emp p where (p.sal,p.comm) = (select e.sal,e.comm from emp e where e.ename = '张青') and p.ename != '张青'; +--------+--------+--------+ | 姓名 | 工资 | 奖金 | +--------+--------+--------+ | 时迁 | 2000 | 2000 | +--------+--------+--------+
任务7:分页查询员工信息
select * from emp limit 3,3; +-------+-----------+--------------+------+---------------------+------+------+--------+ | empno | ename | job | mgr | hirdate | sal | comm | deptno | +-------+-----------+--------------+------+---------------------+------+------+--------+ | 10011 | 卢俊义 | 董事助理 | 1001 | 2003-01-01 00:00:00 | 3000 | 1000 | 10 | | 10012 | 吴用 | 董事助理 | 1001 | 2001-01-01 00:00:00 | 4000 | 4000 | 10 | | 20011 | 李逵 | 项目组长 | 2001 | 2001-01-01 00:00:00 | 3000 | 1000 | 20 | +-------+-----------+--------------+------+---------------------+------+------+--------+
任务8:综合查询示例
SELECT COUNT(*) 人数,e.deptno 部门编号,d.dname 部门名 FROM emp e,dept d WHERE YEAR(e.hirdate) > YEAR('2000-01-01') AND e.deptno = d.deptno GROUP BY e.deptno HAVING COUNT(*) > 2 ORDER BY COUNT(*) DESC LIMIT 0,5; +--------+--------------+-----------+ | 人数 | 部门编号 | 部门名 | +--------+--------------+-----------+ | 4 | 20 | 软件部 | | 3 | 10 | 人事部 | +--------+--------------+-----------+