Oracle課堂筆記TWO

where子句

案例:顯示工資低于5000的員工信息

select * from briup_emp where sal<5000;

案例:查詢?nèi)肼殨r間在2014-01-01之后的員工信息

select * from briup_emp where startdate>'2014-01-01'

案例:查詢工資在3000到5000之間的用工信息

select * from briup_emp where sal>3000 and sal<5000;



like子句(模糊查詢)

通配符:%:0到N個字符? ? _:一個字符

案例:查詢員工表中所有張姓的同事信息。

? ? ? ? ? ?select * from briup_emp where ename like '張%' ;

? ? ? ? ? ?查詢名字第三個字母是a的員工的姓名和工資申尤。

? ? ? ? ? ?select ename胶逢,sal from briup_emp where ename like '__a%';

? ? ? ? ? ?查詢名字中倒數(shù)第三個字母是a的員工的姓名和工資初坠。

? ? ? ? ? ?select ename,sal from briup_emp where ename like '%a__';



in子句

案例:查詢1號部門和二號部門的所有員工信息碟刺。

? ? ? ? ? ?select * from briup_emp where deptno in(1,2) ;

? ? ? ? ? ?select ename,deptno from briup_emp where deptno=1 or deptno=2;



is null子句

案例:查詢獎金為空的員工信息。

? ? ? ? ? ?select * from briup_emp where comm is null ;

? ? ? ? ? ?查詢獎金不為空的員工信息占哟。

? ? ? ? ? ?select * from briup_emp where comm is not null ;



and or子句

案例:查詢工資大于5000或獎金大于500且名字里有A這個字符的員工信息谬哀。

? ? ? ? ? ?select ename,sal,comm from briup_emp where (sal>5000 or comm>500) and ename like '%a%';



order by子句

案例:查詢所有員工的工資并且從低到高排序惹恃。

? ? ? ? ? ?select ename夭谤,sal from briup_emp order by sal;

? ? ? ? ? ?查詢所有員工的工資并且從高到低排序。

? ? ? ? ? ?select ename巫糙,sal from briup_emp order by sal;

? ? ? ? ? ?查詢所有員工的信息朗儒,按照部門編號的升序,工資的降序参淹。

? ? ? ? ? ?select ename醉锄,sal,deptno from briup_emp order by deptno承二,sal desc;

? ? ? ? ? ?將所有員工的年工資做降序排列榆鼠。

? ? ? ? ? ?select ename,sal*12 年工資 from briup_emp order by 年工資 desc;



數(shù)據(jù)的分組函數(shù)(組函數(shù))

max min avg sum count

問題:求員工表中最大工資和最小工資;

select max(sal),min(sal) from briup_emp;

問題:求員工表中最大工資的員工信息亥鸠;

select * from briup_empwhere sal=max(sal);? error;

where子句后不能使用分組函數(shù)

select * from briup_emp where sal=(select max(sal) from briup_emp);

?問題:查詢員工的平均工資

select avg(sal) from briup_emp;

問題:顯示一共有多少個員工

select count(empno) from briup_emp;

問題:查詢工資低于平均工資的員工的信息

select ename,sal from briup_emp where sal<(select avg(sal) from briup_emp);

distinct關(guān)鍵字

select count(distinct deptno) from briup_emp;



group by子句: 對查詢結(jié)果進行分組統(tǒng)計妆够,如果在select后面使用group by子句,就可以將行劃分為較小的組负蚊,一旦使用分組后select操作的對象就變成了分組后的數(shù)據(jù)神妹,

問題:查詢每個部門的平均工資

select deptno,avg(sal)from briup_emp group by deptno;?? 抽象成---->

select a,c,函數(shù)(b) from tablename group by a,c;

注意:在select列表所有未包含在組函數(shù)中的列都應(yīng)該包含在group by子句中。

問題:查詢每個部門編號的最高工資和最低工資家妆;

select deptno,max(sal),min(sal) from briup_emp group by deptno;

問題:查詢每個工種的最高工資和最低工資鸵荠;

select job,max(sal),min(sal) from briup_emp group by job;

having子句:對分組查詢的結(jié)果做限制

問題:查詢平均工資大于3000的部門編號

select deptno,avg(sal) from briup_emp group by deptno having avg(sal)>3000 order by deptno;

總結(jié):

1、在select列表所有未包含在組函數(shù)中的列都應(yīng)該包含在group

