04_oracle查詢

===============單行函數(shù) 多行函數(shù) 單行函數(shù):

作用于一行 返回一個(gè)值 多汗函數(shù):

作用于多行 返回一個(gè)值

(1)字符函數(shù)

接收字符輸入返回字符或者數(shù)值比默,dual 是偽表

1.1:?把小寫的字符轉(zhuǎn)換成大的字符

upper('yes')

select? upper('yes')? from dual

1.2;把大寫的字符轉(zhuǎn)換成小寫的字符

lower('YES')

select lower('YES') from dual

數(shù)值函數(shù)

?1. 四舍五入函數(shù):

ROUND()默認(rèn)情況下 ROUND 四舍五入取整宗弯,可以自己指定保留的位數(shù)。

select round(56.16,2) from dual

select trunc(56.16,-1)? from dual?? 直接截取

select mod(10,3) from dual? 求余數(shù)

.日期函數(shù)

Oracle 中提供了很多和日期相關(guān)的函數(shù),包括日期的加減磷仰,在日期加減時(shí)有一些規(guī)律

日期 – 數(shù)字 = 日期

日期 + 數(shù)字 = 日期

?日期 – 日期 = 數(shù)字

范例:查詢emp中所有員工入職距離現(xiàn)在幾天

select sysdate-e.hiredate from emp e;

算出明天刺客

select sysdate? +1 from dual

查詢出emp中所有員工入職距離現(xiàn)在幾月

select months_between(sysdate,e.hiredate) from emp e;

查詢出emp中所有員工入職距離現(xiàn)在幾年

select months_between(sysdate,e.hiredate) /12 from emp e;

查詢出emp中所有員工入職距離現(xiàn)在幾周

select? (sysdate-e.hiredate)?/7 from? emp e;

轉(zhuǎn)換函數(shù)

TO_CHAR:字符串轉(zhuǎn)換函數(shù)

拆分時(shí)需要使用通配符

年:y, 年是四位使用 yyyy

月:m, 月是兩位使用 mm

日:d, 日是兩位使用 dd

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual

2019-08-23 03:18:35

select to_char(sysdate,'fm ?yyyy-mm-dd hh:mi:ss') from dual

2019-8-23 3:19:19

select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual

2019-8-23 15:19:40

??TO_DATE:日期轉(zhuǎn)換函數(shù)

TO_DATE 可以把字符串的數(shù)據(jù)轉(zhuǎn)換成日期類型

select to_date('1994-05-14','yyyy-mm-dd' ) from dual??? ----1994/5/14

通用函數(shù)

nvl

計(jì)算emp員工公年薪

select sal*12 + nvl(comm,0) from emp

Decode 函數(shù)

1;case when

select? 條件,

case? 條件

when? 條件1? ? ?then? 賦值1

when? 條件2? ? ?then? 賦值2

--else??賦值3

end

from 表;

select emp.ename,

case emp.ename

when 'SMITH' then '1'

when 'allen' then '2'

--else '3'

end

from emp;

Decode 函數(shù)


該函數(shù)類似 if....else if...esle

語法:DECODE(col/expression, [search1,result1],[search2, result2]....[default])

Col/expression:列名或表達(dá)式

Search1,search2...:用于比較的條件

Result1, result2...:返回值

如果 col/expression 和 Searchi 匹配就返回 resulti,否則返回 default 的默認(rèn)值

select decode(emp.ename,'SMITH','aa','ALLEN','BB')? ? ?from emp

運(yùn)行結(jié)果 設(shè)置列的別 名

select decode(emp.ename,'SMITH','aa','ALLEN','BB')? ?name? from emp

select decode(emp.ename,'SMITH','aa','ALLEN','BB')? ?"name"? from emp

oracle 除了起別名? 都用單引號(hào)? 別名起在from 之前

==================多行函數(shù)

統(tǒng)計(jì)記錄數(shù) count()

select count(1) from emp?

