2019年5月14號廣州尚學(xué)堂部分筆記

函數(shù)

函數(shù)一般是在數(shù)據(jù)上執(zhí)行的,它給數(shù)據(jù)的轉(zhuǎn)換和處理提供了方便宛琅。只是將取出的數(shù)據(jù)進(jìn)行處理,不會改變數(shù)據(jù)庫中的值嘿辟。

函數(shù)根據(jù)處理的數(shù)據(jù)分為單行函數(shù)和聚合函數(shù)(組函數(shù))

組函數(shù)又被稱作聚合函數(shù),用于對多行數(shù)據(jù)進(jìn)行操作红伦,并返回一個(gè)單一的結(jié)果,組函數(shù)僅可用于選擇列表或查詢的having子句

單行函數(shù)對單個(gè)數(shù)值進(jìn)行操作昙读,并返回一個(gè)值。

dual是一個(gè)系統(tǒng)表蛮浑。注意用于測試。

字符相關(guān)


-- dual用于測試

select * from dual;

-- 1.字符串連接

select concat('aa','12') from dual;

select 'aa'||'12' from dual;

-- 2.首字母大寫

select initcap('abc') from dual;

--- 把大寫轉(zhuǎn)化小寫

select lower('ABc') from dual;

select upper('abc') from dual;

-- 把所有員工的姓名小寫輸出

select lower(e.ename),e.empno

from emp e

-- 3.填充字符lpad/rpad

select lpad('sxt',5,'*') from dual;

select rpad('sxt',5,'*') from dual;

-- 4.去掉空白字符

select '? kallen' from dual;

select ltrim('? kallen',' ') from dual;

select rtrim('? kallen? ',' ') from dual;

-- trim 刪除左右兩邊的字符

select trim('a' from 'abc') from dual;

-- 5.求子串 substr(str,loc,len)-->loc從1開始

select substr('abcd',2,2) from dual;

-- 6.查找字符串

/*

如果找到返回>=1的索引艺沼;如果沒找到返回0

*/

select instr('abcd','b') from dual;

-- 7.求長度

select length('abcd') from dual;?

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

-- 數(shù)值型函數(shù)

-- 四舍五入round(x,y)對x保留y為小數(shù)

select round(23.652) from dual;

select round(23.652,1) from dual;

select round(25.652,-1) from dual;

-- 返回x按精度y截取后的值

select trunc(23.652) from dual;

select trunc(23.652,2) from dual;

select trunc(23.652,-1) from dual;

-- mod(x蕴掏,y)求余數(shù)

select mod(9,2) from dual;

-- ceil 向上取整

select ceil(1.9) from dual;

-- floor 向下取整

select floor(1.9) from dual;?

日期函數(shù)

-- 返回系統(tǒng)當(dāng)前時(shí)間

select sysdate from dual;

-- 返回當(dāng)前會話時(shí)區(qū)中的當(dāng)前日期

select current_date from dual;

-- 添加月數(shù)

select add_months(sysdate,1) from dual;

-- 返回兩個(gè)時(shí)間相差的月數(shù)

select months_between(sysdate,add_months(sysdate,2)) from dual;

-- 需求:查詢工作年限在30年以上

select e.ename,e.hiredate

from emp e

where months_between(sysdate,e.hiredate)/12 > 30

-- 返回date所在月份最后的一天

select last_day(add_months(sysdate,1)) from dual;

-- next_day(date1障般,week) 返回date1下周星期幾的日期

select sysdate "當(dāng)時(shí)日期",next_day(sysdate,'Monday') "下周星期一" from dual;

-- 查詢會話的環(huán)境參數(shù)

select * from nls_session_parameters;?

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

轉(zhuǎn)換函數(shù)就是把字符囚似、日期、數(shù)值型數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換饶唤。類型轉(zhuǎn)換分兩種:隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換

組函數(shù)(A)

組函數(shù)把多行數(shù)據(jù)經(jīng)過運(yùn)算后返回單個(gè)值。也稱聚合函數(shù)募狂。

-- 求公司雇員的數(shù)量

select count(*)

from emp e;

select count(e.empno)

from emp e;

select count(1)

from emp e;

-- avg:對多個(gè)記錄的某個(gè)字段求平均值

-- 需求:求底薪的平均值

select avg(e.sal)

from emp e;

-- 需求:求雇員的最高薪資/最低薪資

select max(e.sal),min(e.sal),avg(e.sal)

from emp e;

-- 需求:求公司一個(gè)月的員工基本開銷

select sum(e.sal)

from emp e;

?

注意:

[1] 組函數(shù)或聚合函數(shù)是對一個(gè)數(shù)據(jù)集(表數(shù)據(jù)角雷、查詢出來的表、分組的表)進(jìn)行聚合勺三。

