數(shù)據(jù)庫第一章試驗報告_第1頁
數(shù)據(jù)庫第一章試驗報告_第2頁
數(shù)據(jù)庫第一章試驗報告_第3頁
數(shù)據(jù)庫第一章試驗報告_第4頁
數(shù)據(jù)庫第一章試驗報告_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——數(shù)據(jù)庫第一章試驗報告

《數(shù)據(jù)庫原理及應用》

試驗報告

題目:試驗四、五、六SQL語言(視圖、數(shù)據(jù)控制、空值處理)學號:132935姓名:么紅帥

專業(yè)班級:軟件131指導教師:張滿囤

完成日期:2023年11月9日

1

試驗1.1數(shù)據(jù)定義

一、試驗目的

熟悉SQL的數(shù)據(jù)定義語言,能夠熟練地使用SQL語句來創(chuàng)立和更改基本表,創(chuàng)立和取消索引。二、試驗內(nèi)容

(1)創(chuàng)立數(shù)據(jù)庫表

CUSTOMERS(CID,CNAME,CITY,DISCNT)、數(shù)據(jù)庫表

AGENTS(AID,ANAME,CITY,PERCENT)、數(shù)據(jù)庫表PRODUCTS(PID,PNAME)。其中CID、AID、PID分表是各表的主鍵,具有唯一性約束。

(2)創(chuàng)立數(shù)據(jù)庫表ORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS)。其中ORDNA分表是主鍵,具有唯一性約束。CID、AID、PID分別是外鍵引用自表CUSTOMERS、表AGENTS,表PRODUCTS。

(3)增加數(shù)據(jù)庫表PRODUCTS三個屬性列:CITY、QUANTITY、PRICE。(4)為以上四個表建立各自的按主鍵增序排列的序列。(5)取消(4)建立的四個索引。三、試驗結(jié)果

(1)

CREATETABLECUSTOMERS(CIDCHAR(8)UNIQUE,CNAMECHAR(20),CITYCHAR(20),DISCNTINT,PRIMARYKEY(CID))

CREATETABLEAGENTS(AIDCHAR(8)UNIQUE,ANAMECHAR(20),CITYCHAR(20),[PERCENT]FLOAT,PRIMARYKEY(AID))

CREATETABLEPRODUCTS(PIDCHAR(8)UNIQUE,PANMECHAR(20),PRIMARYKEY(PID))

CREATETABLEORDERS(ORDNACHAR(8)UNIQUE,MONTHINT,

CIDCHAR(8)UNIQUE,AIDCHAR(8)UNIQUE,PIDCHAR(8)UNIQUE,QTYINT,DOLLARSFLOAT,PRIMARYKEY(ORDNA),

FOREIGNKEY(CID)REFERENCESCUSTOMERS,

FOREIGNKEY(AID)REFERENCESAGENTS,FOREIGNKEY(PID)REFERENCESPRODUCTS)

(3)

ALTERTABLEPRODUCTSADDCITYCHAR(20)

ALTERTABLEPRODUCTSADDQUANTITYINTALTERTABLEPRODUCTSADDPRICEFLOAT

2

(2)

(4)

CREATEINDEXXSNOONCUSTOMERS(CID)CREATEINDEXXSNOONAGENTS(AID)CREATEINDEXXSNOONPRODUCTS(PID)CREATEINDEXXSNOONORDERS(ORDNA)

(5)

DROPINDEXCUSTOMERS.XSNODROPINDEXAGENTS.XSNODROPINDEXPRODUCTS.XSNODROPINDEXORDERS.XSNO

3

試驗1.2數(shù)據(jù)查詢

一、試驗目的

熟悉SQL語句的數(shù)據(jù)查詢語言,能夠使用SQL語句對數(shù)據(jù)庫進行單表查詢、連接查詢、嵌套查詢、集合查詢和統(tǒng)計查詢。二、試驗內(nèi)容

(1)查詢?nèi)空n程的詳細記錄。(2)查詢所有有選課的學生的編號。(3)查詢課時400;

(5)

SELECTCOUNT(cid)FROMCOURSES;

(6)

SELECTcid,COUNT(sid)FROMCHOICESGROUPBYcid;

(7)