by子句中伤极。

2蛹找、組函數(shù)只能在select、having哨坪、order by中使用庸疾。

3、group by —>

having—>order by

where和having區(qū)別:(都是去設(shè)置限定條件)

where后面不能跟分組函數(shù) 当编,having

一號部門的平均工資(有些情況下可以通用)

where:select avg(sal) from briup_emp where deptno=1;

having:select avg(sal) from briup_emp group by deptno having deptno=1;



多表查詢(從多張表中查數(shù)據(jù)届慈,根據(jù)需求分析出要得到的數(shù)據(jù)來自于多張表)

問題:每個員工的姓名和工資和部門名稱。

select t1.ename,t1.sal,t2.dname from briup_emp t1,briup_dept t2 where t1.deptno=t2.deptno;

笛卡爾集

如果在進行多表查詢的時候不指定連接條件忿偷,就會導(dǎo)致將一個表中單的所有行都連接在另一個表的所有行上金顿,成為笛卡爾積,如果一個表中有5000條數(shù)據(jù)鲤桥,另一個表中有10條數(shù)據(jù)揍拆,將返回50000行。

為了避免笛卡爾積芜壁,需要在where中加入有效的連接條件礁凡。

等值連接(連接條件中為等號)

問題:每個員工的姓名和工資和部門名稱高氮。

select t1.ename,t1.sal,t2.dname from briup_emp t1,briup_dept t2 where t1.deptno=t2.deptno;

不等值連接(連接條件中不為等號)

問題:查看每個員工的姓名和工資和工資等級。

select t1.ename,t1.sal,t2.grade? from briup_emp t1,briup_salgrade t2 wheret1.sal>=t2.losal and t1.sal<=t2.hisal;

等價于

select t1.ename,t1.sal,t2.grade? from briup_emp t1,briup_salgrade t2 wheret1.sal between t2.losal and t2.hisal ;必須是大值在前小值在后

外連接(通過外連接顷牌,吧對于連接條件不成立的記錄剪芍,依然包括在最后的結(jié)果中)

問題:統(tǒng)計每個部門的員工數(shù)(要求你顯示部門號,部門名字窟蓝,人數(shù))

?select t2.deptno部門號,t2.dname 部門名字,count(t1.empno) 部門人數(shù) from briup_emp

t1,briup_dept t2 where t1.deptno=t2.deptno group by t2.deptno,t2.dname;

左外連接:當(dāng)條件不成立是罪裹,等號左邊的數(shù)據(jù)依然要被包含。

右外連接:當(dāng)條件不成立是运挫,等號右邊的數(shù)據(jù)依然要被包含状共。

?select t2.deptno部門號,t2.dname 部門名字,count(t1.empno) 部門人數(shù) from briup_emp

t1,briup_dept t2 where t1.deptno(+)=t2.deptno group by t2.deptno,t2.dname;

自連接(將一張表通過別名視為多張表)

問題:查詢員工的姓名及其領(lǐng)導(dǎo)的姓名。

? ? ? ? ? ?select worker.ename,boss.ename from briup_emp worker,briup_emp boss where worker.mgr=boss.empno;

? ? ? ? ? 顯示上級領(lǐng)導(dǎo)是Larry的員工姓名(先查詢所有員工及其領(lǐng)導(dǎo)的姓名谁帕,再查出領(lǐng)導(dǎo)是Larry的員工)峡继。

? ? ? ? ? select worker.ename,boss.ename from briup_emp worker,briup_emp boss where worker.mgr=boss.empno and boss.ename='Larry';

如果員工表中有一萬條數(shù)據(jù),自連接就會產(chǎn)生一億條數(shù)據(jù)匈挖,所以自連接不適合操作大表碾牌。

層次查詢:可以替代自連接,本質(zhì)上是一個單表查詢儡循。

select level,ename,mgr from briup_emp connect by prior empno=mgr start with mgr is null;

(level:偽列舶吗,代表層次深度)



子查詢(嵌套查詢):即一個select中嵌套了另外一個或者多個select

問題:查詢和Smith在同一個部門的所有員工的姓名和部門號。

? ? ? ? ? ?select ename,deptno from briup_emp where deptno=(select deptno from briup_emp where ename='Smith');

應(yīng)用場景:

1择膝、當(dāng)一條語句需要依賴另一臺查詢語句的結(jié)果的時候誓琼,

