不入oracle数据库,Oracle数据库之操作符及函数
一、操作符:
1、分類:
算術(shù)、比較、邏輯、集合、連接;
2、算術(shù)操作符:
執(zhí)行數(shù)值計(jì)算;
--工資加1000
select empno,ename,job,sal+1000 from emp;
3、比較操作符:
--比較運(yùn)算符(between and包頭不包尾)
select * from emp where sal between 1000 and 2000;
(不等于是!=? , ? 在mysql中是<>? )
4、邏輯操作符:and? or? not
--查詢獎(jiǎng)金不為空的員工信息
select * from emp where comm is not null;
5、集合操作符:
將兩個(gè)查詢的結(jié)果組合成一個(gè)結(jié)果:
select sid from t_score where score>=70 and cid = '01'
INTERSECT
select sid from t_score where score>=70 and cid = '07';
①、intersect 返回兩個(gè)查詢的公共行;
②、union:返回兩個(gè)查詢的不重復(fù)的所有行;這里面可以是一個(gè)表中的數(shù)據(jù)(在mysql中是另外的聯(lián)合查詢--不是一個(gè)表)
③、minus:返回從第一個(gè)查詢的結(jié)果中排除第二個(gè)查詢中出現(xiàn)的行;(在第一個(gè)的結(jié)果中查找不滿足第二個(gè)的)
6、連接操作符:
將多個(gè)字符串或數(shù)據(jù)值合并成一個(gè)字符串;
--連接操作符
select ('員工號(hào)為'||empno||',姓名為'||ename||'的工資為'||sal) from emp
7、優(yōu)先級(jí):
算術(shù)>連接>比較>not邏輯>and邏輯>or邏輯操作符
二、SQL函數(shù):
用于執(zhí)行特殊的操作的函數(shù);
1、分類:
單行、 分組、分析;
2、單行函數(shù)分類:
從表中查詢的每一行只返回一個(gè)值;
字符、數(shù)字、日期、轉(zhuǎn)換、其他;
3、字符函數(shù):
--字符串函數(shù)
select lower(ename),job from emp; --小寫
select ltrim('xysdezadmas','xyz') from dual;--截取:從左邊開始按后面字段開始截取,有幾個(gè)截取幾個(gè),沒有就不截取
①、其他字符函數(shù):
chr:根據(jù)ASCII碼返回對(duì)應(yīng)的字符(0:48 ?? a:97 ?? A:65)
lpad和rpad: 填充;
trim:去除左右兩邊的空格符;
lenth:字符串長度;
decode:逐個(gè)值置換;
select sname,decode(cid,1,'開發(fā)部')as 部門 fromjava0322;select ename,decode(job,'CLERK','職員','SALESMAN','導(dǎo)購') as 工作 from emp
4、數(shù)字函數(shù);
5、日期函數(shù):
對(duì)日期值進(jìn)行計(jì)算,并生成日期數(shù)據(jù)類型或數(shù)值類型的結(jié)果;
add_months 偏移;
months_between:月數(shù)差;
last_day 最后一天;
round:四舍五入;
trunc:只舍不入,返回指定日期模式截?cái)嗪蟮牡谝惶?#xff1b;
next_day(d,day):下周周幾的日期
extract:計(jì)算年份差:
--日期函數(shù)
select add_months(sbirth,-3) from java0322;--月份偏移3月,可以是負(fù)數(shù),也就是向前偏移
select extract(year from sysdate) from dual;--截取當(dāng)前時(shí)間的年份
select sname,extract(year from sysdate) - extract(year from sbirth) from java0322;--計(jì)算年紀(jì)
6、轉(zhuǎn)換函數(shù):
to_char:按照指定的格式轉(zhuǎn)化字符串;
to_date:將字符串轉(zhuǎn)化為日期;
to_number:將數(shù)字字符串轉(zhuǎn)化為數(shù)字;----可以實(shí)現(xiàn)直接在sql語句中進(jìn)行格式的轉(zhuǎn)換
--轉(zhuǎn)換函數(shù)(字符串,格式)
Select TO_CHAR(0.123,'$0.9999') FROMDUAL;--字符串轉(zhuǎn)日期
select to_date ('2005-02-28','yyyy-mm-dd') fromdual;--字符串轉(zhuǎn)數(shù)字
select to_number('20') from dual;
其他函數(shù):
nvl:isnull,不為空時(shí)為本身,為空時(shí)指定0;
nvl2:不為空時(shí)指定值2,為空時(shí)指定值3;
NullIF:相等時(shí)為空,否則為前者
--查詢員工表的所有人的姓名,工資+獎(jiǎng)金(獎(jiǎng)金沒有的時(shí)候,由null轉(zhuǎn)為0)---nvl轉(zhuǎn)換空值的函數(shù)
select ename,sal+nvl(comm,0)as sal from emp;--當(dāng)空為0,不為空為comm
select ename,sal+nvl2(comm,10000,0) from emp;---不為空時(shí)10000,為空時(shí)0;
select nullif(100,200) from dual;--相等為空,不等為前者
7、分組函數(shù):
基于一組行來返回結(jié)果;
avg、min、max、sum、count
8、分析函數(shù):
根據(jù)一組行來計(jì)算聚合值;用于計(jì)算完成聚集的累計(jì)排名、移動(dòng)平均數(shù)等;
row_number:返回連續(xù)的排位,不論值是否相等;
rank:具有相等值的行排位相同,序數(shù)隨后跳躍;
dense_rank:具有相等值的行排位相同,序號(hào)是連續(xù)的
--排位
select empno,ename,job,sal,row_number()over (order by sal desc) as numm from emp; --返回連續(xù)的排位,不論值是否相等12345
select empno,ename,job,sal,rank()over (order by sal desc) as numm from emp; --相等值的行排位相同,序號(hào)隨后跳躍;12245
select empno,ename,job,sal,dense_rank()over (order by sal desc) as numm from emp; --相等值的行排位相同,序號(hào)是連續(xù)的;12234
內(nèi)容來源于網(wǎng)絡(luò)如有侵權(quán)請(qǐng)私信刪除
總結(jié)
以上是生活随笔為你收集整理的不入oracle数据库,Oracle数据库之操作符及函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习之路 | PTA乙级—— 10
- 下一篇: linux cmake编译源码,linu