2012210153 廖小均參考模板_第1頁
2012210153 廖小均參考模板_第2頁
2012210153 廖小均參考模板_第3頁
2012210153 廖小均參考模板_第4頁
2012210153 廖小均參考模板_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)庫實驗報告姓名:廖小均班級:0141202學(xué)號:2012210153學(xué)院:通信與信息工程學(xué)院1 / 30實驗四SQL數(shù)據(jù)查詢語言DQL一實驗?zāi)康模?數(shù)據(jù)查詢語言指對數(shù)據(jù)庫中的數(shù)據(jù)查詢、統(tǒng)計、分組、排序等操作。查詢語句可以分為簡單查詢、連接查詢、嵌套查詢和組合查詢等。本次實驗了解SQL語言的SELECT語句對數(shù)據(jù)的查詢,學(xué)會在Navicat for MySQL中用SELECT語句對表中的數(shù)據(jù)進行簡單查詢、連接查詢、嵌套查詢和組合查詢。二儀器設(shè)備及用具:硬件:投影儀、每位同學(xué)分配已連接校園網(wǎng)PC機一臺。軟件:本機已安裝MySQL 5.5三實驗步驟及代碼:1.啟動Navicat for MySQ

2、L,在MySQL 新建連接中完成連接參數(shù)配置。2.登錄到本地數(shù)據(jù)庫服務(wù)器后,連接到test數(shù)據(jù)庫上。3.用Create Table建立Student表create table student( SNO varchar(20), Name varchar (10), Age integer,College varchar(30)4.用Create Table建立Course表create table Course(CourseID VARCHAR(15), CourseName varchar(30), CourseBeforeID VARCHAR(15)5.用Create Table建立Cho

3、ose表CREATE TABLE Choose(SNO VARCHAR(20), CourseID varchar(30), Score DECIMAL (5,2)6.用INSERT語句向Student表中插入3個元組:注意:每條元組一個完整的INSERT語句,3個元組需要寫3個INSERT語句insert into student(SNO,Name,Age,College)values ('S00001','張三',20,'計算機學(xué)院');insert into student(SNO,Name,Age,College)values ('

4、;S00002','李四',19,'通信學(xué)院');insert into student(SNO,Name,Age,College)values ('S00003','王五',21,'計算機學(xué)院');7.用INSERT語句向Course表中插入3個元組:注意:每條元組一個完整的INSERT語句,3個元組需要寫3個INSERT語句。insert into Course(CourseID,CourseName,CourseBeforeID)VALUES('c1','計算機導(dǎo)論 '

5、,'NULL');insert into Course(CourseID,CourseName,CourseBeforeID)VALUES('c2','c語言','c1');insert into Course(CourseID,CourseName,CourseBeforeID)VALUES('c3','數(shù)據(jù)結(jié)構(gòu)','c2');8.用INSERT語句向Choose表中插入7個元組:注意:每條元組一個完整的INSERT語句,7個元組需要寫7個INSERT語句。insert into

6、Choose(SNO,CourseID,Score) values ('S00001','c1',95);insert into Choose(SNO,CourseID,Score) values ('S00001','c2',80);insert into Choose(SNO,CourseID,Score) values ('S00001','c3',84);insert into Choose(SNO,CourseID,Score) values ('S00002','

7、c1',80);insert into Choose(SNO,CourseID,Score) values ('S00002','c2',85);insert into Choose(SNO,CourseID,Score) values ('S00003','c1',78);insert into Choose(SNO,CourseID,Score) values ('S00003','c3',70);9.用SELECT語句,查詢計算機學(xué)院學(xué)生的學(xué)號和姓名。select SNO,Name f

8、rom student where College='計算機學(xué)院'10.用SELECT語句的betweenand表示查詢條件,查詢年齡在2023歲的學(xué)生信息。select*from student where Age between 20 and 23;11.用SELECT語句的COUNT()聚集函數(shù),統(tǒng)計Student表中學(xué)生總?cè)藬?shù)。 select count(*) from student;12.分別用SELECT語句的max()、min()、sum()、avg()四個聚集函數(shù),計算Choose表中C1課程的最高分、最低分、總分、平均分。select max(Score)f

9、rom choose where CourseID='C1'select min(Score)from choose where CourseID='C1'select sum(Score)from choose where CourseID='C1'select avg(Score)from choose where CourseID='C1' 13. 用SELECT語句對空值(NULL)的判斷條件,查詢Course表中先修課稱編號為空值的課程編號和課程名稱。select CourseID,CourseName from Cou

10、rse where CourseBeforeID='NULL' 14. 用SELECT語句的連接查詢,查詢學(xué)生的學(xué)號、姓名、選修的課程名及成績。SELECT student.Sno,student.Name,choose.CourseID,choose.Score from student,choose WHERE student.Sno=choose.Sno15. 用SELECT的存在量詞EXISTS,查詢與“張三”在同一個學(xué)院學(xué)習(xí)的學(xué)生信息。select sno,name,college from student AWhere exists(select college f

11、rom student B Where B.name=張三and a.college and !=張三);16. 用SELECT語句的嵌套查詢,查詢選修C1課程的成績低于“張三”的學(xué)生的學(xué)號和成績。代碼:SELECT Sno,Score FROM choose where choose.CourseID='C1' AND choose.Score<(SELECT Score from student,choose WHERE student.Sno=choose.Sno and student.Name='張三' and choose.Cour

12、seID='C1')結(jié) 果:17.用SELECT語句的組合查詢(UNION),查詢選修了C1課程或者選修了C3課程的學(xué)生學(xué)號。代碼:SELECT Sno,CourseID FROM choose WHERE CourseID='C1' UNION SELECT Sno,CourseID from choose where CourseID='C3'結(jié)果:18.用SELECT語句的組合查詢(UNION)與DISTINCT短語,查詢選修了C1課程或者選修了C3課程的學(xué)生學(xué)號,并取消重復(fù)數(shù)據(jù)。代碼:SELECT DISTINCT Sno FROM ch

13、oose WHERE CourseID='C1' UNION SELECT DISTINCT Sno from choose where CourseID='C3'結(jié)果:四實驗總結(jié):1、 Where與Having語句有何差別?答:區(qū)別在于作用對象不同。Where子句基本表或者視圖,從中選擇滿足條件的元組。Having短語作用于組,從中選擇滿足條件的組。2、 Count(*)與Count(字段名)有何差別?答:Count(*)統(tǒng)計元組個數(shù),Count(字段名)統(tǒng)計一列中的數(shù)值3、 LIKE sys%與NOT LIKE sys%有無區(qū)別?請加以驗證?答:有區(qū)別4、

14、全連接、左連接、右連接有什么不同?答:若全連接則左右表中的所有記錄都會被選出來若左連接則選出左邊表的所有記錄和右邊表中沒有和它匹配的紀(jì)錄若右連接則選出右邊表的所有記錄和左邊表中沒有和他匹配的值5、 IN與Exists語句有何區(qū)別?答:6、 不相關(guān)子查詢、相關(guān)子查詢有何區(qū)別?答:不相關(guān)子查詢的條件不依賴與父查尋而相關(guān)子查詢的條件依賴于父查尋。 求解相關(guān)子查詢不像求解不相關(guān)子查詢那樣,一次將子查詢求解出來,然后去求解父查尋。內(nèi)層查詢與外層查詢有關(guān),因此必須反復(fù)求值7、 UNION與UNION ALL有何差別,誰的性能高?答:UNION和UNION ALL的區(qū)別在于UNION將多個查詢的結(jié)果合并起來

15、時,系統(tǒng)將會自動去掉重復(fù)的元組而union all則保留重復(fù)的元組。UNION ALL的性能更高,因為UNION要刪除重復(fù)的元組。實驗六MySql的存儲過程 一、實驗?zāi)康拇鎯^程是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。存儲過程分為兩類:1.系統(tǒng)提供的存儲過程;2.用戶自定義存儲過程。存儲過程具有的優(yōu)點:1.存儲過程允許標(biāo)準(zhǔn)組件式編程;2.存儲過程能夠?qū)崿F(xiàn)較快的執(zhí)行速度;3.存儲過程能夠減少網(wǎng)絡(luò)流量;4.存儲過程可被作為一種安全機制來充分利用。存儲過程是可復(fù)用的組件!想象一下如果你改變了主機的語言,這對存儲過程不會產(chǎn)生影響,因為它是數(shù)據(jù)庫邏輯而不是應(yīng)用程序。存儲過程是可以移