最小值查詢 min()

select min(條件)? from 表? 例如:?select min(sal)? from emp

最大值查詢 max()

select max(條件)? from 表? 例如:?select max(sal)? from emp

查詢平均值 avg()

select?avg(條件)? from 表? 例如:?select?avg(sal)? from emp

求和函數(shù) sum()

select?sum(條件)? from 表? 例如:?select?sum(sal)? from emp

=================分組查詢

分組統(tǒng)計(jì)需要使用 GROUP BY 來分組

?語法:SELECT? ?*/列名? ?條件? ? from? 表名字? (表名字后面也可以加where 條件) GROUP BY? 分組字段????

分組查詢中祝蝠,出現(xiàn)在group by 后面的原始列,才能出現(xiàn)在select 后面?

沒有出現(xiàn)在group by 后面的原始列,想在select 后面 必須系上聚合函數(shù)

所有條件都不能使用別名??

例如查詢每個(gè)部門平均工資

select emp.deptno, avg(emp.sal)

from emp

group by emp.deptno

例如查詢每個(gè)部門平均工資高于2000的

select emp.deptno, avg(emp.sal)

from emp

group by emp.deptno

having avg(emp.sal)>2000

查詢每個(gè)部門工資高于800的員工的平均值

select emp.deptno ,avg(emp.sal)??

from emp

where? emp.sal >800

group by emp.deptno

whewe 是過濾分組前的數(shù)據(jù) having? 是過濾分組之后的 數(shù)據(jù)

表現(xiàn)形式 where 必須在group by前绎狭,having在group by后面


========================多表查詢

語法: SELECT {DISTINCT} *|列名.. FROM 表名 別名细溅,表名 1 別名

{WHERE 限制條件 ORDER BY 排序字段 ASC|DESC...}

select * from emp ,dept;

等值連接:

兩張表中我們發(fā)現(xiàn)有一個(gè)共同的字段,我們可以使用這個(gè)字段來做限制條件,兩張表的關(guān)聯(lián)查詢字段一般是其中一張表的主鍵儡嘶,另一張表的

外鍵喇聊。

select * from emp ,dept where emp.deptno = dept. deptno

內(nèi)連接

select * from emp? inner join dept on emp.deptno = dept.deptno

外連接? {左連接 和有=右連接}

查詢所有部門以及部門下的員工信息

select? * from emp right join? dept on??emp.deptno = dept.deptno

查詢所有員工信息,以及所屬不么

select? * from emp left join? dept on??emp.deptno = dept.deptno


oracle 專用外連接

select * from emp ,dept where emp.deptno(+) = dept. deptno

自連接

====查詢員工姓名和 員工l領(lǐng)導(dǎo)姓名

select? ?e1.ename ,e2.ename

from? ??emp e1, emp e2

where? e1.mgr = e2.empno

====查詢員工姓名和 員工姓名??員工領(lǐng)導(dǎo)姓名和 員工領(lǐng)導(dǎo)部門姓名

select e1.ename ,d1.dname, e2.ename, d2.dname

from? ? emp e1, emp e2 ,dept d1,dept d2

where e1.mgr = e2.empno

and e1.deptno = d1.deptno

and e2.deptno = d2.deptno

===============子查詢

子查詢:在一個(gè)查詢的內(nèi)部還包括另一個(gè)查詢蹦狂,則此查詢稱為子查詢誓篱。

子查詢?cè)诓僮髦杏腥悾?/p>

單列子查詢:返回的結(jié)果是一列的一個(gè)內(nèi)容

單行子查詢:返回多個(gè)列,有可能是一個(gè)完整的記錄

多行子查詢:返回多條記錄

====================Rownum與分頁查詢

ROWNUM:表示行號(hào)凯楔,實(shí)際上此是一個(gè)列,但是這個(gè)列是一個(gè)偽列,此列可以在每張表中出現(xiàn)窜骄。

