數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)_第3頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)_第4頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

8/8數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告冊(cè)合肥師范學(xué)院實(shí)驗(yàn)報(bào)告冊(cè)

2014/2015學(xué)年第1學(xué)期

系別計(jì)算機(jī)學(xué)院

實(shí)驗(yàn)課程數(shù)據(jù)庫(kù)原理

專業(yè)

班級(jí)

姓名

學(xué)號(hào)

指導(dǎo)教師李宜兵

實(shí)驗(yàn)一——數(shù)據(jù)庫(kù)基本操作

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟悉MSSQLSERVER運(yùn)行界面,掌握服務(wù)器的基本操作。

2.掌握界面操作方法完成用戶數(shù)據(jù)庫(kù)建立、備份和還原。

3.建立兩個(gè)實(shí)驗(yàn)用的數(shù)據(jù)庫(kù),使用企業(yè)管理器和查詢分析器對(duì)數(shù)據(jù)庫(kù)和表進(jìn)行基本操作。

二、實(shí)驗(yàn)預(yù)習(xí)內(nèi)容

在認(rèn)真閱讀教材及實(shí)驗(yàn)指導(dǎo)書的基礎(chǔ)上,上機(jī)前請(qǐng)預(yù)習(xí)以下內(nèi)容,并在空白處填寫相應(yīng)的步驟或命令。

1.熟悉SQLSERVER2000的運(yùn)行環(huán)境,練習(xí)服務(wù)器基本操作:打開、停止、關(guān)閉。

2.使用SQLSERVER2000中的企業(yè)管理器完成以下任務(wù)。

數(shù)據(jù)庫(kù)名稱:STC

表:STU(snochar(9),snamevarchar(50),ssexchar(2),sageint,sdeptchar(2));

COURSE(cnochar(3),cnamevarchar(50),cpnochar(3),creditint);

SC(snochar(9),cnochar(3),gradeint);

說明:以上為表結(jié)構(gòu),以snochar(9)為例,說明sno屬性設(shè)置為字符類型,寬度為9,int指整型數(shù)據(jù)。

1)建立數(shù)據(jù)庫(kù)STC,分別建立以上三張表,并完成數(shù)據(jù)錄入。(表結(jié)構(gòu)及數(shù)據(jù)參見教材)2)分析并建立各表的主碼,用下劃線在上面表結(jié)構(gòu)中標(biāo)出主碼。

createtablestu

(snochar(9)primarykey,

snamevarchar(50),ssexchar(2),sageint,sdeptchar(2)

);

select*fromcourse

createtablecourse

(cnochar(3)primarykey,cnamevarchar(50),cpnochar(3),creditint,

foreignkey(cpno)referencescourse(cno)

);

createtablesc

(snochar(9),cnochar(3),gradeint,

primarykey(sno,cno),

foreignkey(sno)referencesstu(sno),

foreignkey(cno)referencescourse(cno)

);

insert

intostu

values('95001','李勇','男','20','cs');

Stu表:

Sc表:

3)建立各表之間的關(guān)聯(lián),請(qǐng)簡(jiǎn)述操作步驟。

建立關(guān)聯(lián):右擊SC表,設(shè)計(jì)表在任意一個(gè)空白處右擊關(guān)系表和列規(guī)范選擇主鍵表course對(duì)應(yīng)的主碼cno和外鍵表sc對(duì)應(yīng)的cno以及主鍵表stu對(duì)應(yīng)的主碼sno和外鍵表sc對(duì)應(yīng)的sno—確定即可

4)參考實(shí)驗(yàn)指導(dǎo)書的【第5章數(shù)據(jù)庫(kù)的備份和還原】,使用企業(yè)管理器對(duì)數(shù)據(jù)庫(kù)STC進(jìn)行備份,并嘗試在個(gè)人電腦與機(jī)房電腦上進(jìn)行還原,請(qǐng)簡(jiǎn)述備份、還原操作的步驟。

右擊STC數(shù)據(jù)庫(kù)任務(wù)—備份—備份到(添加到你要備份到的地方)確定。

