數(shù)據(jù)庫查詢 實驗報告_第1頁
數(shù)據(jù)庫查詢 實驗報告_第2頁
數(shù)據(jù)庫查詢 實驗報告_第3頁
數(shù)據(jù)庫查詢 實驗報告_第4頁
數(shù)據(jù)庫查詢 實驗報告_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實 驗 報 告課程名稱: 數(shù)據(jù)庫系統(tǒng)概論 學 院: 工程學院 專 業(yè): 年 級: 班 級: 姓 名: 學 號: 指導教師: 2015 年 12 月 10 日教務處 制實驗名稱: 數(shù)據(jù)庫查詢實驗二時間:2015-12-10地點:三教205機房班組: 教 師 評 語成績教師簽名實驗報告1  實驗目的    1  熟悉數(shù)據(jù)庫的交互式SQL工具;    2  熟悉通過SQL對數(shù)據(jù)庫視圖進行操作;    3  掌握通過SQL插入、更新、刪除數(shù)據(jù)等操作。2  實驗工具

2、KingbaseES    利用KingbaseES及其交互式查詢工具ISQLW來熟悉SQL。3  實驗內容和要求1.    在建立3.2節(jié)學生-課程數(shù)據(jù)庫的基礎上,完成課本例3.69-97的各例題;2.  根據(jù)以下要求認真填寫實驗報告,記錄所有的實驗用例。4 實驗方法及步驟例3.69將一個新學生元組(學號:201215128,姓名:陳東,性別:男,年齡:18,所在系:IS)插入到student表中。INSERT INTO "S-C"."STUDENT" (&quo

3、t;SNO","SNAME","SSEX","SDEPT","SAGE" ) VALUES ('201215128','陳冬','男','IS',18 );select* from "S-C"."STUDENT"注意:在INTO子句中指出了表名student,并指出了新增加的元組在哪些屬性上要賦值,屬性的順序可以與CREATE TABLE中的順序不一樣。例3.70將學生張成民的信息插入到student表

4、中。INSERT INTO "S-C"."STUDENT" VALUES ('201215126','張成民','男','18','CS' );select* from "S-C"."STUDENT"注意:值與屬性要一一對應。例3.71插入一條選課記錄('201215128','1')INSERT INTO "S-C".sc(sno,cno) VALUES ('20121512

5、8','1');SELECT*from "S-C".sc;注意:在新插入的記錄中GRADE列自動地賦空值。或者:INSERT INTO "S-C".sc VALUES ('201215128','1',null);SELECT*from "S-C".sc;注意:若直接在SC中直接插入選課記錄,由于沒有指出SC的屬性名,在GRADE列上要明確給出空值NULL。例3.72對每一個系,求學生的平均年齡,并把結果存入數(shù)據(jù)庫中。創(chuàng)建新表CREATE TABLE dept_age( sdep

6、t CHAR (15), avg_age smallint);把系名和平均年齡存入新表insertinto dept_age(Sdept,avg_age)select sdept,avg(sage)from "S-C".studentgroup by sdept;例3.73將學生200215121的年齡改為22歲。UPDATE "S-C"."STUDENT"SET Sage=22WHERE sno=200215121;select*from "S-C".student;例3.74將所有學生的年齡增加1歲。UPDAT

7、E "S-C"."STUDENT"SET Sage=sage+1;select*from "S-C".student;例3.75將計算機科學系全體學生的成績置零。UPDATE "S-C"."SC"SET Grade=0where sno in(select snofrom "S-C".studentwhere sdept='cs');SELECT* FROM "S-C".SC;例3.76刪除學號為201215128的學生記錄。DELETE

8、from "S-C".studentWHERE sno='201215128'select*from "S-C".student;例3.77刪除所有學生選課記錄DELETE FROM "S-C".SC;SELECT* FROM "S-C".SC;注意:這條DELETE語句將使SC成為空表,它刪除了SC的所有元組。例3.78刪除計算機科學系所有學生的選課記錄SELECT* FROM "S-C".SC;DELETE from "S-C".scWHERE sno i

9、n(select sno from "S-C".studentwhere sdept='cs');注意:由于SC表全是CS系的,故結果為空表。例3.79 向SC表中插入一個元組INSERT INTO "S-C".SC(SNO,CNO,GRADE)VALUES('201215128','1',NULL); /*在插入該學生還沒有考試成績,取空值*/或者:INSERT INTO "S-C".SC(SNO,CNO)VALUES('201215126','1');

10、 /*在插入語句中沒有賦值的屬性,其值為空值*/SELECT* FROM "S-C"."SC"例3.80 將student表中學生號201215123的學生所屬的系改為空值UPDATE "S-C".STUDENTSET SDEPT=NULLWHERE SNO='201215123'SELECT* FROM "S-C"."STUDENT"注意:另外,外連接也會產(chǎn)生空值,空值的關系運算也會產(chǎn)生空值。例3.81 從student表中查找出漏填了數(shù)據(jù)的學生信息SELECT*FROM &q

11、uot;S-C".STUDENTWHERE SNAME IS NULL OR SSEX IS NULL OR SDEPT IS NULL;SELECT* FROM "S-C"."STUDENT"例3.82 找出選修1號課程的不及格的學生SELECT SNOFROM "S-C".SCWHERE GRADE<60 AND CNO='1'注意:選出的學生是那些參加了考試而不及格的學生,不包括缺考的學生。例3.83 找出選修1號課程的不及格的學生以及缺考的學生SELECT SNO FROM "S-C&

12、quot;.SCWHERE GRADE<60 AND CNO='1'UNIONSELECT SNO FROM "S-C".SCWHERE GRADE IS NULL AND CNO='1'SELECT* FROM "S-C"."STUDENT"例3.84 建立信息系學生的視圖CREATE VIEW IS_STUDENTASSELECT SNO,SNAME,SAGEFROM "S-C".STUDENTWHERE SDEPT='IS'SELECT"SNO&

13、quot;,"SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.85 建立信息系選修了1號課程的學生視圖,并要求進行修改和插入操作時仍保證該視圖只有信息系的學生。CREATE VIEW IS_STUDENTASSELECT SNO,SNAME,SAGEFROM "S-C".STUDENTWHERE SDEPT='IS' WITH CHECK OPTION; /*如果不加這個語句,可以把IS修改成其他的系,比如CS,加上這個語句之后會發(fā)現(xiàn)改不了,只能是

14、IS*/SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.86 建立信息系選修了1號課程的學生視圖(包括學號、姓名、成績)CREATE VIEW IS_S1(SNO,SNAME,GRADE)ASSELECT STUDENT.SNO,SNAME,GRADEFROM "S-C".STUDENT,"S-C".SCWHERE SDEPT='IS' ANDSTUDENT.SNO=SC.SNO

15、AND SC.CNO='1'SELECT "SNO","SNAME","GRADE" FROM "S-C"."IS_S1"例3.87 建立信息系選修了1號課程且成績在90分以上的學生視圖CREATE VIEW IS_S2ASSELECT SNO,SNAME,GRADEFROM "S-C".IS_S1WHERE GRADE>=90;SELECT "SNO","SNAME","SAGE" FROM

16、"S-C"."IS_STUDENT"注意:這里的視圖IS_S2就是建立在IS_S1之上的。例3.88 定義一個反應學生出生年份的視圖CREATE VIEW BT_S(SNO,SNAME,SBIRTH)ASSELECT SNO,SNAME,2014-SAGEFROM "S-C".STUDENT;SELECT "SNO","SNAME","SBIRTH" FROM "S-C"."BT_S"注意:這里的視圖BT_S是一個帶表達式的視圖。視圖中

17、的出生年份值是通過計算得到的。還可以用帶有聚集函數(shù)和GROUP BY子句的查詢來定義視圖,這種視圖稱為分組視圖。例3.89 將學生的學號及平均成績定義為一個視圖CREATE VIEW S_G(SNO,GAVG)ASSELECT SNO,AVG(GRADE)FROM "S-C".SCGROUP BY SNO;SELECT "SNO","GAVG" FROM "S-C"."S_G"注意:由于AS子句中的SELECT語句的目標列平均成績是通過作用聚集函數(shù)得到的,所以CREATE VIEW中必須明確定義

18、組成S_G視圖的各個屬性列名。S_G是一個分組視圖。例3.90 將student表中所有女生記錄定義為一個視圖CREATE VIEW F_STUDENT(F_SNO,NAME,SEX,AGE,DEPT)ASSELECT* FROM "S-C".STUDENTWHERE SSEX='女'SELECT "F_SNO","NAME","SEX","AGE","DEPT" FROM "S-C"."F_STUDENT"注意:這里視

19、圖F_STUDENT是由子查詢“SELECT*”建立的。F_STUDENT視圖的屬性列要與STUDENT表的屬性一一對應。否則會出錯。例3.91 刪除視圖BT_S和視圖IS_S1DROP VIEW BT_S; /*成功執(zhí)行*/DROP VIEW IS_S1; /*拒絕執(zhí)行*/執(zhí)行此語句時由于IS_S1視圖上還導出了IS_S2視圖,所以該語句被拒絕執(zhí)行。如果確定要刪除,則使用級聯(lián)刪除語句。DROP VIEW IS_S1 CASCADE; /*刪除了視圖IS_S1和由它導出的所有視圖*/例3.92 在信息系學生視圖中找出年齡小于20歲的學生SELECT SNO,SAGE FROM "S-

20、C".IS_STUDENTWHERE SAGE<20;注意:視圖定義后,用戶可以像對基本表一樣對視圖進行查詢了。例3.93 查詢選修了1號課程的信息系學生SELECT IS_STUDENT.SNO,SNAMEFROM "S-C".IS_STUDENT,"S-C".SCWHERE IS_STUDENT.SNO=SC.SNO AND SC.CNO='1'例3.94 在S_G視圖中查詢平均成績在90分以上的學生的學號和平均成績SELECT SNO,AVG(GRADE)FROM "S-C".SCGROUP BY

21、 SNOHAVING AVG(GRADE)>=90;或者:SELECT*FROM(SELECT SNO,AVG(GRADE) /*子查詢生成一個派生表S_G*/FROM"S-C".SCGROUP BY SNO) AS S_G(SNO,GAVG)HAVING GRADE>=90;注意:WHERE子句中不能用聚集函數(shù)作為條件表達式。視圖一旦定義,其定義將永久保存在數(shù)據(jù)字典中,之后的所有查詢都可以直接引用該視圖。而派生表株數(shù)在語句執(zhí)行時臨時定義,語句執(zhí)行后該定義將被刪除。例3.95 將信息系學生視圖IS_STUDENT中學號為“200215125”的學生姓名改為“劉辰

22、”UPDATE IS_STUDENTSET SNAME='劉辰'WHERE SNO='200215125'SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.96 將信息系學生視圖IS_STUDENT中插入一個新的學生記錄,其中學號為“201215129”,姓名為 “趙新”,年齡為20歲INSERTINTO "S-C".STUDENT(SNO,SNAME,SAGE,SDEPT)VALUES

23、('201215129','趙新',20,'IS');SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.97 刪除信息系學生視圖IS_STUDENT中學號為“201215129”的記錄。 DELETEFROM "S-C".STUDENTWHERE SNO='201215129'AND SDEPT='IS'SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STU

溫馨提示

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

評論

0/150

提交評論