1.集合操作:
Union 用第二個查詢結果合并第一個查詢結果,同時不顯示重復的行。
Union all 檢索出所有的行,包括重復的行。
intersect 返回兩個查詢所檢索出的共有行。
minus 返回將第二個查詢檢索出的行從第一個查詢檢索出的行中減去之后剩余的行。
select ename,dname,job
from dept t,emp p
where t.deptno=p.deptno and t.dname='SALES'
union/intersect/minus
select ename,dname,job
from dept t,emp p
where t.deptno=p.deptno and p.job='MANAGER';
2.子查詢:
可以在一個select語句中嵌入另一個完整的select語句,但此句的子查詢的返回結果只能有一個,如想返回多個可用 in 。
select ename,dname,job
from dept t,emp p
where t.deptno=p.deptno and t.dname=
(
select dname
from dept t,emp p
where t.deptno=p.deptno and p.sal=1600.00
);
select ename,dname,job
from dept t,emp p
where t.deptno=p.deptno and t.dname in
(
select dname
from dept t,emp p
where t.deptno=p.deptno and p.sal>3000.00
);
3.表的連接:
select t.dname
from emp p,dept t
where p.deptno=t.deptno and p.ename='SMITH';
由于實施了關系連接的兩表是任何連接的,所有需要在where子句中設置主關鍵字等于外部關鍵字的條件,否則查詢結果不對。
4.case語句:
*簡單case語句,使用表達式確定返回值,但case后的變量只有一個;
select t.dname,t.loc,t.deptno,
case t.deptno
when 10 then 'ACCOUNTING'
when 20 then 'RESEARCH'
when 30 then 'SALES'
else 'T'
end
from dept t;
*搜索case語句,使用條件確定返回值,但when后面可以跟多個條件。
select t.dname,t.loc,t.deptno,
case
when t.deptno=10 and t.loc='CHICAGO' then 'ACCOUNTING'
when t.deptno=20 then 'RESEARCH'
when t.deptno=30 then 'SALES'
else 'T'
end
from dept t;
5.decode函數:
decode(value,search_value,result,default_value)
如果value和search_value相等,則返回result,否則返回default_value。
select t.dname,t.loc,t.deptno,
decode(t.deptno,
10,'ACCOUNTING',
20,'RESEARCH',
30,'SALES',
'T'
)
from dept t;
posted @ 2009-01-13 17:15 斷點 閱讀(240) | 評論 (0)