sql 多表查詢 代碼示例_第1頁
sql 多表查詢 代碼示例_第2頁
sql 多表查詢 代碼示例_第3頁
sql 多表查詢 代碼示例_第4頁
sql 多表查詢 代碼示例_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

SQL多表查詢代碼示例在Pubs數(shù)據(jù)庫中,完成以下查詢usepubs-—使用內聯(lián)接查詢出authors和publishers表中位于同一個城市的作者和出版社信息selectau_fname+'·’+au_lnameas作者,pub_nameas出版社fromauthorsinnerjoinpublishersonauthors.city=publishers。city—-查詢出作者號以1~5開頭的所有作者,并使用右外聯(lián)接在查詢的結果集中列出和作者—-在同一個城市的出版社名selectau_fname+'·’+au_lnameas作者,pub_nameas出版社fromauthorsrightouterjoinpublishersonauthors.au_idlike’[1—5]%'whereauthors.city=publishers。city—-使用自聯(lián)接查找居住在Oakland相同郵碼區(qū)域中的作者。fromauthorsainnerjoinauthorsbwherea.city=’Oakland’anda.au_fname<〉b.au_fnameP所有題目selectascii('sql’)selectchar(66)selectcharindex(’E’,’HELLO’)-—結果:2selectleft('RICHARD',4)--結果:RICHselectlen(’RICHARD’)selectlower(’RICHARD')select'SQL'+ltrim('RICHARD')selectreverse(’ACTION')selectright('RICHARD',4)selectrtrim(’RICHARD')+’SQL'selectpatindex('%BOX%’,'ACTIONBOX')select’RICHARD’+space(2)+'HELL'——結果:RICHARDHELLselectstuff('Weather’,2,2,'I')selectsubstring(’Weather’,2,2)selectupper('Richard’)-—結果:RICHARDselectdateadd(dd,10,getdate())selectdatediff(dy,getdate(),’2005—01-01’)-—結果:-288selectdatepart(dw,’2004—10—01’)—-結果:6selectdatename(dw,’2004-10-01’)——結果:星期五——第七講多表查詢上機實驗userecruitment外部候選人的信息select*fromExternalCandidatewheredatediff(yy,dbirthdate,getdate())between35and40—-—需要在當前日期之后的10天在報紙上登載一則廣告,系統(tǒng)需要計算出日期并顯示selectdistinctgetdate()astoday,dateadd(day,10,getdate())as’10daysfromtoday’fromnewsad-——統(tǒng)計外部候選人接受測試和面試日期的間隔的時間平均值selectavg(datediff(day,dtestdate,dinterviewdate))as測試面試日期間隔平均天數(shù)fromexternalcandidate——-需要獲取外部候選人的姓名和他們申請的職位selectexternalcandidate。vcandidatenameas姓名,position.vdescriptionas申請職位fromexternalcandidateleftjoinpositiononexternalcandidate.cpositioncode=position.cpositioncode--—需要獲得在2001年應聘的外部候選人的名字,及推薦他們的招聘機構名selectexternalcandidate.vcandidatenameas名字,ameas推薦他們的招聘機構名fromexternalcandidateleftjoinrecruitmentagenciesonexternalcandidate.cagencycode=recruitmentagencies.cagencycodewhereyear(externalcandidate.ddateofapplication)=2001---需要獲取外部候選人的姓名以及他們的參照的招聘的廣告所屬的報紙名selectexternalcandidate.vcandidatenameas姓名,ewspapernameas參照招聘廣告所屬報紙fromexternalcandidate,newsad,newspaperwhereewsadno=ewspapercode=ewspapercode—-—需要獲取大學名稱、報紙名稱以及它們地址的列表selectcollege.cCollegeNameas大學名稱,college.vcollegeaddress學校地址,ewspapernameas報紙名稱,newspaper。vhoaddressas報社地址fromcollege,newspaper—-問題:這兩張表之間沒有聯(lián)系,那么應選用何種聯(lián)接?否則這里面有太多冗余數(shù)據(jù)selectcollege.cCollegeNameas大學名稱,college。vcollegeaddress學校地址,ewspapernameas報紙名稱,newspaper.vhoaddressas報社地址fromcollege,newspaperwherecollege.ccity=newspaper。ccity--因為大學所在城市的值為某某,而報紙所在城市的值為某某市,因此按此不能正確查出結果--采用以下辦法可以解決selectcollege.cCollegeNameas大學名稱,college。vcollegeaddress學校地址,ewspapernameas報紙名稱,newspaper.vhoaddressas報社地址fromcollege,newspaperwhereleft(ltrim(college。ccity),2)=left(ltrim(newspaper.ccity),2)—-還是顯示出大學表里符合條件的記錄與報紙表里符合條件的記錄之積,內聯(lián)接結果一樣--第七講多表查詢作業(yè)useGlobalToyz-—按指定格式(詳見學習手冊P27)顯示所有運貨的報表(天數(shù)=實際到達日期-運貨日期)selectcordernoas定單號,dshipmentdateas運貨日期,dactualdeliverydateas實際到達日期,datediff(day,dshipmentdate,dactualdeliverydate)as運送天數(shù)fromshipment-—小結:兩日期之差運算為第二個日期參數(shù)—第一個日期參數(shù)—-按指定格式(詳見學習手冊P27)顯示所有的訂單selectcOrderNoas定單號,cShopperIdas購物者號,dOrderDateas'訂單日期(號)’,datename(dw,dorderdate)星期幾fromorders—-小結:求星期幾,日期元素只能用DW,而不能用WK,WK求得是在一年中的第幾周,而列別名如果有--特殊字符需要引號引起來——顯示所有玩具名和所屬的種類名selecttoys.vToyNameas玩具名,Category.cCategoryas種類名fromcategoryjointoysontoys.cCategoryId=Category。cCategoryId——小結:交叉聯(lián)接不能使用條件,而內聯(lián)接和右外聯(lián)接在此效果相同,-—左外聯(lián)接和全外聯(lián)接效果相同,但多出九條玩具名為空的記錄,--因為左外聯(lián)接時將顯示所有左表中即種類表中的記錄,即使沒有該玩具屬于該種類,—-JOIN前不加關鍵字時默認為內聯(lián)接——用join聯(lián)接表名時,后面條件語句只能先跟on關鍵字,不能直接用where——按指定格式(詳見學習手冊P27)顯示所有玩具的名稱、商標和種類selecttoys。vtoynameas玩具名,ToyBrand。cBrandNameas商標名,Category.ccategoryas類別名fromtoys,ToyBrand,Categorywheretoys。cBrandId=ToyBrand.cBrandIdandtoys.cCategoryId=Category.cCategoryId—-按指定格式(詳見學習手冊P28)顯示所有玩具的訂貨號、玩具ID和玩具使用的禮品包裝說明selectorderdetail.cordernoas定單號,orderdetail.ctoyidas玩具號,wrapper。vdescriptionas包裝信息fromorderdetailleftjoinwrapperonorderdetail.cwrapperid=wrapper.cwrapperidselectorderdetail.cordernoas定單號,orderdetail.ctoyidas玩具號,wrapper.vdescriptionas包裝信息fromtoys,orderdetail,wrapperwheretoys。ctoyid=orderdetail。ctoyidandorderdetail.cwrapperid=wrapper.cwrapperid——小結:外連接的關鍵字outer可以省略不寫-—問題:采用以上方式查出的結果好象未能滿足需求,沒有顯示所有的玩具,如果用三張表,即-—加入toys表后,加上一個toys.ctoyid=orderdetail.ctoyid后也不能列出所有玩具?!?按指定格式(詳見學習手冊P28)顯示所有購物者名,及他們所購買的訂單信息(無論購物者是否有訂單)selectshopper.vfirstnameas購物者名,orders。cordernoas定單號,orders.dorderdateas定單時間,orders.mtotalcostas定單金額fromshopperleftjoinordersonshopper.cshopperid=orders。cshopperid——按指定格式(詳見學習手冊P28)顯示訂單號碼、訂單日期和每個訂單所在的季節(jié)selectcOrderNoas定單號,dOrderDateas定單日期,datename(qq,dOrderDate)as季節(jié)fromorders句?——按指定格式(詳見學習手冊P28)顯示所有購物者ID、名字、電話和相應訂單的接受者selectshopper.cshopperidas購物者號,shopper。vfirstnameas名字,shopper。cphoneas電話,recipient。vfirstnameas接受者名,recipient。cphoneas電話fromshopper,orders,recipientwhereshopper。cshopperid=orders.cshopperidandorders。corderno=recipient.corderno—-小結:如果表與表之間聯(lián)接沒用JOIN,則條件語句關鍵字不能用ON,只能用WHERE—-按指定格式(詳見學習手冊P28)顯示所有購物者和接受者的名字、地址selectshopper.vfirstnameas購物者名字,shopper.vaddressas購物者地址,recipient.vfirstnameas接受者名字,recipient.vaddressas接受者地址fromshopper,orders,recipientwhereshopper.cshopperid=orders。cshopperidandorders。corderno=recipient.corderno——顯示所有玩具名及該玩具的銷售數(shù)量selecttoys.vtoynameas玩具名,orderdetail.siqtyas銷售數(shù)量fromtoysleftjoinorderdetailontoys.ctoyid=orderdetai

溫馨提示

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

評論

0/150

提交評論