多表查詢和子查詢.ppt_第1頁
多表查詢和子查詢.ppt_第2頁
多表查詢和子查詢.ppt_第3頁
多表查詢和子查詢.ppt_第4頁
多表查詢和子查詢.ppt_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第四部分:多表查詢和子查詢,多表查詢:使用數(shù)據(jù)查詢時,通常一個表中沒有所需的數(shù)據(jù),因此需要多表查詢。在關(guān)系數(shù)據(jù)庫中,將相關(guān)信息存儲在單獨的表中,以避免重復(fù)數(shù)據(jù)。通常,關(guān)系數(shù)據(jù)庫、表和表之間存在關(guān)系。多表查詢通常是將兩個或多個表中關(guān)系字段中具有相同值的記錄作為新記錄鏈接到結(jié)果集中。1,笛卡爾集:出現(xiàn)在多表查詢中的笛卡爾集現(xiàn)象:笛卡爾集構(gòu)成了一個表中的一個唱片和另一個表中的每個記錄出現(xiàn)在結(jié)果集中的新記錄(如果存在兩個表)。結(jié)果集中的唱片總數(shù)為Mn條記錄。多表查詢中出現(xiàn)這種現(xiàn)象是我們不想看到的。出現(xiàn)笛卡爾集的原因是多表查詢沒有連接條件。2、Oracle的多表連接主要包括:(1)內(nèi)部連接:不等于等效連

2、接的連接、自然連接。(2)外部連接:分為左右連接。(3)自連接:一個表中的一個記錄與牙齒表中的另一個記錄相關(guān)聯(lián)。3,對等連接:稱為簡單連接或內(nèi)部連接,是連接查詢中最常用的連接方法。(1)語法如下:select table1.column _ name、table2.column _ name、from table 1 inner join table 2 on table 1 . column _ name=table 2 . column _ name inner join where condition,第4部分:(2)示例:銷售的圖書的圖書編號、圖書類型、價錢銷售量和銷售日期select

3、 titles.title _ id、type _,price、ord _ date from titles joid注意:多個可以使用“表名”限定。也可以限定為在表上加上別名的形式,從而簡化編程,提高效率。范例:select t.title _ id、t.type _、t.price、s . ord _ date from titles t join sales on t . title(3)獨立練習(xí):12)查詢具有獎金的所有員工的員工編號、員工姓名、部門編號和部門名稱信息。3)查詢銷售圖書的圖書編號、標題、出版社名稱、作者姓名、銷售日期、銷售總量。附注:join語句(如select.tit

4、le _ id、t.type _、t.price、s.ord _ date from titles t)可以不用于內(nèi)部連接,將上述3茄子練習(xí)重寫為沒有join on連接的格式,第4部分:多表格Select ename、sal、grade from EMP、salgrade where sal between los al and hisal;5,自然連接:NATURAL JOIN子句創(chuàng)建等值連接,條件是兩個表中具有相同名稱的列,而不是指定關(guān)鍵字字段的等值。查詢表中滿足等值條件的所有數(shù)據(jù)。注意:如果列名相同,數(shù)據(jù)類型不同,或者查詢中出現(xiàn)列的限定詞,則會出錯。示例:select title _ i

5、d、type _、s.qty、ord _ date from titles natural join sales where price 20;第4部分:多表查詢和子查詢,6,自連接:自連接時連接的特殊情況,連接了一個表中的記錄(例如,查詢和bu1032號圖書類型相同的書的書名價錢,包含bu1032號圖書中的信息selectdistinctt1.title),T2。title,T2。price from titles t1,titles T2 where t1.price=T2。price and t1.title _ id=bu1032觀察結(jié)果集中的數(shù)據(jù):確定結(jié)果集中的數(shù)據(jù)是否滿足業(yè)務(wù)要求,

6、如果不需要,則分析如何復(fù)蓋。7、外部連接:外部連接分為兩種茄子類型。一個是左連接,另一個是右連接。外部連接時,必須確保這兩個表中的一個是主表。(1)外部連接的語法格式:將缺少的表顯示為“”。也就是說,沒有匹配值的表稱為“缺少的表”。Select table1.column、table2.column from table1、table 2 where table 1 . column()=table 2 . column;(右側(cè)連接)select table1.column、table2.column from table1、table 2 where table 1 . column=tab

