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