16、植的! 本次實驗了解MySQL存儲過程的創(chuàng)建、修改和刪除的方法和步驟,掌握在Navicat for MySQL中對存儲過程的進行創(chuàng)建、修改和刪除,掌握在MySQL Command Line Client中調(diào)用帶參數(shù)和不帶參數(shù)的存儲過程。二、實驗要求1、實驗前:預(yù)習(xí)實驗內(nèi)容,學(xué)習(xí)相關(guān)知識。2、實驗中:按照實驗內(nèi)容要求進行實驗,實驗時注意每種SQL語句的基本命令及各個關(guān)鍵字的含義,做好實驗記錄。3、實驗后:分析實驗結(jié)果,總結(jié)實驗知識,得出結(jié)論,按格式寫出實驗報告。4、在整個實驗過程中,要獨立思考、獨立按時完成實驗任務(wù),不懂的要虛心向教師或同學(xué)請教。5、要求按指定格式書寫實驗報告,且報告中應(yīng)反映出對

17、上次試驗報告總結(jié)三實驗步驟1. 啟動Navicatfor MySQL,在MySQL 新建連接中完成連接參數(shù)配置。CREATE DATABASE db5536;USE db5536;2. 登錄到本地數(shù)據(jù)庫服務(wù)器后,連接到db5536數(shù)據(jù)庫上。CREATE TABLE cqupt (s1 INTEGER);INSERT INTO cqupt VALUES (5);3. 執(zhí)行五、教學(xué)過程中(三)實驗內(nèi)容的1部分的(2)、(3)步驟創(chuàng)建及調(diào)用不帶參數(shù)的存儲過程,驗證不帶參數(shù)的存儲過程的創(chuàng)建和調(diào)用方法。CREATE procedure first_p()SELECT'Hello MySQL,Th

