sql 多表查詢 代碼示例【資料運用】
《sql 多表查詢 代碼示例【資料運用】》由會員分享,可在線閱讀,更多相關(guān)《sql 多表查詢 代碼示例【資料運用】(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 SQL多表查詢代碼示例?? 在Pubs數(shù)據(jù)庫中,完成以下查詢 use pubs --使用內(nèi)聯(lián)接查詢出authors和publishers表中位于同一個城市的作者和出版社信息 select au_fname+'·'+au_lname as 作者,pub_name as 出版社 from authors inner join publishers on authors.city=publishers.city --查詢出作者號以1~5開頭的所有作者,并使用右外聯(lián)接在查詢的結(jié)果集中列出和作者 --在同一個城市的出版社名 select au_fname+'·'+au_lname
2、as 作者,pub_name as 出版社 from authors right outer join? publishers on authors.au_id like '[1-5]%' where authors.city=publishers.city --使用自聯(lián)接查找居住在 Oakland 相同郵碼區(qū)域中的作者。 select distinct a.au_fname+'·'+a.au_lname as 作者,a.au_id,a.zip from authors a inner join authors b on a.zip = b.zip where a.city=
3、'Oakland' and a.au_fname <> b.au_fname --P26《學(xué)習(xí)手冊》上機(jī)試驗的所有題目 select ascii('sql') --結(jié)果:115 select char(66) --結(jié)果:B select charindex('E','HELLO') --結(jié)果:2 select left('RICHARD',4) --結(jié)果:RICH select len('RICHARD') --結(jié)果:7 select lower('RICHARD') --結(jié)果:richard select 'SQL'+ltrim('RICHARD') --結(jié)果:
4、SQLRICHARD select reverse('ACTION') --結(jié)果:NOITCA select right('RICHARD',4) --結(jié)果:HARD select rtrim('RICHARD?? ')+'SQL' --結(jié)果:RICHARDSQL select patindex('%BOX%','ACTIONBOX') --結(jié)果:7 select 'RICHARD'+space(2)+'HELL' --結(jié)果:RICHARD? HELL select stuff('Weather',2,2,'I') --結(jié)果:WIther select substri
5、ng('Weather',2,2) --結(jié)果:ea select upper('Richard') --結(jié)果:RICHARD select dateadd(dd,10,getdate()) --結(jié)果:2005-10-26 16:04:58.030 select datediff(dy,getdate(),'2005-01-01') --結(jié)果:-288 select datepart(dw,'2004-10-01') --結(jié)果:6 select datename(dw,'2004-10-01') --結(jié)果:星期五 --第七講 多表查詢上機(jī)實驗 use recruitme
6、nt --- 需要得到年齡在35歲到40歲之間的外部候選人的信息 select * from ExternalCandidate where datediff(yy,dbirthdate,getdate()) between 35 and 40 --- 需要在當(dāng)前日期之后的10天在報紙上登載一則廣告,系統(tǒng)需要計算出日期并顯示 select distinct getdate() as today,dateadd(day,10,getdate()) as '10 days from today' from newsad --- 統(tǒng)計外部候選人接受測試和面試日期的間隔的時間平均值 s
7、elect avg(datediff(day,dtestdate,dinterviewdate)) as 測試面試日期間隔平均天數(shù) from externalcandidate --- 需要獲取外部候選人的姓名和他們申請的職位 select externalcandidate.vcandidatename as 姓名, ?????? position.vdescription as 申請職位 from externalcandidate left join position on externalcandidate.cpositioncode=position.cpositionc
8、ode --- 需要獲得在2001年應(yīng)聘的外部候選人的名字,及推薦他們的招聘機(jī)構(gòu)名 select externalcandidate.vcandidatename as 名字, ?????? ame as 推薦他們的招聘機(jī)構(gòu)名 from externalcandidate left join recruitmentagencies on externalcandidate.cagencycode=recruitmentagencies.cagencycode where year(externalcandidate.ddateofapplication)=2001 --- 需要獲
9、取外部候選人的姓名以及他們的參照的招聘的廣告所屬的報紙名 select externalcandidate.vcandidatename as 姓名, ?????? ewspapername as 參照招聘廣告所屬報紙 from externalcandidate,newsad,newspaper where ewsadno=ewsadno and ????? ewspapercode=ewspapercode --- 需要獲取大學(xué)名稱、報紙名稱以及它們地址的列表 select college.cCollegeName as 大學(xué)名稱,college.vcollegeaddres
10、s 學(xué)校地址, ?????? ewspapername as 報紙名稱,newspaper.vhoaddress as 報社地址 from college,newspaper --問題:這兩張表之間沒有聯(lián)系,那么應(yīng)選用何種聯(lián)接?否則這里面有太多冗余數(shù)據(jù) --???? 是否為同一所城市里有哪些大學(xué)和哪些報紙? select college.cCollegeName as 大學(xué)名稱,college.vcollegeaddress 學(xué)校地址, ?????? ewspapername as 報紙名稱,newspaper.vhoaddress as 報社地址 from college,ne
11、wspaper where college.ccity=newspaper.ccity --因為大學(xué)所在城市的值為某某,而報紙所在城市的值為某某市,因此按此不能正確查出結(jié)果 --采用以下辦法可以解決 select college.cCollegeName as 大學(xué)名稱,college.vcollegeaddress 學(xué)校地址, ?????? ewspapername as 報紙名稱,newspaper.vhoaddress as 報社地址 from college,newspaper where left(ltrim(college.ccity),2)=left(ltrim(n
12、ewspaper.ccity),2) --還是顯示出大學(xué)表里符合條件的記錄與報紙表里符合條件的記錄之積,內(nèi)聯(lián)接結(jié)果一樣 --第七講 多表查詢作業(yè) --P26《學(xué)習(xí)手冊》上機(jī)作業(yè)的所有題目 use GlobalToyz --按指定格式(詳見學(xué)習(xí)手冊P27)顯示所有運貨的報表(天數(shù)=實際到達(dá)日期-運貨日期) select corderno as 定單號, dshipmentdate as 運貨日期, ?????? dactualdeliverydate as 實際到達(dá)日期, ?????? datediff(day,dshipmentdate,dactualdeliveryda
13、te) as 運送天數(shù) from shipment --小結(jié):兩日期之差運算為第二個日期參數(shù)-第一個日期參數(shù) --按指定格式(詳見學(xué)習(xí)手冊P27)顯示所有的訂單 select cOrderNo as 定單號,cShopperId as 購物者號,dOrderDate as '訂單日期(號)', ?????? datename(dw,dorderdate)星期幾 from orders --小結(jié):求星期幾,日期元素只能用DW,而不能用WK,WK求得是在一年中的第幾周,而列別名如果有 --????? 特殊字符需要引號引起來 --顯示所有玩具名和所屬的種類名 select toy
14、s.vToyName as 玩具名,Category.cCategory as 種類名 from category join toys on toys.cCategoryId = Category.cCategoryId --小結(jié):交叉聯(lián)接不能使用條件,而內(nèi)聯(lián)接和右外聯(lián)接在此效果相同, --???? 左外聯(lián)接和全外聯(lián)接效果相同,但多出九條玩具名為空的記錄, --???? 因為左外聯(lián)接時將顯示所有左表中即種類表中的記錄,即使沒有該玩具屬于該種類, --???? 此時玩具名為NULL值 --???? JOIN前不加關(guān)鍵字時默認(rèn)為內(nèi)聯(lián)接 --???? 用join聯(lián)接表名時,后面條件語
15、句只能先跟on關(guān)鍵字,不能直接用where --按指定格式(詳見學(xué)習(xí)手冊P27)顯示所有玩具的名稱、商標(biāo)和種類 select toys.vtoyname as 玩具名,ToyBrand.cBrandName as 商標(biāo)名, ?????? Category.ccategory as 類別名 from toys,ToyBrand,Category where toys.cBrandId=ToyBrand.cBrandId and toys.cCategoryId=Category.cCategoryId --問題:如果用逗號聯(lián)系多張表,之間采用的是什么聯(lián)接方式?表與表之間的前后順序影不
16、影響結(jié)果? --按指定格式(詳見學(xué)習(xí)手冊P28)顯示所有玩具的訂貨號、玩具ID和玩具使用的禮品包裝說明 select orderdetail.corderno as 定單號,orderdetail.ctoyid as 玩具號, ?????? wrapper.vdescription as 包裝信息 from orderdetail left join wrapper on orderdetail.cwrapperid=wrapper.cwrapperid select orderdetail.corderno as 定單號,orderdetail.ctoyid as 玩具號, ?
17、????? wrapper.vdescription as 包裝信息 from toys,orderdetail,wrapper where toys.ctoyid=orderdetail.ctoyid and orderdetail.cwrapperid=wrapper.cwrapperid --小結(jié):外連接的關(guān)鍵字outer可以省略不寫 --問題:采用以上方式查出的結(jié)果好象未能滿足需求,沒有顯示所有的玩具,如果用三張表,即 --????? 加入toys表后,加上一個toys.ctoyid=orderdetail.ctoyid后也不能列出所有玩具。 --按指定格式(詳見學(xué)習(xí)手冊P
18、28)顯示所有購物者名,及他們所購買的訂單信息(無論購物者是否有訂單) select shopper.vfirstname as 購物者名,orders.corderno as 定單號, ?????? orders.dorderdate as 定單時間,orders.mtotalcost as 定單金額 from shopper left join orders on shopper.cshopperid=orders.cshopperid --按指定格式(詳見學(xué)習(xí)手冊P28)顯示訂單號碼、訂單日期和每個訂單所在的季節(jié) select cOrderNo as 定單號,dOrder
19、Date as 定單日期,datename(qq,dOrderDate) as 季節(jié) from orders --問題:如果要顯示季節(jié),是否需要用到分支選擇語句? --按指定格式(詳見學(xué)習(xí)手冊P28)顯示所有購物者ID、名字、電話和相應(yīng)訂單的接受者 select shopper.cshopperid as 購物者號,shopper.vfirstname as 名字, ?????? shopper.cphone as 電話,recipient.vfirstname as 接受者名,recipient.cphone as 電話 from shopper,orders,recipient
20、 where shopper.cshopperid = orders.cshopperid and orders.corderno = recipient.corderno --小結(jié):如果表與表之間聯(lián)接沒用JOIN,則條件語句關(guān)鍵字不能用ON,只能用WHERE --按指定格式(詳見學(xué)習(xí)手冊P28)顯示所有購物者和接受者的名字、地址 select shopper.vfirstname as 購物者名字,shopper.vaddress as 購物者地址, ?????? recipient.vfirstname as 接受者名字,recipient.vaddress as 接受者地址
21、 from shopper,orders,recipient where shopper.cshopperid=orders.cshopperid and orders.corderno=recipient.corderno --顯示所有玩具名及該玩具的銷售數(shù)量 select toys.vtoyname as 玩具名,orderdetail.siqty as 銷售數(shù)量 from toys left join orderdetail on toys.ctoyid=orderdetail.ctoyid --顯示在2001年5月消費金額最高的前3名購物者名及消費金額 select to
22、p 3 shopper.vfirstname as 購物者名,sum(orders.mtotalcost) as 消費金額 from shopper left join orders on year(orders.dorderdate)=2001 and month(orders.dorderdate)=5 ?? and shopper.cshopperid=orders.cshopperid group by shopper.vfirstname,orders.cshopperid order by sum(orders.mtotalcost) desc ? 5 cknr0
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案