有关tb_emp表的结构及数据,请参看博客:https://hcshow.blog.csdn.net/article/details/101469279
单表查询- 选择部门30中的雇员
select *
from tb_emp
where deptno =30
- 列出所有办事员的姓名、编号和部门
select empno,ename,dptno
from tb_emp
- 找出佣金高于薪金的雇员
select *
from tb_emp
where comm > sal
- 找出佣金高于薪金60%的雇员
select *
from tb_emp
where comm > sal*0.6
- 检索tb_emp表中的员工姓名、月收入及部门编号
SELECT ename as 姓名,sal+IFNULL(comm,0) 工资,deptno 部门编号
FROM tb_emp;
- 检索tb_emp表中员工姓名、及雇佣时间
SELECT ename ,hiredate
FROM tb_emp;
- 使用distinct去掉重复行。
SELECT DISTINCT deptno
from tb_emp;
- 检索tb_emp表中的员工姓名及全年的收入
SELECT ename 员工,(sal+ifnull(comm,0))*12 总收入
from tb_emp;
- 检索月收入大于2000的员工姓名及月收入
SELECT ename , sal+IFNULL(comm,0)
FROM tb_emp
WHERE sal+IFNULL(comm,0) > 2000;
- 检索以S开头的员工姓名及月收入。
SELECT ename , sal+IFNULL(comm,0)
FROM tb_emp
WHERE ename LIKE 'S%';
- 检索tb_emp表中月收入是800的或是1250的员工姓名及部门编号
SELECT ename,deptno,sal
from tb_emp
WHERE sal = 800 || sal = 1250
或
SELECT ename,deptno,sal
from tb_emp
WHERE sal = 800 OR sal = 1250
- 显示在部门20中岗位CLERK的所有雇员信息
SELECT *
FROM tb_emp
WHERE deptno = 20 && job = 'clerk'
或
SELECT *
FROM tb_emp
WHERE deptno = 20 and job = 'clerk'
- 显示工资高于2500或岗位为MANAGER的所有雇员信息
SELECT *
FROM tb_emp
WHERE sal >2500 AND job ='MANAGER';
- 检索tb_emp表中有提成的员工姓名、月收入及提成。
SELECT ename,sal,comm
FROM tb_emp
WHERE !ISNULL(comm)
或
SELECT ename,sal,comm
FROM tb_emp
WHERE NOT ISNULL(comm)
- 检索tb_emp表中部门编号是30的员工姓名、月收入及提成,并要求其结果按月收入升序、然后按提成降序显示。
SELECT ename,sal,comm,deptno
FROM tb_emp
WHERE deptno = 30
ORDER BY sal ASC , comm DESC
- 查询工资大于1200的员工姓名和工资
SELECT ename,sal
FROM tb_emp
WHERE sal>1200
- 查询员工号为7934的员工的姓名和部门号
select ename,deptno
from tb_emp
where empno=7934
- 选择工资不在5000到12000的员工的姓名和工资
SELECT ename,sal
FROM tb_emp
WHERE sal 12000
- 选择雇用时间在1981-02-01到1981-05-01之间的员工姓名,职位(job)和雇用时间,按从早到晚排序.
SELECT ename,job,hiredate
FROM tb_emp
WHERE hiredate BETWEEN '1981-02-01' AND '1981-05-01'
ORDER BY hiredate ASC
- 选择在20或10号部门工作的员工姓名和部门号
SELECT ename,deptno
FROM tb_emp
WHERE deptno =20 OR deptno = 10
- 选择在1987年雇用的员工的姓名和雇用时间
SELECT ename,hiredate
FROM tb_emp
WHERE YEAR(hiredate) = '1987'
- 选择公司中没有上级的员工姓名及job
SELECT ename,job
FROM tb_emp
WHERE ISNULL(mgr)
- 选择公司中不是管理者的员工姓名及job
SELECT ename,job
FROM tb_emp
WHERE job != 'MANAGER'
- 选择公司中有奖金 (COMM不为空,且不为0) 的员工姓名,工资和奖金比例,按工资逆排序,奖金比例逆排序.
SELECT ename,comm,sal+comm,comm/(sal+comm)
FROM tb_emp
WHERE NOT ISNULL(comm) AND comm != 0
ORDER BY sal+comm DESC ,comm/(sal+comm) DESC
- 选择员工姓名的第三个字母是a的员工姓名
SELECT *
FROM tb_emp
WHERE ename like '__a%'
- 找出部门10中所有经理和部门20中的所有办事员的详细资料
SELECT *
FROM tb_emp
WHERE (deptno =10 and job = 'manager') OR (deptno =20 and job = 'clerk')
- 找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料
SELECT *
FROM tb_emp
WHERE (deptno =10 and job = 'manager') OR
(deptno =20 and job = 'clerk') OR
(job != 'manager' and job != 'clerk' and sal>2000)
- 找出收取佣金的雇员的不同工作
SELECT DISTINCT job
FROM tb_emp
WHERE comm !=0
- 找出不收取佣金或收取的佣金低于100的雇员
select *
from tb_emp
where comm = null or comm=0 or comm (SELECT sal
FROM tb_emp
where ename= 'smith')
- 列出薪金高于公司平均薪金的所有员工。
SELECT *
from tb_emp
WHERE sal>(SELECT avg(sal)
FROM tb_emp)
- 列出与“SCOTT”从事相同工作的所有员工。
SELECT *
from tb_emp
WHERE job = (SELECT job
from tb_emp
where ename = 'scott')
- 求出30部门工资的最大值与最小值,然后列出其它部门工资在这个范围的员工的信息
SELECT ename,sal,deptno
from tb_emp
WHERE sal BETWEEN (SELECT min(sal)
FROM tb_emp
WHERE deptno =30) and (SELECT max(sal)
FROM tb_emp
WHERE deptno =30) and deptno != 30
- 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
SELECT ename,sal,deptno
from tb_emp
where sal> (SELECT max(sal)
FROM tb_emp
WHERE deptno =30) and deptno !=30
多表查询/连接查询/关联查询
- 列出受雇日期早于其直接上级的所有员工。
SELECT e1.ename,e1.hiredate , e2.hiredate
FROM tb_emp e1
JOIN tb_emp e2 ON e1.mgr = e2.empno
where e1.hiredate
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?