18、is is my first procedure'/CREATE procedure second_p()SELECT current_date from cqupt/Call first_p()/Call second_p()/4. 在步驟3的基礎(chǔ)上,創(chuàng)建存儲過程third_p(),顯示表cqupt中的數(shù)據(jù),并對其進行調(diào)用測試。結(jié)果如圖所示:CREATE procedure third_p()SELECT * from cqupt/5. 執(zhí)行五、教學(xué)過程中(三)實驗內(nèi)容的第2部分創(chuàng)建及調(diào)用帶參數(shù)的存儲過程,驗證帶參數(shù)的存儲過程的創(chuàng)建和調(diào)用方法。CREATE PROCEDURE sim

19、pleproc (OUT paraml INT)SELECT COUNT(*) INTO paraml FROM cqupt/CREATE PROCEDURE simpleprocl (IN paraml INT)SET x = paraml -100/CALL simpleproc(a)/Select a/CALL simpleprocl(5500)/SELECT x/6. 在步驟5的基礎(chǔ)上,創(chuàng)建存儲過程simpleproc2(),對傳入?yún)?shù)進行乘以10的處理,變量定義x,并對其進行調(diào)用測試。結(jié)果如圖所示:CREATE PROCEDURE simpleprocl (IN paraml INT

20、)SET x = paraml * 10/CALL simpleprocl2(50)/SELECT x/7. 用Drop Procedure語句刪除存儲過程first_p。如圖所示:DROP PROCEDURE first_p/四實驗總結(jié):1、 如何修改存儲過程?答:1)用DROP PROC PROC_A2) ALTER PROC PROC_A: ALTER PROCEDURE Procedure_name;numberparameter data_typyarying=defaultoutput,.n3)用CREATE OR REPLACE PROCEDURE PROC_A;2、 如果雇員數(shù)

21、據(jù)重復(fù)插入,如何修改存儲過程來正確顯示結(jié)果?答:ALTER PROC PROC_A;ALTER PROCEDUREProcedure_name;nnumberparameter data_typyarying=defaultoutput,.n實驗七觸發(fā)器一、實驗?zāi)康挠|發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行代碼塊類似于存儲過程。 觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行代碼塊類似于存儲過程。 觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行代碼塊類似于存儲過程。 觸發(fā) 器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過