右擊STC數(shù)據(jù)庫(kù)任務(wù)—還原數(shù)據(jù)庫(kù)(從原數(shù)據(jù)庫(kù)或源設(shè)備)選擇路徑--確定。

3.在SQLSERVER2000的查詢分析器中使用SQL語言完成以下任務(wù)。

參考實(shí)驗(yàn)指導(dǎo)書《數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)指導(dǎo)教程》【實(shí)驗(yàn)1.1數(shù)據(jù)定義】,建立數(shù)據(jù)庫(kù)SCHOOL,分別建立students、teachers、courses、choices四張表,表結(jié)構(gòu)見實(shí)驗(yàn)指導(dǎo)書P236【附錄A】。

1)用SQL語言創(chuàng)建數(shù)據(jù)庫(kù)、建表。建表時(shí)為各表建立關(guān)鍵字、設(shè)置外碼,數(shù)據(jù)暫不錄入,請(qǐng)寫出對(duì)應(yīng)的SQL命令。

createtablestudents

(sidchar(10)primarykey,

snamechar(30)notnull,

emailchar(30),

);

createtableteachers

(tidchar(10)primarykey,

tnamechar(30)notnull,

emailchar(30),

salaryint,

);

createtablecourses

(cidchar(10)primarykey,

cnamechar(30)notnull,

hourint,

);

createtablechoices

(nointprimarykey,

sidchar(10)notnull,

tidchar(10)notnull,

cidchar(10)notnull,

scoreint,

foreignkey(sid)referencesstudents(sid),

foreignkey(tid)referencesteachers(tid),

foreignkey(cid)referencescourses(cid),);

2)為students表、courses建立按主鍵増序排列的索引,請(qǐng)寫出相應(yīng)的SQL命令。createindexsonstudents(sidasc)

createindexconcourses(cidasc)

3)刪除course上的索引,請(qǐng)寫出相應(yīng)的SQL命令。

dropindexconcourses

4)在SCHOOL數(shù)據(jù)庫(kù)中的students表中增加一個(gè)“出生日期”字段,類型為日期時(shí)間型,請(qǐng)寫出對(duì)應(yīng)的SQL命令。

Altertablestudentsadd“出生日期”datetime

5)刪除students中的“出生日期”字段,請(qǐng)寫出對(duì)應(yīng)的SQL命令。

Altertablestudentsdropclumn出生日期

6)刪除SCHOOL數(shù)據(jù)庫(kù)中的students表,請(qǐng)寫出對(duì)應(yīng)的SQL命令。

droptablestudentscascade

4.使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫(kù)SCHOOL,實(shí)現(xiàn)內(nèi)容與實(shí)驗(yàn)預(yù)習(xí)內(nèi)容3完全相同。

5.使用企業(yè)管理器,將SCHOOL數(shù)據(jù)庫(kù)分離出MSSQLSERVER,請(qǐng)簡(jiǎn)述步驟。

點(diǎn)開數(shù)據(jù)庫(kù)找到school數(shù)據(jù)庫(kù)(右擊)所有任務(wù)分離數(shù)據(jù)庫(kù)確定。

6.使用企業(yè)管理器,使用【數(shù)據(jù)庫(kù)/所有任務(wù)/附加數(shù)據(jù)庫(kù)】將SCHOOL數(shù)據(jù)庫(kù)添加進(jìn)SQL

SERVER,并查看數(shù)據(jù)。

7.使用查詢分析器,刪除數(shù)據(jù)庫(kù)STC,請(qǐng)寫出對(duì)應(yīng)的SQL命令。

Dropdatabasestc

8.結(jié)束本次實(shí)驗(yàn)

三、實(shí)驗(yàn)課后訓(xùn)練

1.使用企業(yè)管理器練習(xí)數(shù)據(jù)的導(dǎo)入導(dǎo)出。

1)將SCHOOL數(shù)據(jù)庫(kù)students表中的數(shù)據(jù)導(dǎo)出到STC數(shù)據(jù)庫(kù)對(duì)應(yīng)的stu表中;

