Oracle學習筆記:
1、操作符優先級:*、/、+、- ;乘除的優先級高於加減,同一優先級運算符從左向右執行,括號內的運算先執行。
2、連接符:|| ;把列與列,列與字符連接在一起,可以用來‘合成’列。
select p.person_code || '/' || p.person_name from app_person p
3、比較運算:=[等於]、>[大於]、>=[大於、等於]、<[小於]、<=[小於、等於]、<>[不等於]
;BETWEEN...AND...[在兩個值之間(包含邊界)]、IN(set)[等於值列表中的一個]、LIKE[模糊查詢]、IS NULL[空值] 。4、模糊查詢like ,%代表一個或多個字符,_代表一個字符。
select * from app_person p where p.person_name like '_民%'
5、分組函數:AVG,COUNT,MAX,MIN,STDDEV,SUM
select avg(a.account_cost),
STDDEV(a.account_cost),
COUNT(*),
MAX(a.account_cost),
MIN(a.account_cost),
SUM(a.account_cost)
from eam_fa_asset a
group by a.duty_dept_id
組函數忽略空值,NVL函數使分組函數無法忽略空值。
select avg(sa.apply_scrap_amt)
from EAM_Fa_Scrap_Apply sa
where sa.scrap_apply_id in (4541, 4542)
不能在WHERE子句中使用組函數,可以在HAVING子句中使用組函數。
select a.duty_dept_id, count(*)
from eam_fa_asset a
having count(*) > 10
group by a.duty_dept_id
6、多行子查詢:in,any,all
IN:等於列表中的任何一個
ANY:和子查詢返回的任意一個值比較,等同與最值比較
ALL:和子查詢返回的所有值比較,等同與最值比較
select sa.ACCOUNT_COST
from EAM_Fa_Scrap_Apply sa
where sa.ACCOUNT_COST < any (select a.account_cost
from eam_fa_scrap_apply a
where a.duty_dept_id = 1)
and sa.duty_dept_id <> 1 --4665
select sa.ACCOUNT_COST
from EAM_Fa_Scrap_Apply sa
where sa.ACCOUNT_COST < (select min(a.account_cost)
from eam_fa_scrap_apply a
where a.duty_dept_id = 1)
and sa.duty_dept_id <> 1 --4665