版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文檔可能無(wú)法思考全面,請(qǐng)瀏覽后下載! 華南理工大學(xué)數(shù)據(jù)庫(kù)課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目: 實(shí)驗(yàn)一:SQL的使用 姓名: 學(xué)號(hào): 班級(jí): 計(jì)科一班 組別: 無(wú) 合作者: 無(wú) 指導(dǎo)教師: 董守玲 實(shí)驗(yàn)概述【實(shí)驗(yàn)?zāi)康募耙蟆繉?shí)驗(yàn)?zāi)康模?通過(guò)交互式SQL的使用, 掌握數(shù)據(jù)庫(kù)的創(chuàng)建、插入、更新、查詢等基本操作實(shí)驗(yàn)要求:1 創(chuàng)建Student數(shù)據(jù)庫(kù)(oracle可以不創(chuàng)建新的數(shù)據(jù)庫(kù),直接創(chuàng)建下列表就可以了)包括Students,Courses,SC表,表結(jié)構(gòu)如下:Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT)Courses(CNO,CNAME,LHOUR,CREDIT
2、,SEMESTER)SC(SNO,CNO,GRADE)(注:下劃線表示主鍵,斜體表示外鍵),并插入一定數(shù)據(jù)。24 / 242 完成如下的查詢要求及更新的要求。(1)查詢身高大于1.80m的男生的學(xué)號(hào)和姓名;(2)查詢計(jì)算機(jī)系秋季所開課程的課程號(hào)和學(xué)分?jǐn)?shù);(3)查詢選修計(jì)算機(jī)系秋季所開課程的男生的姓名、課程號(hào)、學(xué)分?jǐn)?shù)、成績(jī);(4)查詢至少選修一門電機(jī)系課程的女生的姓名(假設(shè)電機(jī)系課程的課程號(hào)以EE開頭);(5)查詢每位學(xué)生已選修課程的門數(shù)和總平均成績(jī);(6)查詢每門課程選課的學(xué)生人數(shù),最高成績(jī),最低成績(jī)和平均成績(jī);(7)查詢所有課程的成績(jī)都在80分以上的學(xué)生的姓名、學(xué)號(hào)、且按學(xué)號(hào)升序排列;(8)
3、查詢?nèi)背煽?jī)的學(xué)生的姓名,缺成績(jī)的課程號(hào)及其學(xué)分?jǐn)?shù);(9)查詢有一門以上(含一門)三個(gè)學(xué)分以上課程的成績(jī)低于70分的學(xué)生的姓名;(10)查詢1984年1986年出生的學(xué)生的姓名,總平均成績(jī)及已修學(xué)分?jǐn)?shù)。(11) 在STUDENT和SC關(guān)系中,刪去SNO以01開關(guān)的所有記錄。(12)在關(guān)系中增加以下記錄: <0409101 何平女1987-03-021.62> <0408130 向陽(yáng)男1986-12-111.75>(13)將課程CS-2
4、21的學(xué)分?jǐn)?shù)增為,講課時(shí)數(shù)增為3補(bǔ)充題:(1) 統(tǒng)計(jì)各系的男生和女生的人數(shù)。(2) 列出學(xué)習(xí)過(guò)編譯原理,數(shù)據(jù)庫(kù)或體系結(jié)構(gòu)課程,且這些課程的成績(jī)之一在90分以上的學(xué)生的名字。(3) 列出未修選電子技術(shù)課程,但選修了數(shù)字電路或數(shù)字邏輯課程的學(xué)生數(shù)。(4) 按課程排序列出所有學(xué)生的成績(jī),尚無(wú)學(xué)生選修的課程,也需要列出,相關(guān)的學(xué)生成績(jī)用NULL表示。(5) 列出平均成績(jī)最高的學(xué)生名字和成績(jī)。(SELECT句中不得使用TOP n子句)4選做題:對(duì)每門課增加“先修課程”的屬性,用來(lái)表示某一門課程的先修課程,每門課程應(yīng)可記錄多于一門的先修課程。要求:1) 修改表結(jié)構(gòu)的定義,應(yīng)盡量避免數(shù)據(jù)冗余,建立必要的主鍵
5、,外鍵。2) 設(shè)計(jì)并插入必要的測(cè)試數(shù)據(jù),完成以下查詢:列出有資格選修數(shù)據(jù)庫(kù)課程的所有學(xué)生。(該學(xué)生已經(jīng)選修過(guò)數(shù)據(jù)庫(kù)課程的所有先修課,并達(dá)到合格成績(jī)。)注意:須設(shè)計(jì)每個(gè)查詢的測(cè)試數(shù)據(jù),并在查詢之前用INSERT語(yǔ)句插入表中?!緦?shí)驗(yàn)環(huán)境】PC機(jī),WINDOWS操作系統(tǒng),Oracle 或Microsoft SQL Server 數(shù)據(jù)庫(kù)實(shí)驗(yàn)內(nèi)容【實(shí)驗(yàn)過(guò)程】一、實(shí)驗(yàn)步驟:.連接數(shù)據(jù)庫(kù).準(zhǔn)備數(shù)據(jù).建立模式(數(shù)據(jù)庫(kù)).建立表.插入數(shù)據(jù).開始查詢二、實(shí)驗(yàn)數(shù)據(jù):(如給定文件)三、實(shí)驗(yàn)主要過(guò)程:1 創(chuàng)建Student數(shù)據(jù)庫(kù)(oracle可以不創(chuàng)建新的數(shù)據(jù)庫(kù),直接創(chuàng)建下列表就可以了)包括Students
6、,Courses,SC表,表結(jié)構(gòu)如下:Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT)Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER)SC(SNO,CNO,GRADE) (注:下劃線表示主鍵,斜體表示外鍵),并插入一定數(shù)據(jù)。CREATE TABLE Students(SNO VARCHAR(15) PRIMARY KEY,SNAME VARCHAR(5),SEX VARCHAR(3),BDATE VARCHAR(20),HEIGHT NUMERIC(3,2),DEPARTMENT VARCHAR(10);CREATE
7、 TABLE Courses(CNO VARCHAR(10) PRIMARY KEY,CNAME VARCHAR(10),LHOUR VARCHAR(3),CREDIT NUMERIC(2,1),SEMESTER VARCHAR(2);CREATE TABLE SC(SNO VARCHAR(15),CNO VARCHAR(10),GRADE SMALLINT,FOREIGN KEY (SNO) REFERENCES Students(SNO),FOREIGN KEY (CNO) REFERENCES Courses(CNO);2 完成如下的查詢要求及更新的要求。(1)查詢身高大于1.80m的男
8、生的學(xué)號(hào)和姓名;SELECT SNO,SNAMEFROM StudentsWHERE HEIGHT>1.80 AND SEX LIKE '男'(2)查詢計(jì)算機(jī)系秋季所開課程的課程號(hào)和學(xué)分?jǐn)?shù);SELECT CNO,CREDITFROM CoursesWHERE CNO LIKE'CS%' AND SEMESTER LIKE'秋'(3)查詢選修計(jì)算機(jī)系秋季所開課程的男生的姓名、課程號(hào)、學(xué)分?jǐn)?shù)、成績(jī);SELECT SNAME,SC.CNO,CREDIT,GRADEFROM Students,Courses,SCWHERE Students.SNO
9、=SC.SNO AND Courses.CNO=SC.CNO AND SC.CNO LIKE'CS%' AND SEMESTER LIKE'秋'(4)查詢至少選修一門電機(jī)系課程的女生的姓名(假設(shè)電機(jī)系課程的課程號(hào)以EE開頭);SELECT DISTINCT SNAMEFROM Students,SCWHERE Students.SNO=SC.SNO AND CNO LIKE'EE%' AND SEX LIKE'女'(5)查詢每位學(xué)生已選修課程的門數(shù)和總平均成績(jī);SELECT SNO,COUNT(*),AVG(GRADE)FROM
10、SCGROUP BY SNO;(6)查詢每門課程選課的學(xué)生人數(shù),最高成績(jī),最低成績(jī)和平均成績(jī);SELECT CNO,COUNT(*),MAX(GRADE),MIN(GRADE),AVG(GRADE)FROM SCGROUP BY CNO;(7)查詢所有課程的成績(jī)都在80分以上的學(xué)生的姓名、學(xué)號(hào)、且按學(xué)號(hào)升序排列;SELECT DISTINCT SNAME,SC.SNOFROM Students,SCWHERE Students.SNO=SC.SNO AND GRADE>80ORDER BY SC.SNO ASC;(8)查詢?nèi)背煽?jī)的學(xué)生的姓名,缺成績(jī)的課程號(hào)及其學(xué)分?jǐn)?shù);SELECT SNA
11、ME,SC.CNO,CREDITFROM SC LEFT OUTER JOIN Students ON SC.SNO=Students.SNO LEFT OUTER JOIN Courses ON SC.CNO=Courses.CNOWHERE GRADE IS NULL;(9)查詢有一門以上(含一門)三個(gè)學(xué)分以上課程的成績(jī)低于70分的學(xué)生的姓名;SELECT DISTINCT SNAMEFROM Students,Courses,SCWHERE Students.SNO=SC.SNO AND Courses.CNO=SC.CNO AND CREDIT>3 AND GRADE<70
12、;(10)查詢1984年1986年出生的學(xué)生的姓名,總平均成績(jī)及已修學(xué)分?jǐn)?shù)SELECT SNAME,AVG(GRADE),SUM(CREDIT)FROM Students,Courses,SCWHERE Students.SNO=SC.SNO AND Courses.CNO=SC.CNO AND (BDATE BETWEEN 1984 AND 1986 ) GROUP BY SNAME;(11) 在STUDENT和SC關(guān)系中,刪去SNO以01開關(guān)的所有記錄。DELETE FROM StudentsWHERE SNO LIKE'01%'DELETE FROM SCWHERE SN
13、O LIKE'01%'(12)在關(guān)系中增加以下記錄: <0409101 何平女1987-03-021.62> <0408130 向陽(yáng)男1986-12-111.75>INSERTINTO Students(SNO,SNAME,SEX,BDATE,HEIGHT)VALUES(0409101,'何平','女',1987-03-02,1.62);INSERTINTO Students(SNO,SNAME,SEX,BDATE,HEIGHT)VALUES(0408130,'向陽(yáng)','男',1986-12
14、-11,1.75);(13)將課程CS-221的學(xué)分?jǐn)?shù)增為,講課時(shí)數(shù)增為UPDATE CoursesSET CREDIT=3WHERE CNO LIKE'CS-221'UPDATE CoursesSET LHOUR ='60'WHERE CNO LIKE'CS-221'3補(bǔ)充題:(1) 統(tǒng)計(jì)各系的男生和女生的人數(shù)。SELECT DEPARTMENT, SUM(CASE WHEN SEX='男' THEN 1 ELSE 0 END)男生人數(shù), SUM(CASE WHEN SEX='女' THEN 1 ELSE 0 E
15、ND)女生人數(shù)FROM StudentsGROUP BY DEPARTMENT;(2) 列出學(xué)習(xí)過(guò)編譯原理,數(shù)據(jù)庫(kù)或體系結(jié)構(gòu)課程,且這些課程的成績(jī)之一在90分以上的學(xué)生的名字。SELECT DISTINCT SNAMEFROM Students,SC,CoursesWHERE Students.SNO=SC.SNO AND Courses.CNO=SC.CNO AND GRADE>90 AND (CNAME LIKE'編譯原理' OR CNAME LIKE'數(shù)據(jù)庫(kù)' OR CNAME LIKE'體系結(jié)構(gòu)');(3) 列出未修選電子技術(shù)課程,
16、但選修了數(shù)字電路或數(shù)字邏輯課程的學(xué)生數(shù)。SELECT COUNT(*)FROM CoursesWHERE (CNAME LIKE'數(shù)字電路'OR CNAME LIKE'數(shù)字邏輯')AND NOT EXISTS (SELECT* FROM SC WHERE SC.CNO=Courses.CNO AND CNAME LIKE'電子技術(shù)');(4) 按課程排序列出所有學(xué)生的成績(jī),尚無(wú)學(xué)生選修的課程,也需要列出,相關(guān)的學(xué)生成績(jī)用NULL表示。SELECT DISTINCT SC.CNO,CNAME,SNO,GRADEFROM Courses LEFT O
17、UTER JOIN SC ON Courses.CNO=SC.CNOGROUP BY SC.CNO,CNAME,SNO,GRADEORDER BY SC.CNO,CNAME,SNO,GRADE;(5) 列出平均成績(jī)最高的學(xué)生名字和成績(jī)。(SELECT句中不得使用TOP n子句)SELECT SNAME,AVG_GRADEFROM Students,(SELECT SNO,AVG(GRADE)AVG_GRADE FROM SC GROUP BY SNO)AS AVG_SCWHERE Students.SNO=AVG_SC.SNO AND AVG_GRADE=(SELECT MAX(AVG_GRA
18、DE2) FROM (SELECT SNO,AVG(GRADE)AVG_GRADE2 FROM SC GROUP BY SNO)AS AVG_SC2);4選做題:對(duì)每門課增加“先修課程”的屬性,用來(lái)表示某一門課程的先修課程,每門課程應(yīng)可記錄多于一門的先修課程。要求:ALTER TABLE CoursesADD PRE1 VARCHAR(10),ADD PRE2 VARCHAR(10);1) 修改表結(jié)構(gòu)的定義,應(yīng)盡量避免數(shù)據(jù)冗余,建立必要的主鍵,外鍵。ALTER TABLE CoursesADD CONSTRAINT THE_KEYFOREIGN KEY(PRE1)REFERENCES Cour
19、ses(CNO);UPDATE CoursesSET PRE1='C1'WHERE CNAME='數(shù)據(jù)庫(kù)'2) 設(shè)計(jì)并插入必要的測(cè)試數(shù)據(jù),完成以下查詢:列出有資格選修數(shù)據(jù)庫(kù)課程的所有學(xué)生。(該學(xué)生已經(jīng)選修過(guò)數(shù)據(jù)庫(kù)課程的所有先修課,并達(dá)到合格成績(jī)。)首先,設(shè)置數(shù)據(jù)庫(kù)課程的先修課。UPDATE CoursesSET PRE1='C1'WHERE CNAME='數(shù)據(jù)庫(kù)'結(jié)果:SELECT SNOFROM SC,CoursesWHERE SC.CNO=Courses.CNO AND SC.CNO=(SELECT PRE1 FROM Cou
20、rses WHERE CNO='C2');小結(jié)通過(guò)這次實(shí)驗(yàn),我收獲了很多。首先,是課本的理論知識(shí)通過(guò)實(shí)驗(yàn)得到了驗(yàn)證,加深了我對(duì)它們的理解。其次,對(duì)于數(shù)據(jù)庫(kù)實(shí)踐的操作,通過(guò)各個(gè)習(xí)題的練習(xí),我較為熟練地掌握了它們的用法。因此,對(duì)日后使用數(shù)據(jù)庫(kù)進(jìn)行操作也增加了信心。最后,對(duì)于具體的題目,通過(guò)實(shí)際編程這種更為嚴(yán)謹(jǐn)?shù)倪^(guò)程。我也總結(jié)了不少的技巧和方法。較為系統(tǒng)的知識(shí)在課程學(xué)習(xí)過(guò)程中大致已經(jīng)掌握,現(xiàn)將實(shí)踐中一些小的知識(shí)點(diǎn)歸納如下:1.sql啟動(dòng)的時(shí)候要用:mysql -uroot -p,不需要密碼。2.在使用之前要先選擇數(shù)據(jù)庫(kù)3.創(chuàng)建模式是authorization而不是authorize,
21、而且后面直接跟用戶名,沒(méi)有on什么的。4.不是每一個(gè)表都要主鍵5.foreign key 在列級(jí)和在表級(jí)的不同表達(dá),在列級(jí)只需要references 表名(列),在表級(jí)需要在前面加上一個(gè)6.foreign key(列名)。!注意啊,這里的列名都要加括號(hào)。而且要定義多個(gè)外碼的時(shí)候在表級(jí)要分開語(yǔ)句,不能用逗號(hào)分開(主碼是沒(méi)有表的參照的,所以是可以的)。7.不在表定義的時(shí)候給表添加外鍵: alter table A add constraint foreign_key &
22、#160; foreign key(the_key) references B(.)8.一定要注意reference 的s!9.對(duì)于主碼和外鍵,數(shù)據(jù)類型必須是相同的,即便是字符串類型的位數(shù)也必須是一樣的。10.sql語(yǔ)句的注釋:?jiǎn)涡?多行*/11.“至少一個(gè),一個(gè)以上”是比較能迷惑人的表達(dá)事實(shí)上有就可以了。12.如果是問(wèn)空值的話,如果一旦判度有多個(gè)表的時(shí)候就要想外連接的問(wèn)題。13.外鏈接是在from語(yǔ)句的時(shí)候就:表連接類型表on鏈接條件(就像where的一樣)。14.如果是多個(gè)表的外連接怎么辦? 思想就是把前一個(gè)表當(dāng)作整體。15.思考方式是先看需要什么表,然后是需要什么列,看列要判斷是否要去除重復(fù)。16.插入數(shù)據(jù)是數(shù)據(jù)更新的一部分,想要定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年小學(xué)班級(jí)管理規(guī)章制度(二篇)
- 2024年半年個(gè)人工作總結(jié)常用版(二篇)
- 2024年寒假社會(huì)實(shí)踐活動(dòng)計(jì)劃范文(二篇)
- 2024年小學(xué)安全教育計(jì)劃(二篇)
- 2024年安全生產(chǎn)責(zé)任制與安全生產(chǎn)制度范例(三篇)
- 2024年圖書館藏書管理與保護(hù)制度范本(三篇)
- 2024年小學(xué)五年級(jí)班主任工作總結(jié)例文(二篇)
- 2024年大學(xué)班級(jí)學(xué)期工作計(jì)劃模版(二篇)
- 【《法律職業(yè)倫理培育問(wèn)題及優(yōu)化策略(論文)》9800字】
- 2024年工地各崗位安全生產(chǎn)責(zé)任制(六篇)
- CAD公開課教案
- 初一上冊(cè)整式化簡(jiǎn)求值60題(含答案)
- 資產(chǎn)負(fù)債表和利潤(rùn)表表格
- 旅客地道施組
- 電梯基坑土石方開挖施工方案
- 二年級(jí)體育教案-爬越80-100厘米高的橫向跳箱全國(guó)通用
- 高壓電纜敷設(shè)施工方案(共8頁(yè))
- 橋梁施工加固技術(shù)規(guī)范
- 《會(huì)議攝影怎樣拍出彩?》PPT課件
- CK6140數(shù)控車床主傳動(dòng)系統(tǒng)及進(jìn)給伺服系統(tǒng)設(shè)計(jì)
- 不進(jìn)位筆算乘法說(shuō)課稿
評(píng)論
0/150
提交評(píng)論