2)向STC數(shù)據(jù)庫(kù)courses表導(dǎo)入SCHOOL數(shù)據(jù)庫(kù)courses表中的數(shù)據(jù);

3)自行練習(xí)實(shí)驗(yàn)指導(dǎo)書【實(shí)驗(yàn)5.3SQLSERVER數(shù)據(jù)庫(kù)的導(dǎo)入與導(dǎo)出】部分;

2.自行練習(xí)實(shí)驗(yàn)指導(dǎo)書【實(shí)驗(yàn)1.1數(shù)據(jù)定義】部分。

四、實(shí)驗(yàn)報(bào)告

1.簡(jiǎn)述本次實(shí)驗(yàn)所用到的SQL命令及其功能。

命令:creatdatabase(

[add[完整性約束]]增加新列和新的完整性約束條件

[Drop]刪除指定的完整性約束條件

[altercolumn];修改原有的列定義,包括列名和數(shù)據(jù)類型。功能:修改基本表

2.在MSSQLSERVER中數(shù)據(jù)庫(kù)的“分離|添加”與“備份|還原”是相同的功能嗎?

答:在MSSQLSERVER中數(shù)據(jù)庫(kù)的“分離|添加”與“備份|還原”的功能是不相同的。

分離之后的數(shù)據(jù)庫(kù)在用戶不更改路徑的情況下會(huì)分離在系統(tǒng)默認(rèn)的路徑上,且分離之后在數(shù)據(jù)庫(kù)的下屬欄中找不到分離的數(shù)據(jù)庫(kù),除非重新按指定路徑添加。而備份的數(shù)據(jù)庫(kù)還會(huì)顯示在數(shù)據(jù)庫(kù)的下屬欄中。

3.實(shí)驗(yàn)總結(jié)(實(shí)驗(yàn)過程中出現(xiàn)的問題、解決方法、結(jié)果如何或其它)

本次試驗(yàn)過程中遇到了很多問題,因?yàn)槭堑谝淮问褂眠@個(gè)軟件,有好多東西都不知道在哪,比如,不知道如何建立關(guān)聯(lián),如何備份還原數(shù)據(jù)庫(kù)等,經(jīng)過詢問同學(xué)才知道。對(duì)書上的知識(shí)不是很了解,不知道如何建立索引和刪除索引,在看書之后才知道如何做。經(jīng)過這次實(shí)驗(yàn),以后做實(shí)驗(yàn)要好好預(yù)習(xí)。

實(shí)驗(yàn)二——SQL語句

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟悉SQL的數(shù)據(jù)查詢語言,能使用SQL進(jìn)行單表查詢、連接查詢、嵌套查詢、集合查詢

和統(tǒng)計(jì)查詢,能理解空值的處理;

2.熟悉數(shù)據(jù)庫(kù)的數(shù)據(jù)更新操作,能使用SQL語句對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的插入、更新、刪除操

作;

3.熟悉SQL支持的有關(guān)視圖的操作,能創(chuàng)建、查詢及取消視圖;

4.了解NULL在數(shù)據(jù)庫(kù)中的特殊含義,掌握使用SQL進(jìn)行與空值相關(guān)的操作;

二、實(shí)驗(yàn)預(yù)習(xí)內(nèi)容

在認(rèn)真閱讀教材及實(shí)驗(yàn)指導(dǎo)書【實(shí)驗(yàn)1.2數(shù)據(jù)查詢】、【實(shí)驗(yàn)1.3數(shù)據(jù)更新】、【實(shí)驗(yàn)1.4視圖】和【實(shí)驗(yàn)1.6空值和空集的處理】的基礎(chǔ)上,上機(jī)前請(qǐng)預(yù)習(xí)以下內(nèi)容,并在空白處填寫相應(yīng)的步驟或命令。

1.使用SCHOOL數(shù)據(jù)庫(kù),在SQLSERVER2000的查詢分析器中使用SQL語言完成以下操

作。請(qǐng)?jiān)诳瞻滋幪顚懴鄳?yīng)的SQL命令。

