排序显示
3.SELECT[DISTINCT]*|列名称[别名],列名称[别名],…列名称[别名]
①FROM 表名称[别名]
②[WHERE 过滤条件(s)]
④[ORDER BY 字段 [ASC|DESC],字段[ASC|DESC]…字段[ASC|DESC]]
ORDER BY 是在SELECT 后面执行的,所以可以唯一使用别名进行排序。
ASC由低到高
DESC是由高到低
SELECT *FROM emp ORDER BY SAL;
SELECT empno,ename,sal*12 income FROM emp ORDER BY income;
基础查询
选择部门30的所有员工
SELECT * FROM emp WHERE deptno=30;
列出所有办事员(CLERK)的姓名,编号和部门编码
SELECT ename,empno,deptno FROM emp WHERE job='CLERK';
找出佣金高于薪水的60%的员工
SELECT * FROM emp WHERE comm>sal*0.6;
找出部门10中所有经理和部门20中的所有办事员
第一组条件:deptno =10 AND job =‘MANAGER’
第二组条件:deptno =20 AND job =‘CLERK’
第三条件为:OR
SELECT * FROM emp WHERE (deptno =10 AND job ='MANAGER') OR (deptno =20 AND job ='CLERK');
找出部门10中所有经理和部门20中的所有办事员,即不是办事员跟经理但其薪金高于2000的员工
第一组条件:deptno =10 AND job =‘MANAGER’
第二组条件:deptno =20 AND job =‘CLERK’
第三组条件:job NOT IN (‘MANAGER’,‘CLERK’) AND SAL >=2000
第三条件为:OR
SELECT * FROM emp WHERE (deptno =10 AND job ='MANAGER') OR (deptno =20 AND job ='CLERK') OR (job NOT IN ('MANAGER','CLERK') AND SAL >=2000);
找出收取佣金的员工的不同工作
-工作一定有重复,既然重复就需要使用DISTINCT消除重复数据
SELECT job FROM EMP WHERE comm IS NOT null;
没有去除重复
SELECT DISTINCT job FROM EMP WHERE comm IS NOT null;
去除重复
显示不带有R的员工姓名
SELECT * FROM EMP WHERE ename not like '%r%';
显示名字字段任何位置有A的员工,显示按照基本工资进行由高到低排序,如果一样则按雇佣年限又早到晚排序,如还一致,则按职位排序
条件一:找出名字A的员工
SELECT * FROM emp WHERE ename LIKE '%A%';
条件二:工资高到低
SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC;
条件三:雇佣年限早到晚
SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC,hiredate DESC;
条件四:职位排序
SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC,hiredate DESC,JOB DESC;
总结
1,清楚使用:SELECT,FROM WHERE, ORDER BY字句
2,多条件判断时候一定要用逻辑连接,而且尽量使用 " () " 来做一个区分
3,遇到问题慢慢分析,一个一个步骤写