當(dāng)我們select 操作的時(shí)候 沒查詢出一行記錄,就會(huì)在該還行上加一個(gè)行號(hào)? 行號(hào)從1開始 一次遞增不能跳著走

排序操作 影響ROWNUM順入

如果涉及到排序 但是還要使用ROWNUM 我們可以再次嵌套

ROWNUM行號(hào) 不能寫上大大于一個(gè)正數(shù)


select rownum,t.*from(select rownum, e.* from emp e order by e.sal desc) t

emp 表員工倒敘排列后 每頁5條數(shù)據(jù)查詢第二頁

? ? select * from(

? ?select? rownum rn , e. * from (

? ? ? ? ? ? ? ? ? ? select * from emp order by? sal desc

? )e? where rownum < 11?

)? where rn>5?

=========

第一種寫法:

select *

from (select rownum rm, a.* from (select * from emp) a where rownum < 11) b where b.rm >

5

第二種寫法:

select *

from (select rownum r ,emp.* from emp) b

where b.r >5 and b.r <11

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摆屯,一起剝皮案震驚了整個(gè)濱河市啊研,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸥拧,老刑警劉巖党远,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異富弦,居然都是意外死亡沟娱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門腕柜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來济似,“玉大人,你說我怎么就攤上這事盏缤∨榇溃” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵唉铜,是天一觀的道長(zhǎng)台舱。 經(jīng)常有香客問我,道長(zhǎng)潭流,這世上最難降的妖魔是什么竞惋? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮灰嫉,結(jié)果婚禮上拆宛,老公的妹妹穿的比我還像新娘。我一直安慰自己讼撒,他們只是感情好浑厚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布股耽。 她就那樣靜靜地躺著,像睡著了一般钳幅。 火紅的嫁衣襯著肌膚如雪豺谈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天贡这,我揣著相機(jī)與錄音茬末,去河邊找鬼。 笑死盖矫,一個(gè)胖子當(dāng)著我的面吹牛丽惭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辈双,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼责掏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了湃望?” 一聲冷哼從身側(cè)響起换衬,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎证芭,沒想到半個(gè)月后瞳浦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡废士,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年叫潦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片官硝。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矗蕊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氢架,到底是詐尸還是另有隱情傻咖,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布岖研,位于F島的核電站卿操,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缎玫。R本人自食惡果不足惜硬纤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一解滓、第九天 我趴在偏房一處隱蔽的房頂上張望赃磨。 院中可真熱鬧,春花似錦洼裤、人聲如沸邻辉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽值骇。三九已至莹菱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吱瘩,已是汗流浹背道伟。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留使碾,地道東北人蜜徽。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像票摇,于是被迫代替她去往敵國(guó)和親拘鞋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1.簡(jiǎn)介 數(shù)據(jù)存儲(chǔ)有哪些方式矢门?電子表格盆色,紙質(zhì)文件,數(shù)據(jù)庫祟剔。 那么究竟什么是關(guān)系型數(shù)據(jù)庫隔躲? 目前對(duì)數(shù)據(jù)庫的分類主要是...
    喬震閱讀 1,710評(píng)論 0 2
  • ORACLE日期時(shí)間函數(shù)大全 TO_DATE格式(以時(shí)間:2007-11-02 13:45:25為例) Year:...
    雨一流閱讀 659評(píng)論 0 2
  • SQL ==SQLPLUS== DML(Data Manipulation Language,數(shù)據(jù)操作語言)---...
    蝌蚪1573閱讀 587評(píng)論 0 4
  • 1. select * from emp; 2. select empno, ename, job from em...
    海納百川_4d26閱讀 1,897評(píng)論 0 4
  • 漆黑中我窺見蒼白和貧瘠 曾經(jīng),黎明的天空物延,那抹藍(lán) 讓我覺得無比富足又孤獨(dú) 像清冷的四月蹭越,盛開在枝椏的白色花蕾 灰塵...
    蔣菱閱讀 204評(píng)論 0 2