1. 基礎(chǔ)的查詢操作 #簡單查詢 select * from emp; //查詢emp中所有的記錄 select empno, job,ename from emp; //查詢emp表中的某些字段 select ename as 名字 from emp; //使用字段別名 去重 distinct
select distinct deotno from emp; //去除重復(fù)的行(針對(duì)字段而言) 排序 order by
#默認(rèn)是升序(asc),降序(desc) select * from emp order by sal desc; //以工資按降序排序 select * from epm order by sal , deptno //多字段排序 select sal*12 annsal from epm order by annsal //別名排序 條件查詢 where
select * from emp where sal>1000; //工資大于1000的 select * from emp where sal>1000 and sal<2000; select * from emp where sal>5000 or sal<1000 select * from emp where sal<>2500 //工資不等于2500 select * from emp where sal is null //工資不空的 select * from emp where sal>0 or 1=1; //恒等式 ps:運(yùn)算符的優(yōu)先級(jí):算術(shù)>連接>比較>邏輯
分組查詢(group by) 描述:將表中的數(shù)據(jù)分成若干個(gè)小組 語法:select 字段 from where 條件 group by 字段 order by 字段
#例: select 字段 from where 條件 group by 字段 order by 字段 ps:在group by 分組,select 子句,不能寫group by沒有的字段。除非這些字段用在聚合函數(shù)中 過濾 having 描述:過濾分組之后的結(jié)果,只能出現(xiàn)在group by 的后面
#例: select deptno , count(1),avg(sal) from emp group by deptno having avg(sal) >2000 select avg(sal) avg_sal,deptno from emp group by deptno having avg_sal>2000; 執(zhí)行過程:from –where –group by --- having –select ---order by 分頁
#例: select * from emp limit 0 , 5 ; //從第1行開始取,取5行 模糊查詢
例: select * from emp where ename like 's%' ps: %:表示0~多個(gè)任意字符 _:表示1個(gè)任意字符 2. 內(nèi)連接與外連接 (1)內(nèi)連接: #語法: select table1.column,table2.column from table1,table2 where table1.column= table2.column select dept.DEPTNO,ename ,dname from emp inner join dept on emp.DEPTNO =dept.DEPTNO select emp.ename,dept.dname from emp inner join dept using(deptno) 注意:一般的如果兩張表示通過外鍵連接的,使用第1,2種查詢方法,如果不是外鍵連接的使用1種查詢方法。第3中方式的using中填入,兩張表中字段名稱相同的字段,而且通用列字段只出現(xiàn)一次(即去除重復(fù)的字段) 內(nèi)連接的特點(diǎn):
關(guān)聯(lián)表中都出現(xiàn)的字段值最終才能出現(xiàn)在結(jié)果集中 內(nèi)連接與順序無關(guān) (2)外連接: 左外連接 描述:兩個(gè)表在連接的過程中除了返回滿足條件的行以外,還返回左表中不滿足條件的行,這種連接叫左外連接。 #例: select deptno ,dname,empno,ename from dept left join emp using(deptno) //左外連接 右外連接 描述:兩個(gè)表在連接的過程中除了返回滿足條件的行以外,還返回右表中不滿足條件的行,這種連接叫右外連接。 #例: select deptno ,dname,empno,ename from dept right join emp using(deptno) //右外連接 全外連接 描述:兩個(gè)表在連接的過程中除了返回滿足條件的行以外,還返回兩個(gè)表中不滿足條件的行,這種連接叫做全外連接。(笛卡爾積) #例: select deptno ,dname,empno,ename from dept full join emp using(deptno) //全外連接 自然連接 描述:特殊的等值連接:不需要聲明相等的字段,會(huì)自動(dòng)匹配 #例: select * from emp natural join dept; (等值連接) 外連接的特點(diǎn) 有主從之分,與連接順序有關(guān) 哪一個(gè) 是主表,就遍歷哪一個(gè)表,然后與從表匹配相應(yīng)的記錄,合并,沒有匹配到的用null填充 3. 子查詢 語法:select 字段 from table where 表達(dá)式 operator (子查詢字段)。 特點(diǎn):子查詢?cè)谥鞑樵兦皥?zhí)行一次,主查詢使用子查詢的結(jié)果 使用: - 單行子查詢:如果使用子查詢的結(jié)果是1行,可以使用比較運(yùn)算符(> < <>) - 多行子查詢:如果使用子查詢的結(jié)果是多行,則 all 、any in - exists:select from dept e where exists (select from emp e1 where sal>2000 and e1.deptno=e.deptno) in和exists的區(qū)別: - in:先執(zhí)行子查詢,將結(jié)果返回給主查詢,主查詢繼續(xù)執(zhí)行 - 先執(zhí)行主查詢,將主查詢的值依次在子查詢進(jìn)行匹配,根據(jù)是否匹配返回true或者false,如果是true連接展示,否則不展示。 子查詢和關(guān)聯(lián)查詢的使用時(shí)機(jī) - 子查詢:查詢條件和結(jié)果放在同一張表中 - 關(guān)聯(lián)查詢,查詢條件和結(jié)果分布在多張表中
3. 聯(lián)合查詢 關(guān)鍵字:union、union all。 區(qū)別: - union:會(huì)發(fā)生去重 - union all:不會(huì)發(fā)生去重 用法:
#例: select * from emp where sal>2000 union select * from emp where deptno>20 select * from emp where sal>2000 union all select * from emp where deptno>20 使用要求:聯(lián)合的結(jié)果集必須一致(兩張表一致,查詢的字段也一致),不然會(huì)發(fā)生錯(cuò)誤。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長網(wǎng)微信