7、le 2 . column()(左側(cè)連接)或:2)所有售出圖書的書名銷售日期和銷售量a、select t.title _ id、t.type _、s.qty、s.ord _ date from titles t、select t t.title _ id。第4部分:多表查詢和子查詢,8,添加:合并查詢:union關(guān)鍵字使您可以對多個select結(jié)果進行分組。union將徐璐混合其他select命令生成的數(shù)據(jù)并消除重復(fù)記錄。如果不想刪除重復(fù)的記錄,也可以使用union all命令將查詢獲得的數(shù)據(jù)保存到新表中。例:查詢圖書編號7067和7066號圖書銷售店的銷售信息,分別合并一個結(jié)果集。selec

8、t * from sales where stor _ id=7066 union select * from sales where stor _ id=7067;9,補充:ANSI SQL 1999連接查詢語法為:SELECT table1.column,Table 2 .column from table 1 CROSS JOIN table 2 |-創(chuàng)建互連笛卡爾集NATURAL JOIN table2 | -自然連接JOIN table 2 using(column _ name)-使用using語句joii叉積和笛卡兒積相等。select last _ name,departmen

9、t _ name from employees cross join departments;第4部分:多表查詢和子查詢,(2)使用USING子句創(chuàng)建連接,使用NATURAL JOIN子句創(chuàng)建對等連接時,如果存在多個具有相同名稱和不同數(shù)據(jù)類型的列,則可以使用USING子句指定對等連接所需的列。使用USING,您可以在有多個列滿足條件時進行選擇。不要在選定列中使用表名前綴或別名。NATURAL JOIN子句和USING子句經(jīng)常同時使用。select e.employee _ id,e.last _ name,department _ id from employees e join depart

10、ments d using(depaa,) 出版社名字的信息(5)在紐約工作的員工的姓名、工資、獎金部門名稱,我們掌握了基本查詢語句、條件查詢、單行函數(shù)、組函數(shù)和組查詢、多表查詢等功能。 基本上可以滿足工作的需要,但是有些要求必須通過復(fù)雜的查詢來實現(xiàn)。這使用了相對復(fù)雜、難以掌握的查詢子查詢。子查詢在主查詢結(jié)構(gòu)中出現(xiàn)的select語句稱為子查詢,子查詢必須括在括號中,括號中的查詢稱為子查詢或內(nèi)部查詢,外部查詢稱為主查詢,其執(zhí)行順序是在執(zhí)行主查詢之前執(zhí)行子查詢。1,子查詢語法結(jié)構(gòu):select查詢列from表名Where列名運算符(Select查詢列From表名);說明:牙齒子查詢的結(jié)果可以用作外

11、部查詢的條件。實例:(1)查詢部門中所有員工的信息,如工作編號、姓名、薪金、獎金、部門編號和部門名稱。第4部分:多表查詢和子查詢select e.empno、e.ename、e.sal、m、e.deptno、D. dname from EMP e、dept d (2)書編號、標題Select.title _ id、t.title、t.type _、t.price、s.ord _ date、s.qty from titles T .子查詢中包含a,子查詢中包含b,子查詢中包含圓括號子查詢具有單行子查詢;第4部分:多表查詢和子查詢;第2部分:單行子查詢:子查詢結(jié)果只有一個記錄;單行子查詢需要運算符

12、:=、(1)顯示在where地區(qū)的子查詢:例如,位于查詢和SCOTT牙齒等部門且薪金大于SCOTT薪金的員工信息包括姓名、部門編號、薪金和獎金信息。(獨立完成)有點。(2)出現(xiàn)在having語句中的子祖懷:例如,要統(tǒng)計公司公司的人數(shù),要查找職員數(shù)高于公司各部門平均人數(shù)的部門信息select deptno,count(EMP no)from EMP group by dept no having count 3,多行子查詢使用多行運算符。in,any,all,第四部分:多表查詢和子查詢,(1)in運算符:與前面的功能一樣,獲取其中一個列表。示例1:The Busy Executives Data

13、base Guide,The Gourmet microw availsSelecttitle _ id,title,type _,price from titles where price in(select price from titles where title=the busy exect(2)安妮:安妮經(jīng)常和一起使用。1)any:大于子查詢返回的結(jié)果之一。也就是說,大于最小值。實例1:查詢部門10中薪金高于任何員工的員工的工作編號名稱信息。不包括部門10中的員工。第4部分:多表查詢和子查詢、select empno、ename from EMP where salany(select sal from EMP where deptno=10)和dept no!=10;示例2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論