




已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
綜合練習(xí)(二)一、用SQL語句創(chuàng)建如下三張表:學(xué)生表(Student)、課程表(Course)和學(xué)生選課表(SC),三張表結(jié)構(gòu)如下:注:一、二兩題需要將命令放入*.sql腳本中,然后使用腳本進(jìn)行創(chuàng)建表及數(shù)據(jù)的錄入Student表結(jié)構(gòu)列 名說 明數(shù)據(jù)類型約 束sno 學(xué)號(hào)字符串,長度為7主鍵sname姓名字符串,長度為10非空ssex性別字符串,長度為2取男或女 sage年齡整數(shù)取值1545sdept所在系字符串,長度為20默認(rèn)為計(jì)算機(jī)系 Course表結(jié)構(gòu)列 名說 明數(shù)據(jù)類型約 束cno課程號(hào)字符串,長度為10主鍵cname課程名字符串,長度為20非空ccredit學(xué)分整數(shù)取值大于0semster學(xué)期整數(shù)取值大于0period學(xué)時(shí)整數(shù)取值大于0SC表結(jié)構(gòu)列 名說 明數(shù)據(jù)類型約 束sno學(xué)號(hào)字符串,長度為7主鍵,引用Student的外鍵cno課程號(hào)字符串,長度為10主鍵,引用Course的外鍵grade成績整數(shù)取值0100答案:1、Student表CREATE TABLE Student ( sno VARCHAR2(7) PRIMARY KEY, sname VARCHAR2 (10) NOT NULL, ssex VARCHAR2 (2) CHECK(ssex=男 OR ssex=女), sage NUMBER(2) CHECK(sage=15 AND sage0), semester NUMBER(2) CHECK(semester0), period NUMBER(3) CHECK(period0), CONTRAINT course_cno_pk PRIMARY KEY(cno) )3、SC表CREATE TABLE SC(sno char(7) NOT NULL, cno char(10) NOT NULL,grade tinyint CHECK(grade=0 AND grade=100),CONTRAINT sc_sno_cno_pk PRIMARY KEY(sno,cno),CONTRAINT student_sno_fk FOREIGN KEY(sno) REFERENCE Student(sno),CONTRAINT course_cno_fk FOREIGN KEY(cno) REFERENCE Course (cno)二、使用SQL語句分別向Student、Course、SC表中加入如下數(shù)據(jù):Student表數(shù)據(jù)snoSnamessexsagesdept9512101李勇男19計(jì)算機(jī)系9512102劉晨男20計(jì)算機(jī)系9512103王敏女20計(jì)算機(jī)系9512104張立男22信息系9512105錢小平女21信息系9512106吳賓女20數(shù)學(xué)系9512107王大力男19數(shù)學(xué)系Course表數(shù)據(jù)cnocnameccreditsemesterc01計(jì)算機(jī)文化學(xué)31c02Java85c03計(jì)算機(jī)網(wǎng)絡(luò)43c04數(shù)據(jù)庫基礎(chǔ)56c05高等數(shù)學(xué)62c06數(shù)據(jù)結(jié)構(gòu)74C07VB34SC 表數(shù)據(jù)snocnograde9512101c01909512101c029512102c01789512102c03669512103c04829512104c0675三、完成如下查詢1、查詢?nèi)w學(xué)生的學(xué)號(hào)和姓名 SELECT sno, sname from Student 2、查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)和所在系 SELECT sname, sno, sdept from Student3、查詢?nèi)w學(xué)生的姓名及其出生年份l 分析:由于Student表中只記錄了學(xué)生的年齡,而沒有記錄學(xué)生的出生年份,所以需要經(jīng)過計(jì)算得到學(xué)生的出生年份,即用當(dāng)前年減去年齡,得到出生年份。 SELECT sname, 2011 sage FROM Student 或SELECT sname, to_number(to_char(sysdate,yyyy) sage FROM Student4、查詢?nèi)w學(xué)生的姓名和出生年份,并在出生年份列前加入一個(gè)列,此列的每行數(shù)據(jù)均為“Year of Birth”常量值 SELECT snamem, Year of Birth, to_number(to_char(sysdate,yyyy) sage FROM Student5、在選課表(SC)中查詢有哪些學(xué)生選修了課程,并列出學(xué)生的學(xué)號(hào) SELECT sno FROM SC 在結(jié)果集中會(huì)有許多重復(fù)的行(實(shí)際上一個(gè)學(xué)生選修了多少門課程,其學(xué)號(hào)就會(huì)在結(jié)果集中重復(fù)出現(xiàn)多少次)。 使用DISTINCT關(guān)鍵字就可以去掉結(jié)果集中的重復(fù)行。去掉結(jié)果集中的重復(fù)行 SELECT DISTINCT sno FROM SC6、查詢計(jì)算機(jī)系全體學(xué)生的姓名 SELECT sname FROM Student WHEER sdept=計(jì)算機(jī)系 7、查詢所有年齡在20歲以下的學(xué)生的姓名及年齡 SELECT sname, sage FROM Student WHEER sage208、查詢考試成績不及格的學(xué)生的學(xué)號(hào)l 當(dāng)一個(gè)學(xué)生有多門不極格課程時(shí),只列出一個(gè)學(xué)號(hào)。 SELECT DISTINCT sno FROM SC WHERE grade60 and grade is not null9、查詢年齡在2023歲之間的學(xué)生的姓名、所在系和年齡 SELECT sname, sdept, sage FROM Student WHERE sage BETWEEN 20 AND 2310、查詢年齡不在2023之間的學(xué)生的姓名、所在系和年齡 SELECT sname, sdept, sage FROM Student WHERE sage NOT BETWEEN 20 AND 2311、查詢信息系、數(shù)學(xué)系、和計(jì)算機(jī)系學(xué)生的姓名和性別 SELECT sname, ssex, FROM Student WHERE sdept IN (信息系,數(shù)學(xué)系,計(jì)算機(jī)系)12、查詢既不屬于信息系、數(shù)學(xué)系、也不屬于計(jì)算機(jī)系學(xué)生的姓名和性別 SELECT sname, ssex, FROM Student WHERE sdept NOT IN (信息系,數(shù)學(xué)系,計(jì)算機(jī)系)13、查詢姓“張”的學(xué)生的詳細(xì)信息 SELECT * FROM Student WHERE sname LIKE 張% 14、查詢學(xué)生表中姓“張”、姓“李”、姓“劉”的學(xué)生的情況SELECT * FROM Student WHERE sname LIKE 張% OR sname LIKE 李% OR sname LIKE 劉%15、查詢名字中第2個(gè)字為“小”或“大”字的學(xué)生姓名和學(xué)號(hào) SELECT sname,sno FROM Student WHERE sname LIKE _小% OR sname LIKE _大%16、查詢所有不姓“劉”的學(xué)生 SELECT sname,sno FROM Student WHERE sname NOT LIKE 劉% 17、從學(xué)生表中查詢學(xué)號(hào)的最后一位不是2、3、5的學(xué)生的情況 SELECT * FROM Student WHERE sno NOT LIKE %2 AND NOT LIKE %3 AND NOT LIKE %518、查詢無考試成績的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào) SELECT sno, cno FROM SC WHERE grade IS NULL19、查詢所有有考試成績的學(xué)生的學(xué)號(hào)和課程號(hào) SELECT sno, cno FROM SC WHERE grade IS NOT NULL20、查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生的姓名 SELECT sname FROM Student WHERE sdept =計(jì)算機(jī)系 AND sage 332、查詢選課門數(shù)等于或大于4門的學(xué)生的平均成績和選課門數(shù) SELECT sno, AVG(grade) 平均成績, COUNT(cno) 修課門數(shù) FROM SC GROUP BY sno HAVING COUNT(cno) = 433、查詢每個(gè)學(xué)生的情況及其選課的情況l 當(dāng)不給表指定別名時(shí),需要使用原表名SELECT Student.sno, sname, ssex, sge, sdept, cno, grade FROM Student ,SCWHERE Student.sno=SC.sno34、查詢計(jì)算機(jī)系學(xué)生的選課情況,要求列出學(xué)生的名字、所修課的課程號(hào)和成績。 SELECT sname, cno, grade FROM Student s , SC a WHERE s.sno=a.sno AND s.sdept = 計(jì)算機(jī)系35、查詢信息系選修Java課程的學(xué)生的成績,要求列出學(xué)生姓名、課程名和成績l 此查詢涉及了三張表,每連接一張表,就需要加入一個(gè)連接條件用于去掉產(chǎn)生的笛卡爾積。l 在該查詢中,雖然所要查詢的列和記錄的選擇條件均與SC表無關(guān),但還是用了三張表,原因是Student和Course表沒有可以進(jìn)行連接的列(語義相同的列),因此,這兩張表的連接需要借助于第三張表SC表。 SELECT sname, cname, grade FROM Student s , SC a, Course c WHERE s.sno=a.sno AND o=o AND s.sdept=信息系 AND ame=Java 36、查詢學(xué)生的選課情況,包括選修課程的學(xué)生和沒有選修課程的學(xué)生 l 如果Student表中有沒有選課的學(xué)生時(shí),也同樣輸出Student表中的數(shù)據(jù),但是最后輸出列的cno和grade的值均為NULL,因?yàn)樵赟C表中沒有與之對(duì)應(yīng)的記錄,即對(duì)于不滿足連接條件的結(jié)果在相應(yīng)的列上放置NULL值。 SELECT s.sno, sname, cno, grade FROM Student s, SC a WHERE s.sno = a.sno(+)37、查詢與“劉晨”在同一個(gè)系的學(xué)生l 分析:實(shí)際的查詢過程如下:a. 確定“劉晨”所在的系,即執(zhí)行子查詢: SELECT sdept FROM Student WHERE sname=劉晨 b. 在子查詢的結(jié)果中查找所有在此系學(xué)習(xí)的學(xué)生:SELECT sno, sname, sdept FROM Student WHERE sdept IN (計(jì)算機(jī)系)l 通過結(jié)果可以看到,查詢結(jié)果中也有“劉晨”。如果不希望“劉晨”出現(xiàn)在查詢結(jié)果中,如何實(shí)現(xiàn)? SELECT sno, sname, sdept FROM Student WHERE sdept IN(SELECT sdept FROM Student WHERE sname=劉晨) AND sname !=劉晨注意:這里的外層sname !=劉晨不需要使用表名前綴,因?yàn)閷?duì)于外層查詢來說,其表名沒有二義性。38、查詢成績大于90分的學(xué)生的學(xué)號(hào)和姓名 SELECT sno, sname FROM Student WHERE sno IN (SELECT sno FROM SC WHERE grade 90)n 使用多表連接的方式實(shí)現(xiàn): SELECT sno, sname FROM Student s , SC a WHERE s.sno=a.sno AND a.grade 9039、查詢選修了“數(shù)據(jù)庫基礎(chǔ)”課程的學(xué)生的學(xué)號(hào)和姓名 SELECT sno, sname FROM Student WHERE sno IN ( SELECT sno FROM SC WHERE cno IN (SELECT cno FROM Course WHERE cname=數(shù)據(jù)庫基礎(chǔ))n 使用多表連接方式實(shí)現(xiàn): SELECT s.sno, sname FROM Student s, SC a, Course c WHERE s.sno=a.sno AND o=o AND ame=數(shù)據(jù)庫基礎(chǔ) 40、查詢選修了課程“c02”且成績高于此課程的平均成績的學(xué)生的學(xué)號(hào)和成績 SELECT sno, grade FROM SC WHERE cno=c02 AND grade ( SELECT AVG(grade) FROM SC WHERE cno=c02) 41、查詢選修了課程“c01”的學(xué)生的姓名和所在系SELECT sname, sdept FROM Student WHERE sno IN ( SELECT sno FROM SC WHERE cno=c01)42、查詢數(shù)學(xué)系成績?cè)?0分以上的學(xué)生的學(xué)號(hào)、姓名SELECT sno, sname FROM StudentWHERE sno IN (SEL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理信息管理
- 房地產(chǎn)項(xiàng)目管理軟件工具介紹
- 彩妝深情小招數(shù) 愛的傳遞與綻放
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式下的臨床試驗(yàn)數(shù)據(jù)挖掘與數(shù)據(jù)挖掘工具
- 數(shù)學(xué) 期末綜合復(fù)習(xí)選擇壓軸題專題提升訓(xùn)練+2024-2025學(xué)年人教版七年級(jí)數(shù)學(xué)下冊(cè)
- PEP人教版小學(xué)英語三年級(jí)下冊(cè)期末檢測(cè)卷及答案共4套
- 環(huán)境經(jīng)濟(jì)項(xiàng)目合同管理創(chuàng)新重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 現(xiàn)代建筑技術(shù)對(duì)項(xiàng)目管理的影響
- 時(shí)尚妝容技巧分享
- 設(shè)計(jì)變更對(duì)項(xiàng)目管理的影響
- 口才與演講實(shí)訓(xùn)教程智慧樹知到答案章節(jié)測(cè)試2023年湖南師范大學(xué)
- 小學(xué)英語人教版五年級(jí)下冊(cè)第六單元《Unit 6 Work quietly》詞匯詳解復(fù)習(xí)公開課課件
- GB 1886.358-2022食品安全國家標(biāo)準(zhǔn)食品添加劑磷脂
- GB/T 6176-20162型六角螺母細(xì)牙
- GB/T 3125-1994白銅線
- GA/T 1788.3-2021公安視頻圖像信息系統(tǒng)安全技術(shù)要求第3部分:安全交互
- 華為S交換機(jī)產(chǎn)品售后技術(shù)培訓(xùn)
- 小學(xué)六年級(jí)信息技術(shù)復(fù)習(xí)題
- 培養(yǎng)學(xué)生核心素養(yǎng)導(dǎo)向下的課堂教學(xué)課件
- 建筑法精課件
- 公務(wù)員心理健康與自我調(diào)適
評(píng)論
0/150
提交評(píng)論