[2] 聚合函數(shù)對字段是null的值進(jìn)行忽略。count(*)

-- 求有津貼的員工的數(shù)量

select count(e.comm)

from emp e;

?

[3] max/min 適合任意數(shù)據(jù)類型吗坚,sum/avg 只適用于數(shù)值類型。

聚合函數(shù)的結(jié)果可以作為其他查詢條件商源。

-- 最早入職的員工

select e.ename,e.hiredate

from emp e

where e.hiredate = (select min(e.hiredate) from emp e);?

分組(group by)(A)

在處理統(tǒng)計(jì)或聚合數(shù)據(jù)時(shí),很多時(shí)候需要對數(shù)據(jù)進(jìn)行分組 語法

select field1,牡彻。。庄吼。

from tableName

group by field1[,field2,…]?

按照field1[,field2,…] 分組,字段值相同的記錄分到一組总寻。

group by的工作原理

?

對數(shù)據(jù)進(jìn)行分組后,select語句的字段值只能是分組字段或者聚合函數(shù)废菱。

[1]分組和聚合函數(shù)

-- 需求:求各個(gè)部門的人數(shù)

select e.deptno,e.ename

from emp e

group by e.deptno;? ?

-- 需求:統(tǒng)計(jì)部門10的人數(shù)

select count(1)

from emp e

where e.deptno = 10;

-- 需求:求各個(gè)部門的人數(shù)

select e.deptno,e.ename

from emp e

group by e.deptno;

-- 需求:求各個(gè)部門的平均薪資

select e.deptno,avg(e.sal)

from emp e

group by e.deptno

-- 需求:求各個(gè)部門的月收入平均值

select e.deptno,avg(e.sal+nvl(e.comm,0))

from emp e

group by e.deptno

?

[2]null值歸為一組

-- 特例:按照津貼分組

select e.comm,count(1)

from emp e

group by e.comm?

having

如果需要對分組的數(shù)據(jù)進(jìn)行條件過濾,必須使用having!!!

-- group by having

-- 查詢部門平均薪資大于3000的部門

select e.deptno

from emp e

group by e.deptno

having avg(e.sal) > 3000

-- 查詢部門薪資大于3000的雇員按部門分組的平均薪資

select e.deptno,avg(e.sal)

from emp e

where e.sal > 3000

group by e.deptno;?

注意:

[1] Where過濾行殊轴,having過濾分組袒炉。

[2] Having支持所有where操作符旁理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末我磁,一起剝皮案震驚了整個(gè)濱河市孽文,隨后出現(xiàn)的幾起案子夺艰,更是在濱河造成了極大的恐慌,老刑警劉巖郁副,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡拔疚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門栋艳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人句各,你說我怎么就攤上這事≡浔觯” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵菌湃,是天一觀的道長遍略。 經(jīng)常有香客問我,道長绪杏,這世上最難降的妖魔是什么下愈? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任蕾久,我火速辦了婚禮,結(jié)果婚禮上僧著,老公的妹妹穿的比我還像新娘。我一直安慰自己盹愚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布皆怕。 她就那樣靜靜地躺著,像睡著了一般愈腾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虱黄,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼盐欺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冗美,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粉洼,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼属韧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宵喂,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锅棕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裸燎,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年德绿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片移稳。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秒裕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情几蜻,我是刑警寧澤喇潘,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布梭稚,位于F島的核電站,受9級特大地震影響弧烤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一莺戒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧从铲,春花似錦、人聲如沸名段。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麻惶。三九已至信夫,卻和暖如春窃蹋,著一層夾襖步出監(jiān)牢的瞬間静稻,已是汗流浹背脐彩。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工姊扔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梅誓,地道東北人恰梢。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓梗掰,卻偏偏與公主長得像嵌言,于是被迫代替她去往敵國和親及穗。 傳聞我的和親對象是個(gè)殘疾皇子摧茴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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

  • 1. select * from emp; 2. select empno, ename, job from em...
    海納百川_4d26閱讀 1,897評論 0 4
  • 1.簡介 數(shù)據(jù)存儲有哪些方式苛白?電子表格,紙質(zhì)文件焚虱,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫鹃栽? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 1,710評論 0 2
  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,072評論 0 0
  • SQL ==SQLPLUS== DML(Data Manipulation Language,數(shù)據(jù)操作語言)---...
    蝌蚪1573閱讀 587評論 0 4
  • 一覺睡到下午一兩點(diǎn)的真的只有我了。睡神薇芝。中途醒了打開手機(jī)不是看時(shí)間蓬抄,看著微信圖標(biāo)上有沒接收到消息夯到。我說我泛濫和俗氣...
    深海垃圾場閱讀 123評論 0 0