1)查詢年級(jí)為2001的所有學(xué)生的名稱,按編號(hào)順序排列;

selectsnamefromstudentswheregrade='2001'orderbysid

2)查詢所有課程名稱中含有data的課程編號(hào);

selectcidfromcourseswherecnamelike'%data%'

3)統(tǒng)計(jì)所有老師的平均工資;

selectAVG(salary)平均工資

fromteachers

4)查詢至少選了3門課的學(xué)生編號(hào);

selectsid

fromchoices

groupbysidhavingcount(*)>=3

5)查詢學(xué)號(hào)為80009026的學(xué)生的姓名、所選課名及成績(jī);selectsname,cname,score

fromstudents,courses,choices

wherestudents.sid=80009026andchoices.sid=students.sid

andchoices.cid=courses.cid

6)查詢沒有學(xué)生選的課程編號(hào);

selectcid

fromcourses

wherecidnotin

(

selectcid

fromchoices)

7)查詢既選了C++又選了Java課程的學(xué)生編號(hào);

selectsid

fromchoices,courses

wherechoices.cid=courses.cidandcname='c++'

andsidin(

selectsid

fromchoices,courses

wherechoices.cid=courses.cidandcname='java')

)

8)查詢選了C++但沒選Java課程的學(xué)生編號(hào);

selectsid

fromchoices,courses

wherechoices.cid=courses.cidandcname='c++'

andsidnotin(

selectsid

fromchoices,courses

wherechoices.cid=courses.cidandcname='java')

9)向STUDENTS表中插入“LiMing”的個(gè)人信息(編號(hào):700045678,名字:LiMing,Email:LX@http://./doc/e8f3ce25e109581b6bd97f19227916888586b9d5.html,年級(jí):1992);

insertintostudents

values('700045678','liming','LX@http://./doc/e8f3ce25e109581b6bd97f19227916888586b9d5.html','1992')

10)將“LiMing”的年級(jí)改為2002;

updatestudents

setgrade='2002'

wheresname='liming'

11)刪除所有選了Java課程的學(xué)生選課記錄;

delete

fromchoices

wherecid=

(selectcid

fromcourses

wherecname='java')

12)求出每門課的課程號(hào)、選課人數(shù),結(jié)果存入數(shù)據(jù)庫(kù)表T1中。

createtableT1

(cidchar(10)primarykey,

renshuint

)

insert

intot1

selectcid,count(distinctsid)

fromchoices

groupbycid;

13)查詢所有選課記錄的成績(jī)并換算為五分制(注意NULL的情況);

selectdistinctscore,score/20五分制

fromchoices;

14)查詢成績(jī)小于0的選課記錄,統(tǒng)計(jì)總數(shù)、平均分、最大值和最小值(注意查詢結(jié)果中NULL的情況);

selectsid,cid

fromchoices

wherescore=0);

7)創(chuàng)建規(guī)則rule_sex,規(guī)定更新或插入的值只能是M或F,并綁定到Worker的sex字段;

Go

CreateRulerule_sexas@valuein('F','M')

Go

execsp_bindrulerule_sex,'Worker.[sex]';

8)插入2條記錄,一條滿足規(guī)則rule_sex,一條違反規(guī)則,觀察結(jié)果。

InsertintoWorker

values('00005','小李','m',15,'科技部')

InsertintoWorker

values('00005','小李','a',15,'科技部')

5.使用查詢分析器創(chuàng)建觸發(fā)器并測(cè)試,請(qǐng)寫出相應(yīng)的語句:

1)為Worker表創(chuàng)建觸發(fā)器T1,當(dāng)插入或更新表中數(shù)據(jù)時(shí),保證所操作記錄的sage大于0;

createtriggert1

onworker

forinsert,update

as

if(selectsagefrominserted)@b

set@c=@a

else

set@c=@b

return@c

end

4)在查詢分析器中,調(diào)用此函數(shù),輸出兩個(gè)數(shù)中的最大值;

printdbo.func(29,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論