SELECTsidFROMCHOICESWHEREscore>60GROUPBYsid

HAVINGCOUNT(cid)>2;

(8)

SELECTsid,COUNT(cid),AVG(score)FROMCHOICESGROUPBYsid;

(9)

SELECTsid,snameFROMSTUDENTSWHEREsidIN(SELECTsidFROMCHOICES

WHEREcid=(SELECTcid

FROMCOURSES

WHEREcname='Java'));

(10)等值連接:

SELECTcid,scoreFROMSTUDENTS,CHOICES

WHERESTUDENTS.sid=CHOICES.sidANDsname='sssht';

謂詞IN:

SELECTcid,scoreFROMCHOICESWHEREsidIN(SELECTsidFROMSTUDENTS

WHEREsname='sssht');

(11)

SELECTcnameFROMCOURSESWHEREhour>(SELECThourFROMCOURSES

WHEREcname='C++');

(12)

SELECTsid,snameFROMSTUDENTSWHEREsidIN(SELECTC1.sid

FROMCHOICESC1,CHOICESC2WHEREC1.score>C2.scoreANDC1.cid=C2.cid

ANDC1.cid=(SELECTcidFROMCOURSESWHEREcname='c++')

ANDC2.sid=(SELECTsidFROMSTUDE

NTSWHEREsname='znkoo'));

(13)

