select from where group by having order by;
1、查询的集合运算:union all (对两个结果集进行并集操作,包括重复行,不进行排序)
union(对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序)
intersect 交集 minus差集
select distinct deptno from emp; 10,20,30
select deptno from dept; 10,20,30,40
select deptno from dept union select hiredate from emp; 不可以(两个结果集类型不同)
select deptno from emp union select deptno from dept order by deptno desc;
2、查询表的特定记录。伪列 rownum: 给查询结果进行编号,从1开始,当其出现在where从句时,其值总是从1开始。
查询表的第2条记录:
select * from emp where rownum<=2 minus select * from emp where rownum=1;
查询第3-5条记录: rownum<=5 minus rownum<=2
3、查询中实现if else功能
grade A B C 优秀 良好 合格
查询每个员工的工资,若工资超过2000,输出高工资,1000到2000之间,输出中等工资,否则输出低工资。
select ename,sal,case when sal>2000 then '高工资' when sal between 1000 and 2000 then '中等工资' else '低工资' end as 工资描述 from emp;
(1)decode(a,b,c,d) decode(a,b,c,d,e,f,g,h)
decode(grade,'A','优秀','B','良好','合格')
(2) case表达式: 简单case : case 属性名 when value1 then return1
when value2 then return2
...
else return n
end
case grade when 'A' then ‘优秀'
when 'B' then '良好'
else '合格'
end
搜索case: case when 条件表达式1 then return1
when 条件表达式2then return2
...
else return n
end