單行子查詢:只返回一行數(shù)據(jù)的子查詢。

多行子查詢:返回多行數(shù)據(jù)的子查詢肴捉。

問題:查詢和部門1的工作相同的員工的姓名腹侣、工作和工資。

? ? ? ? ? ?select ename,job,sal from briup_emp where job in(select distinct job from briup_emp where deptno=1);

? ? ? ? ? ?查詢比部門1的員工的工資低的員工的姓名和工資齿穗。

? ? ? ? ? ?select ename,sal from briup_emp where sal<all(select sal from briup_emp where deptno=1;

? ? ? ? ? ?查詢比部門1的任意員工的工資高的員工的姓名和工資筐带。

? ? ? ? ? ?select ename,sal from briup_emp where sal>any(select sal from briup_emp where deptno=1;

? ? ? ? ? ?查詢和Smith相同部門相同工作的員工的信息。

? ? ? ? ? ?select ename,job,deptno from briup_emp where deptno=(select deptno from briup_emp where ename='Smith') and job=(select job from briup_emp where ename='Smith');

? ? ? ? ? ?select ename,job,deptno from briup_emp where (job,deptno)=(select job,deptno from briup_emp where ename='Smith');

? ? ? ? ? ?查詢和Smith相同部門缤灵、工作、領(lǐng)導(dǎo)蓝晒、工資的員工的信息腮出。

? ? ? ? ? ?select ename,job,deptno from briup_emp where (job,deptno)=(select job,deptno from briup_emp where ename='Smith');

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芝薇,隨后出現(xiàn)的幾起案子胚嘲,更是在濱河造成了極大的恐慌,老刑警劉巖洛二,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馋劈,死亡現(xiàn)場離奇詭異攻锰,居然都是意外死亡,警方通過查閱死者的電腦和手機妓雾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門娶吞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人械姻,你說我怎么就攤上這事妒蛇。” “怎么了楷拳?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵绣夺,是天一觀的道長。 經(jīng)常有香客問我欢揖,道長陶耍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任她混,我火速辦了婚禮烈钞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘产上。我一直安慰自己棵磷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布晋涣。 她就那樣靜靜地躺著仪媒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谢鹊。 梳的紋絲不亂的頭發(fā)上算吩,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機與錄音佃扼,去河邊找鬼偎巢。 笑死,一個胖子當(dāng)著我的面吹牛兼耀,可吹牛的內(nèi)容都是我干的压昼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼瘤运,長吁一口氣:“原來是場噩夢啊……” “哼窍霞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拯坟,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤但金,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后郁季,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冷溃,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡钱磅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了似枕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盖淡。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖菠净,靈堂內(nèi)的尸體忽然破棺而出禁舷,到底是詐尸還是另有隱情,我是刑警寧澤毅往,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布牵咙,位于F島的核電站,受9級特大地震影響攀唯,放射性物質(zhì)發(fā)生泄漏洁桌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一侯嘀、第九天 我趴在偏房一處隱蔽的房頂上張望另凌。 院中可真熱鬧,春花似錦戒幔、人聲如沸吠谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽工坊。三九已至,卻和暖如春敢订,著一層夾襖步出監(jiān)牢的瞬間王污,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工楚午, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昭齐,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓矾柜,卻偏偏與公主長得像阱驾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子怪蔑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

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

  • 1.簡介 數(shù)據(jù)存儲有哪些方式啊易?電子表格,紙質(zhì)文件饮睬,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫篮奄? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 1,726評論 0 2
  • 引出 ?請思考如下問題捆愁? –查詢所有員工的每個月工資總和割去,平均工資? –查詢工資最高和最低的工資是多少昼丑? –查詢公...
    C_cole閱讀 7,295評論 0 3
  • 目標(biāo) 聚合函數(shù) 分組函數(shù) 子查詢 多行子查詢 引出 ?請思考如下問題呻逆? –查詢所有員工的每個月工資總和,平均工資菩帝?...
    wqjcarnation閱讀 4,155評論 0 6
  • 5.多表查詢 多表查詢 目的:從多張表獲取數(shù)據(jù) 前提:進行連接的多張表中有共同的列 等連接 通過兩個表具有相同意義...
    喬震閱讀 1,247評論 0 0
  • parse xml Root.tag Grtelement
    輕情閱讀 223評論 0 0