SELECTsnameFROMSTUDENTSWHEREgradeIN(SELECTgradeFROMSTUDENTS

WHEREsid='883794999'ORsid='85

5

0955252');

(14)

SELECTsnameFROMSTUDENTSWHEREsidNOTIN(SELECTsidFROMCHOICESWHEREcid=(SELECTcidFROMCOURSES

WHEREcname='Java'));

(15)

SELECT*FROMCOURSES

WHEREhour=(SELECTMIN(hour)FROMCOURSES);

(16)

SELECTtid,cidFROMCHOICESWHEREtidIN(SELECTtidFROMTEACHERSWHEREsalary=(SELECTMAX(salary)

FROMTEACHERS));

(17)

SELECTsidFROMCHOICESWHEREscore=(SELECTMAX(score)FROMCHOICESWHEREcid=(SELECTcidFROMCOURSES

WHEREcname='ERP'))ANDcid=(SELECTcidFROMCOURSES

WHEREcname='ERP');

(18)

SELECTcnameFROMCOURSESWHEREcidNOTIN(SELECTcid

FROMCHOICES);

(19)

SELECTcnameFROMCOURSESWHEREcidIN(SELECTcidFROMCHOICESWHEREtidIN(SELECTtidFROMCHOICESWHEREcid=(SELECTcidFROMCOURSES

WHEREcname='UML')));

(20)

SELECTsidFROMCHOICESWHEREcidIN(SELECTcidFROMCHOICES

WHEREtid='202302901')

GROUPBYsidHAVINGCOUNT(*)=(SELECTCOUNT(DISTINCTcid)FROMCHOICES

WHEREtid='202302901');

(21)

SELECTsidFROMCHOICESWHEREcid=(SELECTcidFROMCOURSES

WHEREcname='Database')

UNIONSELECTsidFROMCHOICESWHEREcid=(SELECTcidFROMCOURSES

WHEREcname='UML');

(22)

SELECTC1.sid

FROMCHOICESC1,CHOICESC2

WHEREC1.cid=(SELECTcidFROMCOURSESWHEREcname='Database')

6

ANDC2.cid=(SELECTcidFROMCOURSANDC1.sid=C2.sid;

WHEREC1.cid=(SELECTcidFROMCOURSESWHEREcname='Database')

ANDC1.sid=C2.sid

ANDC2.cid(SELECTcidFROMCOUR

ESWHEREcname='UML')

(23)

SELECTC1.sid

FROMCHOICESC1,CHOICESC2

SESWHEREcname='UML');

7

實驗1.3數(shù)據(jù)更新

一、實驗目的

熟悉數(shù)據(jù)庫的數(shù)據(jù)更新操作,能夠使用SQL語句對數(shù)據(jù)庫進行數(shù)據(jù)的插入、更新、刪除操作二、實驗內(nèi)容

(1)向STUDENTS表插入編號是800022222且姓名是WangLan的元組。(2)向TEACHERS表插入元組(200001000,LXL,s4zrck@,3024)(3)將TEACHERS表中編號為200010493的老師工資改為4000。(4)將TEACHERS表中所有工資小于2500的老師工資改為2500。

(5)將有編號200016731老師講授的課程全部改成姓名rnupx的老師講授。(6)更新編號800071780的學生年紀為2001。(7)刪除沒有學生選修的課程。(8)刪除年級高于1998的學生信息。(9)刪除沒有選修課程的學生信息。(10)刪除成績不及格的選課記錄。三、實驗結(jié)果

(1)

INSERT

INTOSTUDENTS(sid,sname)

VALUES('800022222','WangLan');

SETtid=(SELECTtidFROMTEACHERSWHEREtname='rnupx')WHEREtid='200016721';

(6)

UPDATESTUDENTSSETgrade='2001'WHEREsid='800071780';

(2)

INSERTINTOTEACHERSVALUES

('200001000','LXL','s4zrck@',3024);

(7)

DELETEFROMCOURSESWHEREcidNOTIN

(SELECTDISTINCTcidFROMCHOICES);

(3)

UPDATETEACHERSSETsalary=4000WHEREtid='200010493';

(8)

DELETEFROMSTUDENTSWHEREgrade1998WITHCHECKOPTION;

(2)定義學生姓名與選課信息的視圖VIEWS;

CREATEVIEWVIEWSAS

SELECTSTUDENTS.sname,CHOICES.no,CHOICES.tid,CHOICES.cid,CHOICES.score

FROMSTUDENTS,CHOICES

WHERESTUDENTS.sid=CHOICES.sid;

插入元組:

INSERTINTOS1

VALUES('60000001','Lily',1997);

(3)定義年級低于1998的學生的視圖S1(SID,SNAME,GRADE);

CREATEVIEWS1(sid,sname,grade)AS

SELECTsid,sname,gradeFROMSTUDENTSWHEREgrade>1998;

(4)查詢學生為“uxjof〞的學生的選課信息;

SELECT*FROMVIEWS

WHEREsname='uxjof';

(5)查詢選修課程“UML〞的學生的編號和成績;

SELECTsid,scoreFROMVIEWC

WHEREcname='UML';

執(zhí)行結(jié)果:

消息550,級別16,狀態(tài)1,第1行試圖進行的插入或更新已失敗,原因是目標視圖或者目標視圖所跨越的某一視圖指定了WITHCHECKOPTION,而該操作的一個或多個結(jié)果行又不符合CHECKOPTION約束。語句已終止。結(jié)果分析:

WITHCHECKOPTION表示對視圖進行操作時要滿足子查詢的條件表達式,grade=1997此題的條件grade>1998不符,因此在此題中插入這個元組是不成功的。刪除元組:

DELETEFROMS1

WHEREgrade=1999;

10

(6)向視圖S1插入記錄“(60000001,Lily,

軟件131-么紅帥-132935

執(zhí)行結(jié)果:刪除成功

(8)在視圖VIEWS中將姓名為“uxjof〞的學生的選課成績都加上5分。

UPDATEVIEWSSETscore=score+5

WHEREsname='uxjof';

(9)取消以上建立的所有視圖。

DROPVIEWVIEWCDROPVIEWVIEWSDROPVIEWS1;

11

軟件131-么紅帥-132935

試驗1.5數(shù)據(jù)控制

一、試驗目的

熟悉SQL的數(shù)據(jù)控制功能,能夠使用SQL語句來向用戶授予和收回權(quán)限。二、試驗內(nèi)容

(1)授予所有用戶對表STUDENTS的查詢權(quán)限。

GRANTSELECTONSTUDENTSTOPUBLIC;

的查詢權(quán)限和傳播的此項權(quán)限的權(quán)利。

GRANTSELECTONTEACHERSTOUSER2

WITHGRANTOPTION;

(2)授予所有用戶對表COURSES的查詢

和更新權(quán)限。

GRANTSELECT,UPDATEONCOURSESTOPUBLIC;

(7)由USER2授予USER3對表TEACHERS

的查詢權(quán)限,和傳播的此項權(quán)限的權(quán)利。再由USER3授予USER2上述權(quán)限,這樣的SQL語句能否成功得到執(zhí)行?

GRANTSELECTONTEACHERSTOUSER3

WITHGRANTOPTION;

(3)授予USER1對表TEACHERS的查詢,

更新工資的權(quán)限,且允許USER1可以傳播這些權(quán)限。

GRANTSELECT,UPDATE(salary)ONTEACHERSTOUSER1

WITHGRANTOPTION;

GRANTSELECTONTEACHERSTOUSER2

WITHGRANTOPTION;

(4)授予USER2對表CHOICES的查詢,更新成績的權(quán)限。

GRANTSELECT,UPDATE(score)ONCHOICESTOUSER2;

(8)取消USER1對表STUDENTS的查詢權(quán)

限,考慮由USER2的身份對表STUDENTS進行查詢,操作能否成功?為什么?

REVOKESELECTONTEACHERS

FROMUESR1CASCADE;

(5)授予USER2對表TEACHERS的除了工資之外的所有信息的查詢。

CREATEVIEWTVAS

SELECTtid,tname,emailFROMTEACHERS;GRANTSELECTONTVTOUESR2;

操作不成功,取消授權(quán)操作的時候存在級聯(lián)效應。

(9)取消USER1和USER2的關(guān)于表COURSES的權(quán)限。

REVOKESELECT,UPDATEONCOURSESFROMUESR1,UESR2;

(6)由USER1授予USER2對表TEACHERS

12

軟件131-么紅帥-132935

試驗1.6空值和空集的處理

一、試驗目的

認識NULL值在數(shù)據(jù)庫中的特別含義,了解空值和空集對于數(shù)據(jù)庫的數(shù)據(jù)查詢操作,特別是空值在條件表達式中與其他的算術(shù)運算符或規(guī)律運算符的運算中,空集作為嵌套查詢的子查詢返回結(jié)果的時候的特別性,能夠熟練使用SQL語句來進行與空值,空集相關(guān)的操作。二、試驗內(nèi)容

(1)查詢所有課程記錄的上課學時(數(shù)

假使有,在什么位置?

SELECTsid,scoreFROMCHOICES

WHEREcid=(SELECTcidFROMCOURSESWHEREcname='C++')ORDERBYscore;

據(jù)庫中為每星期學時),以一學期十八個星期計算每個課程的總學時,注意HOUR取NULL值的狀況。

SELECTcid,hour*18FROMCOURSES;

(2)通過查詢選修課程C++的學生的人

數(shù),其中成績合格的學生人數(shù),不合格的學生人數(shù),探討NULL值得特別含義。

查詢選修C++的學生人數(shù):

SELECTCOUNT(*)FROMCOURSES,CHOICES

WHERECHOICES.cid=COURSES.cid

ANDcname='C++';

NULL的項出現(xiàn)在結(jié)果中,被當作最小值處理。

(4)在上面的查詢的過程中,假使加上保存字DISTINCT會有什么效果呢?

SELECTDISTINCTscoreFROMCHOICES

WHEREcid=(SELECTcidFROMCOURSESWHEREcname='C++')ORDERBYscore;

運行結(jié)果為:95

成績合格的學生人數(shù):

SELECTCOUNT(*)FROMCOURSES,CHOICES

WHERECHOICES.cid=COURSES.cid

ANDcname='C++'ANDscore=60;

得到9個分組,現(xiàn)實中有8個年級。(6)結(jié)合分組,使用集合函數(shù)求每個課

運行結(jié)果為:0

NULL與比較運算符的運算都返回FALSE值,都不會出現(xiàn)在結(jié)果的統(tǒng)計之中。

(3)查詢選修課程C++的學生的編號和

程選修的學生的平均分,總的選課記錄數(shù),最高成績,最低成績,探討考察取空值的項對集合函數(shù)的作用的影響。

SELECTAVG(score),COUNT(*),MAX(score),MIN(score)FROMCHOICESGROUPBYcid;

13

成績,使用ORDERBY按成績進行排序時,取NULL的項是否出現(xiàn)在結(jié)果中

溫馨提示

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

評論

0/150

提交評論