資源描述:
《sql多表查詢(xún)與子查詢(xún)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、SQL基礎(chǔ)-->多表查詢(xún)--==========================--SQL基礎(chǔ)-->多表查詢(xún)--==========================/*一、多表查詢(xún)????簡(jiǎn)言之,根據(jù)特定的連接條件從不同的表中獲取所需的數(shù)據(jù)?????笛卡爾集的產(chǎn)生條件:???????省略連接條件???????連接條件無(wú)效???????第一個(gè)表中的所有行與第二個(gè)表中的所有行相連接???????????二、多表查詢(xún)語(yǔ)法:*/????SELECT?table1.column,?table2.column????FROM?table1,?table2????WHERE?table1.col
2、umn1?=?table2.column2;????/*????但要注意where?不要省了,省略where?即為笛卡爾集,而且where?條件要有效,????兩張表間有一個(gè)相同的字段,才好進(jìn)行有效的多表查詢(xún)?????查詢(xún)時(shí)列名前,加表名或表別名前輟(如果字段在兩個(gè)表中是唯一的可以不加)?????為了簡(jiǎn)化SQL書(shū)寫(xiě),可為表名定義別名,格式:from?表名別名????如:fromempe,deptd???????建議使用表的別名及表前綴,使用表別名可以簡(jiǎn)化查詢(xún),而使用表前綴則可以提高查詢(xún)性能?????例:查詢(xún)每個(gè)員工的工號(hào),姓名,工資,部門(mén)名和工作地點(diǎn)*/????select?emp
3、no,ename,sal,dname,loc?from?emp,dept????where?emp.deptno=dept.deptno;?/*三、多表連接類(lèi)型:????從數(shù)據(jù)顯示方式來(lái)講有:內(nèi)連接和外連接。????內(nèi)連接:只返回滿足連接條件的數(shù)據(jù)。????外連接:除了返回滿足連接條的行以外,還返回左(右)表中,不滿足條件的行,???????稱(chēng)為左(右)連接?????內(nèi)連接*/????select?empno,ename,sal,dname,loc?from?emp,dept????where?emp.deptno=dept.deptno;??--(Oracle8i?及以前的寫(xiě)法)
4、?????--內(nèi)連接的另一種寫(xiě)法:????select?empno,ename,job,sal,dept.deptno,dname,loc????from?emp?join?dept?on?(emp.deptno=dept.deptno);?--(SQL99的寫(xiě)法)?????/*????外連接:????兩個(gè)表的查詢(xún)中,使用外連接可以查詢(xún)另一個(gè)表或者兩個(gè)中不滿足連接條件的數(shù)據(jù)。????外連接的符號(hào)是(+),(+)要放在字段名后。(+)對(duì)面的那個(gè)表,會(huì)全部顯示。???????外連接語(yǔ)法*/????????SELECT?table1.column,?table2.column???--右
5、外連接???????FROM?table1,?table2???????WHERE?table1.column(+)?=?table2.column;?????????????SELECT?table1.column,?table2.column???--左外連接???????FROM?table1,?table2???????WHERE?table1.column?=?table2.column(+);?????--例:????select?empno,ename,job,sal,dept.deptno,dname,loc????from?emp,dept????where?em
6、p.deptno(+)=dept.deptno;?--(Oracle8i?及以前的寫(xiě)法)?????--另一種寫(xiě)法(右連接):?????--(SQL99的寫(xiě)法)????select?empno,ename,job,sal,dept.deptno,dname,loc????from?emp?right?join?dept?on?(emp.deptno=dept.deptno);?????--左連接:????????????????????(SQL99的寫(xiě)法)????select?empno,ename,job,sal,dept.deptno,dname,loc????from?emp?
7、left?join?dept?on?(emp.deptno=dept.deptno);?????--全連接(滿連接)????????????(SQL99的寫(xiě)法)???select?empno,ename,job,sal,d.deptno,dname,loc????from?empe?full?join?deptd?on?(e.deptno=d.deptno);?????/*????自然連接????????????????????(SQL99的寫(xiě)法)????以?xún)蓚€(gè)表具有