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