22、程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào)器與存儲過程的 區(qū)別在于:是由用戶或應(yīng)序顯式調(diào),而觸發(fā)器 是不能被直接調(diào)用的 ,由 DBMS 自動執(zhí)行 。觸發(fā)器 具有這些 具有這些 功能: 功能: 1、允許 、允許 /限制對表的修改 限制對表的修改 限制對表的修改 ;2、自動生成派列,比 、自動生成派列,比 、自動生成派列,比 如自增字段 如自增字段 ;3、強制數(shù)據(jù)一致性 、強制數(shù)據(jù)一致性 、強制數(shù)據(jù)一致性 ;4、提供審計和

23、日志記錄 、提供審計和日志記錄 、提供審計和日志記錄 ;5、防止無效的事 、防止無效的事 、防止無效的事 務(wù)處理 ;6、啟用復(fù)雜的業(yè)務(wù)邏輯 。本次實驗了解 MySQL 觸發(fā)器的創(chuàng)建、修改和刪除方法步驟 ,掌握 在 Navicat for MySQL Navicat for MySQL Navicat for MySQL 中對觸發(fā)器的進行創(chuàng)建、修改和刪除,掌握測試 的方法。 二、實驗要求1、實驗前:預(yù)習(xí)內(nèi)容,學(xué)相關(guān)知識。2、實驗中:按照內(nèi)容要求進行,時注 意每種 SQL 語句的 語句的 基本命令 及各個關(guān)鍵字的含義,做好實驗記錄。3、實驗后:分析結(jié)果,總知識得出論按格式寫報告。4、在整個實驗過程

24、中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 、在整個實驗過程中,要獨立思考按時完成任務(wù)不懂的虛心向 教師或同學(xué)請。5、要求按指定格式書寫實驗報告,且中應(yīng)反映

25、出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 、要求按指定格式書寫實驗報告,且中應(yīng)反映出對 本次 實驗的總結(jié),下次 實驗的總結(jié),下次實驗的總結(jié),下次實驗前交實驗報告。三實驗步驟1.啟動Navicat for MySQL,在MySQL 新建連接中完成連接參數(shù)配置。2.登錄到本地數(shù)據(jù)庫服務(wù)器后,連接到test數(shù)據(jù)庫上。3.執(zhí)行五、教學(xué)過程中(三)實驗內(nèi)容的第一部分創(chuàng)

26、建簡單觸發(fā)器,驗證觸發(fā)器的創(chuàng)建和觸發(fā)器的觸發(fā)測試。CREATE TABLE student(SNO VARCHAR(10),SNAME VARCHAR(30),SAGE INT);CREATE TABLE student_log(who VARCHAR(30),whattime TIMESTAMP);SELECT * FROM student_log;USE test;CREATE TRIGGER audit_studentBEFORE INSERT ON studentFOR EACH ROWBEGININSERT INTO student_log(who,whattime) VALUES

27、(CURRENT_USER,CURRENT_TIMESTAMP);END;insert into student values ('1992150033','吳思遠(yuǎn)',40);SELECT * from student_log;4.執(zhí)行五、教學(xué)過程中(三)實驗內(nèi)容的第二部分改造簡單觸發(fā)器,增加觸發(fā)類型判斷功能,驗證觸發(fā)器的改造和改造后的觸發(fā)器觸發(fā)測試。alter table student_log add (action varchar (20);insert into student values ('1992150034','張颯颯&

28、#39;,38);select * from student_log;5.自行編寫student表的觸發(fā)器aduit_student_update,在對student表進行更新操作前觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。對該新建進行觸發(fā)測試。use test; create trigger audit_student_update before update on student for each row begin insert into student_log(who,whattime,action) VALUES (current_user,current_timestamp,'update');end;update studentset sage=sage+1;select * from student_log;6.自行編寫student表的觸發(fā)器aduit_student_delete,在對student表進行刪除操作后觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。并對該新建進行觸發(fā)測試。use test; create trigger audit_student_delete after delete o

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論