版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫原理實驗指導書參考答案
中割準工出院
《數(shù)據(jù)庫原理與應用》實驗指導
/年第一學期
姓名:______________
學號:______________
班級:______________
指導教師:______________
計算機科學與工程學院
文檔僅供參考
實驗一SQLServer使用初步
一、實驗目的
1、熟悉SQLServer的組成及基本功能。
2、掌握SQLServer的登錄及注冊。
3、掌握SQLServer企業(yè)管理器的使用方
法。
4、熟悉查詢分析器的基本使用。
二、實驗預習
1、什么是數(shù)據(jù)庫管理系統(tǒng)DBMS?你所知道
的DBMS有哪些?
2、SQLServer()的安裝步驟?
文檔僅供參考
三、實驗內(nèi)容和要求
1、注冊服務器
基本步驟:
(1)打開企業(yè)管理器
(2)右擊SQLServer組f新建SQLServer
注冊
(3)添加可用的服務器(實際數(shù)據(jù)庫服務
器的名稱或IP地址)
(4)選擇身份驗證模式(選“系統(tǒng)管理員
分配給我的登錄信息”)
(5)輸入正確的登錄名和密碼
(6)選擇SQLServer組(選“在現(xiàn)有的SQL
Server組中添加SQLServer
(7)完成注冊
若注冊成功,則顯示注冊成功的信息。
2、連接SQLServer服務器
(1)右鍵單擊上面注冊的數(shù)據(jù)庫服務器,
選擇連接,建立與數(shù)據(jù)庫服務器的連接。觀
察連接后服務器圖標的變化;
文檔僅供參考
(2)右鍵單擊選擇編輯SQLServer注冊屬
性,觀察已注冊數(shù)據(jù)庫服務器的屬性信息;
(3)右鍵單擊選擇刪除SQLServer注冊。
為保證數(shù)據(jù)庫的安全性,使用完畢自己的數(shù)
據(jù)庫后,可采取刪除的方式,斷開與數(shù)據(jù)庫
的連接;
(4)重復注冊服務器的步驟,再次建立與
數(shù)據(jù)庫的連接;
3、熟悉企業(yè)管理器
(1)單擊建立的服務器連接,觀察服務器
的7個項目,寫出它們的名稱。經(jīng)過查看聯(lián)
機幫助,總結(jié)7個項目的基本功能。
(2)單擊數(shù)據(jù)庫,觀察Northwind數(shù)據(jù)庫
文檔僅供參考
下的11個項目,寫出項目名稱,經(jīng)過聯(lián)機
幫助了解它們的基本功能。
(3)查看Northwind的表項目,單擊表,
觀察表的名稱、所有者、類型以及創(chuàng)立日期。
回答:
■這些表的所有者有哪幾種?
■這些表的類型有哪幾種?
■選擇表Employees,在右鍵菜單中選擇
打開表->返回所有行,觀察表中的數(shù)據(jù),
說出這些數(shù)據(jù)的實際含義。觀察其它用
文檔僅供參考
戶類型的表,你還能說出它們數(shù)據(jù)的實
際含義嗎?
(4)查看Northwind的視圖項目,單擊視
圖,觀察視圖的名稱、所有者、類型以及創(chuàng)
立日期。選擇視圖ProductSalesfor1997,
同上面觀察表中數(shù)據(jù)的方法一樣,觀察視圖
中的數(shù)據(jù),說出這些數(shù)據(jù)的意義。
文檔僅供參考
(5)查看Northwind的用戶項目,單擊用
戶?;卮穑?/p>
■有哪類用戶?查看它們的屬性對話框,
它們的角色和權(quán)限是否相同?
■經(jīng)過聯(lián)機幫助,寫出dbo、Guest用戶的
區(qū)別。
(6)查看Northwind的角色項目,單擊角
色?;卮穑?/p>
■有哪些角色類型?經(jīng)過查看聯(lián)機幫助,
文檔僅供參考
寫出它們各自的含義和作用。
(7)查看Northwind的安全性項目,單擊
項目中的登錄,觀察不同的登錄名稱、類型、
服務器訪問、默認數(shù)據(jù)庫,找到你自己的登
錄名稱,右鍵單擊打開屬性對話框,觀察對
話框中的設(shè)置,寫出登錄屬性對話框中的設(shè)
置作用。
文檔僅供參考
4、熟悉查詢分析器
(1)打開查詢分析器?;静襟E:
■單擊注冊的數(shù)據(jù)庫服務器,確定服務器
已經(jīng)連接;
-在主菜單“工具”中選擇“SQL查詢分
析器”;
■在打開的查詢分析器窗口中,左側(cè)的對
象瀏覽器為注冊的服務器,在工具欄的
數(shù)據(jù)庫選擇中選擇Northwind數(shù)據(jù)庫為
當前數(shù)據(jù)庫;右側(cè)窗口為查詢窗口。
(2)分別在查詢窗口中輸入如下查詢語句,
觀察查詢結(jié)果,寫出結(jié)果的數(shù)據(jù)記錄個數(shù):
查詢語句1:
SELECT*
FROMShippers
ORDERBYCompanyName
結(jié)果記錄數(shù):
查詢語句2:
文檔僅供參考
SELECTFirstName,HomePhone
FROMNorthwind.dbo.Employees
ORDERBYFirstNameASC
結(jié)果記錄數(shù):
查詢語句3:
SELECTROUND((UnitPrice*.9),2)
ASDiscountPrice
FROMProducts
WHEREProductID=58
結(jié)果記錄數(shù):
查詢語句4:
SELECTOrderlD,
DATEDIFF(dd,ShippedDate,
GETDATE())ASDaysSinceShipped
FROMNorthwind.dbo.Orders
WHEREShippedDateISNOTNULL
文檔僅供參考
結(jié)果記錄數(shù):
查詢語句5:
SELECTProductID,ProductName
FROMNorthwind.dbo.Products
WHERECategorylD=1ORCategorylD
=4ORCategorylD=5
結(jié)果記錄數(shù):
四、實驗小結(jié)
文檔僅供參考
五、評閱成績
實驗預實驗過實驗結(jié)實驗報總成績
習20%程20%果30%告30%
文檔僅供參考
實驗二數(shù)據(jù)定義
一、實驗目的
1、掌握SQL數(shù)據(jù)定義功能:數(shù)據(jù)庫定義、
表的定義、索引定義。
2、掌握利用企業(yè)管理器和SQL語句定義表、
索引的方法。
二、實驗預習
1、SQL中基本表定義語句格式:
2、SQL中修改基本表語句格式:
文檔僅供參考
三、實驗內(nèi)容和要求
1、在企業(yè)管理器中,利用菜單操作的方式
在各自的數(shù)據(jù)庫中建立如下四個基本表:
(1)供應商表S:
列名說數(shù)據(jù)類型約束
明
SNO供CHAR(6)PRIMARY
應KEY
商
號
SNAME供VARCHAR(20)NOT
應NULL
商
名
STATUS供VARCHAR(50)
應
商
狀
態(tài)
文檔僅供參考
CITY所VARCHAR(50)
在
城
市
(2)零件表P:
列名說數(shù)據(jù)類型約束
明
PNO零CHAR(6)PRIMARYKEY
件
號
PNAME零VARCHAR(20)NOTNULL
件
名
COLOR顏CHAR(2)
色
WEIGHT重NUMERIC(9,2)CHECK(WEIGHT>0
量AND
WEIGHT<=100)
(3)工程項目表J:
列名說明數(shù)據(jù)類型約束
文檔僅供參考
JNO項目CHAR(6)PRIMARY
號KEY
JNAME項目VARCHAR(20)NOT
名NULL
CITYVARCHAR(50)
(4)供應情況表SPJ:
皿.1口MAmi
列名說明數(shù)據(jù)類型約束
SNO供應商CHAR(6)NOTNULL
號
PNO零件號CHAR(6)NOTNULL
JNO項目號CHAR(6)NOTNULL
QTY供應數(shù)SMALLINTDEFAULT
量100
2、用CREATE語句建立如下三個表,并寫出
相應的語句。
(1)學生表Student:
列名說明數(shù)據(jù)類型約束
SNO學號CHAR(7)主碼
文檔僅供參考
SNAME姓名CHAR(10)NOT
NULL
SSEX性別CHAR(2)取“男”
或“女”
SAGE年齡SMALLINT取值
15-45
SDEPT所在VARCHAR(20)默認
系“計算
機系”
語句:
CREATETABLEStudent(
Snochar(7)PRIMARYKEY,
Snamechar(10)notnull,
Ssexchar(2)CHECK(Ssex='男'orSsex=,
女'),
SagesmallintCHECK(Sage>=15and
Sage<=45),
Sdeptchar(20)DEFAULT'計算機系'
)
(2)課程表Course:
列名說數(shù)據(jù)類型約束
明
文檔僅供參考
CNO課CHAR(10)主碼
程
號
CNAME課VARCHAR(20)NOT
程NULL
名
CCREDIT學SMALLINT大于0
分
SEMSTER學SMALLINT大于0
期
PERIOD學SMALLINT大于0
時
語句:
CREATETABLECourse(
Cnochar(10)PRIMARYKEY,
Cnamevarchar(20)NOTNULL,
Ccreditsmallintcheck(ccredit>0),
semstersmallintcheck(semster>0),
periodsmallintcheck(period>0)
)
(3)選課表Sc:
文檔僅供參考
列名說明數(shù)據(jù)類型約束
SNO學號CHAR(7)主碼,引用
Student的外碼
CNO課程號CHAR(10)主碼,引用
Course的外碼
GRADE成績SMALLINT大于0
語句:
CREATETABLESC(
Snochar(7),
Cnochar(10),
Gradesmallintcheck(grade>=0),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno)
)
3、利用SQL語句對表結(jié)構(gòu)進行修改。
(1)為零件表P增加一個規(guī)格(GUIGE)列,
數(shù)據(jù)類型為字符,長度50;
AlterTablePAddGUIGEchar(50)
文檔僅供參考
(2)修改課程表Course的CNAME屬性列的
類型為VARCHAR(30);
AlterTableCourseAlterColumnCNAME
varchar(30)
(3)為供應情況表SPJ添加參照完整性約
束;
SPJ的SNO列參照S表SNO列
AlterTableSPJAddForeignKey(SNO)
ReferencesS(SNO)
SPJ的PNO列參照P表PNO列
AlterTableSPJAddForeignKey(PNO)
ReferencesP(PNO)
SPJ的JNO列參照J表JNO列
AlterTableSPJAddForeignKey(JNO)
ReferencesJ(JNO)
文檔僅供參考
(4)刪除零件表P的規(guī)格(GUIGE)列
AlterTablePDropColumnGUIGE
4、利用企業(yè)管理器向表中添加數(shù)據(jù)
(1)供應商表S:
SN0SNAMESTATUSCITY
S1精益20天津
S2盛錫10北京
繼續(xù)往表中增加一條記錄:四個字段的數(shù)據(jù)
分別是S1,東方紅,30,北京,會出現(xiàn)什么情
況?為什么?
(2)零件表P:
PN0PNAMECOLORWEIGHT
P1螺母紅12
P2螺栓綠17
文檔僅供參考
P3螺絲藍105.5
刀
是否能夠正常輸入三條數(shù)據(jù)?如果否,問題
出在哪里,為什么?
(3)工程項目表J:
JNOJNAMECITY
J1一汽北京
J2半導體南京
r
J3常州
第三條記錄是否能夠正常輸入,若否,會出
現(xiàn)什么問題,為什么?
(4)供應情況表SPJ:
文檔僅供參考
SNOPNOJNOQTY
S1P1J1200
S1P1J3
S2P2J4
輸入過程中是否會遇到問題,若有,出在哪,
為什么?
四、實驗小結(jié)
文檔僅供參考
五、評閱成績
實驗預實驗過實驗結(jié)實驗報總成績
習20%程20%果30%告30%
文檔僅供參考
實驗三數(shù)據(jù)查詢
一、實驗目的
1、掌握查詢語句的基本組成和使用方法
2、掌握常見查詢技巧
二、實驗預習
1、SQL中查詢語句格式:
2、連接查詢有哪些不同的連接方式?有什
么特點。
文檔僅供參考
三、實驗內(nèi)容和要求
1、按照下表中的內(nèi)容,在企業(yè)管理器中為
數(shù)據(jù)庫表輸入相應的數(shù)據(jù)。
學生表:Student
SnoSnameSsexSageSdept
9512101李勇男19計算機
系
9512103王敏女20計算機
系
9521101張莉女22信息系
9521102吳賓男21信息系
9521103張海男20信息系
9531101錢小平女18數(shù)學系
9531102王大力男19數(shù)學系
課程表:Course
CnoCnameCcreditSemsterPeriod
C01計算機313
導論
C02VB434
C03計算機474
文檔僅供參考
網(wǎng)絡
C04數(shù)據(jù)庫664
基礎(chǔ)
C05高等數(shù)818
學
選課表:SC
SnoCnoGrade
9512101C0395
9512103C0351
9512101C0580
9512103C0560
9521101C0572
9521102C0580
9521103C0545
9531101C0581
9531102C0594
9512101C01NULL
9531102C01NULL
9512101C0287
文檔僅供參考
9512101C0476
2、完成下列查詢
(1)查詢?nèi)w學生的信息。
select*fromstudent
(2)查詢“信息系”學生的學號,姓名和
出生年份。
selectSno,Sname,-SageasBirthyear
fromstudentwhereSdept=,信息系'
(3)查詢考試不及格的學生的學號。
selectDistinctSnofromSCwhere
Grade<60
(4)查詢無考試成績的學生的學號和相應
的課程號。
文檔僅供參考
selectSno,CnofromSCwhereGradeis
null
(5)將學生按年齡升序排序。
select*fromstudentorderbySageasc
(6)查詢選修了課程的學生的學號和姓名。
SelectSno,SnamefromStudentWhereSno
in(SelectSnoFromSc)
或:
selectdistinctstudent.Sno,Snamefrom
student,SCwherestudent.Sno=SC.Sno
(7)查詢年齡在20-23歲之間的學生的姓
名,系,年齡。
文檔僅供參考
selectSname,Sage,Sdeptfromstudent
whereSagebetween20and23
(8)查詢同時選修了“計算機導論”,“高
等數(shù)學”課程的學生的學號,姓名。
selectstudent.Sno,Snamefromstudent
whereNOTEXISTS(
select*fromcoursewhere
Cnamein('高等數(shù)學','計算機導論
')ANDNOTEXISTS(select*fromSC
whereSno=student.Snoand
Cno=course.Cno))
或:
selectstudent.Sno,Snamefrom
student,sc,Coursewhere
student.sno=sc.snoand
o=oandcname=,高等數(shù)學’
andstudent,snoin(selectsnofromsc
wherecno=(selectcnofromcoursewhere
文檔僅供參考
cname=,計算機導論'))
或:
selectstudent.Sno,Snamefromstudent
wheresnoin(selectsnofromscwhere
cno=(selectenofromcoursewhere
cname='高等數(shù)學'))andsnoin(select
snofromscwherecno=(selectenofrom
coursewherecname=,計算機導論’))
(9)查詢姓“張”的學生的基本信息。
select*fromstudentwhereSnamelike
'張%'
(10)查詢“95211”班學生的選課情況,
要求輸出學號,姓名,課程名,成績,按照
學號升序排序。
selectstudent.Sno,Sname,Cname,Grade
fromstudent,SC,coursewhere
文檔僅供參考
student.Sno=SC.Snoand
course.Cno=SC.Cno
andstudent.Snolike'95211%'order
bystudent.Sno
或:
selectstudent.Sno,Sname,Cname,Grade
fromstudent,SC,coursewhere
student.Sno=SC.Snoand
course.Cno=SC.Cno
andleft(student,sno,5)='95211'
orderby1
(11)查詢選修了課程的學生的總?cè)藬?shù)。
selectcount(distinctsno)fromSC
(12)查詢選修了“C05”課程的的學生成
績單,要求輸出學號,姓名,成績,結(jié)果按
班級升序,成績降序排列。
文檔僅供參考
selectstudent.Sno,Sname,Gradefrom
student,SCwherestudent.Sno=SC.Snoand
Cno='C05'orderby
left(student.Sno,5)asc,Gradedesc
(13)統(tǒng)計各門課程的成績,要求輸出課程
代號,課程名,平均成績,選修人數(shù)。(成
績?yōu)镹ULL值的不統(tǒng)計)
select
course.Cno,Cname,avg(Grade),count(Sno)
fromcourse,Scwherecourse.Cno=SC.Cno
andGradeisnotnullgroupby
Course.Cno,Cname
(14)統(tǒng)計各門課程的不及格人數(shù),要求輸
出課程代號,課程名,不及格人數(shù)。
selectCourse.Cno,Cname,count(Sno)
fromSC,CoursewhereSC.Cno=course.Cno
文檔僅供參考
andGrade<60groupby
Course.Cno,Cname
(15)查詢選修平均成績在75分以上的學
生的學號,姓名,所在系。
selectsc.sno,sname,sdeptfrom
student,scwherestudent.sno=sc.sno
groupbysc.sno,sname,sdepthaving
avg(grade)>75
或:
selectsno,sname,sdeptfromstudent
whereSnoin(SelectSnoFromSCGroup
BySnoHavingAvg(Grade)>75)
(16)查詢與“王大力”同一個系的學生的
基本信息
select*fromstudentwheresdept
in(selectsdeptfromstudentwhere
文檔僅供參考
sname=,王大力’)
(17)查詢選修平均分高于所有學生平均分
的學生的學號,并按學號升序排列。
selectstudent.Snofromstudent,SC
wherestudent.Sno=SC.Snogroupby
student.Snohavingavg(Grade)>(select
Avg(Grade)fromSC)orderbystudent.Sno
asc
(18)查詢未選修“VB”或“數(shù)據(jù)庫基礎(chǔ)”
兩門課的學生的學號,姓名,系名。(要求
用嵌套查詢)
selectsno,sname,sdeptfromstudent
wheresnonotin(selectsnofromscwhere
enoin(selectenofromcoursewhere
cnamein('VB','數(shù)據(jù)庫基礎(chǔ)')))
或:
文檔僅供參考
selectsno,sname,sdeptfromStudent
whereexists(
select*fromCoursewherecname=,VB'
andnotexists(
select*fromSCwheresno=Student.sno
andcno=Course.enoandCourse,cname!=,
數(shù)據(jù)庫基礎(chǔ),))
(19)查詢選修了全部課程的學生的學號,
姓名,系名。
selectsno,sname,sdeptfromstudent
wherenotexists(select*fromcourse
wherenotexists
(select*fromscwhere
sno=student.snoandcno=course.eno))
或:
selectsno,sname,sdeptfromstudent
wheresnoin(selectsnofromscgroup
文檔僅供參考
bysnohavingcount(eno)=(select
coount(*)fromcourse))
(20)輸出“高等數(shù)學”課程成績前三名的
學生的學號,姓名,系名
selecttop3student,sno,sname,sdept
fromstudent,sc,coursewhere
student.sno=sc.snoand
o=course.enoandcname=,高等數(shù)學’
orderbygradedesc
四、實驗小結(jié)
五、評閱成績
實驗預實驗過實驗結(jié)實驗報總成績
文檔僅供參考
習20%程20%果30%告30%
文檔僅供參考
實驗四數(shù)據(jù)更新
一、實驗目的
1、掌握SQL語言的數(shù)據(jù)更新操作
2、掌握SQLServer企業(yè)管理器的數(shù)據(jù)導
入和導出功能
二、實驗預習
1、數(shù)據(jù)插入語句格式:
2、數(shù)據(jù)修改語句格式:
3、數(shù)據(jù)刪除語句格式:
4、SQLServer中可進行批量數(shù)據(jù)導入和導
出,可支持哪些格式的數(shù)據(jù)導入導出?(舉
常見格式類型)
文檔僅供參考
三、實驗內(nèi)容和要求
(執(zhí)行操作后,將語句填寫在下面的空白
處)
1、插入數(shù)據(jù)
(1)在學生表Student中插入數(shù)據(jù):
Sno:9512102Sname:劉晨Ssex:男
Sage:20Sdept:計算機系
insertintoStudent
values('9512102'J劉晨','男',20,'計算機系')
(2)在課程表Course中插入數(shù)據(jù):
Cno:C06Cname:數(shù)據(jù)結(jié)構(gòu)Ccredit:
5Semster:4
insertintoCourse(cno,cname,ccredit,semster)
values('C06','數(shù)據(jù)結(jié)構(gòu)',5,4)
或:
insertintoCoursevalues('C06','數(shù)據(jù)結(jié)構(gòu)',5,4,null)
文檔僅供參考
(3)在選課表SC中插入95211班學生選修
C04的選課信息。
提示:插入的數(shù)據(jù)的Sno從Student表中查
詢而來,插入的Cno為“C04”
insertintoSC(sno,Cno)
selectsno,'c04'fromStudentwheresnolike'95211%'
(4)查詢高等數(shù)學的成績,包括學號,成
績,并按學號升序排序。將查詢的結(jié)果輸出
到一個名為gs_cj的表中。
selectsno,gradeintogs__cj
fromsc,o=oandcname=,高等數(shù)學'
orderbysno
(5)將SC表中“C05”課程的選課記錄輸
出至一個新表中,表名為GsOl。
select*intoGsOl
fromscwherecno=,c05*
文檔僅供參考
2、修改數(shù)據(jù)
(1)將所有學生的年齡增加1歲。
updatestudentsetsage=sage+l
(2)修改“9512101”學生的“C01”課程
成績?yōu)?5o
updatescsetgrade=85
wheresno=,951210Tandcno=,cOT
(3)修改“9531102”學生的“C01”課程
成績?yōu)?0o
updatescsetgrade=70
wheresno=,9531102,andcno=,cOT
(4)將所有平均分為75分以上的學生的各
文檔僅供參考
門課成績在原來基礎(chǔ)上增加1%。
updatescsetgrade=grade*l.01
wheresnoin
(selectsnofromscgroupbysnohavingavg(grade)>=75)
3、刪除數(shù)據(jù)
(1)刪除“9531102”學生“C05”課程的
成績記錄
deletefromscwheresno=,9531102*andcno='c05'
(2)刪除所有課程為“C05”的選課記錄
deletefromscwherecno=,c05,
4、數(shù)據(jù)的導出
(1)將數(shù)據(jù)庫中的S,P,J,SPJ表導出為一
個ACCESS數(shù)據(jù)庫,名為DB_SPJ。
(2)Student表中數(shù)據(jù)導出到一個文本文
件,用,作為數(shù)據(jù)項的分隔符。
文檔僅供參考
(3)將Course表中數(shù)據(jù)導出到一個Excel
文件中。
5、批量增加數(shù)據(jù)
(1)利用查詢,將其它表中的數(shù)據(jù)增加到
需要的數(shù)據(jù)表中。
將GsOl表中的數(shù)據(jù)添加到SC表中。(用
Insert語句實現(xiàn))
insertintoscselect*fromGsOl
(2)從外部其它數(shù)據(jù)源導入數(shù)據(jù)(選做)
-從文本文件中導入
■從ACCESS中導入數(shù)據(jù)
■從EXECEL中導入數(shù)據(jù)
文檔僅供參考
四、實驗小結(jié)
五、評閱成績
實驗預實驗過實驗結(jié)實驗報總成績
習20%程20%果30%告30%
文檔僅供參考
實驗五數(shù)據(jù)控制
一、實驗目的
1、掌握數(shù)據(jù)庫完整性約束條件的設(shè)置
2、掌握觸發(fā)器的基本使用
3、掌握SQLServer的安全性控制方法
二、實驗預習
1、關(guān)系數(shù)據(jù)庫的完整性約束有哪些?
2、什么是觸發(fā)器?其作用是什么?SQL
Server中的觸發(fā)器主要有哪些?
文檔僅供參考
三、實驗內(nèi)容和要求
1、實體完整性約束
(1)為供應商表SPJ建立完整性約束,約
束列為SNO,PNO,JNOo
方法1:在表設(shè)計器中建立,請寫出建立的
步驟:
方法2:寫出創(chuàng)立表的同時定義完整性約束
的SQL語句。
createtablespj
(
snochar(6)foreignkeyreferences
s(sno),
pnochar(6)foreignkeyreferences
文檔僅供參考
P(pno),
jnochar(6)foreignkeyreferences
j(jno),
qtysmallintdefault100,
primarykey(sno,pno,jno)
)
(2)根據(jù)實驗2中的內(nèi)容,輸入數(shù)據(jù)下面
的數(shù)據(jù),能否成功?為什么?
S1P1J1200
(3)輸入下面的數(shù)據(jù)能否成功,為什么?
S1NULLJ1200
文檔僅供參考
(4)根據(jù)上面實驗的結(jié)果,請說明實體完
整性約束的含義。
2、參照完整性約束
(1)修改Student表中記錄,將學號
9512101改為9512103,更改是否成功?若
不成功請說出原因。
updatestudentsetsno=,9512103,where
sno=951210r
(2)修改SC表中記錄,將學號為9512101
的記錄均改為學號9512109,是否更改成
功?若不成功請說出原因。
文檔僅供參考
updatescsetsno=,9512109,where
sno=9512101'
(3)設(shè)置SC表的參照完整性為更新和刪除
時均為級聯(lián)。
方法1:在表設(shè)計器中設(shè)置,請寫出設(shè)置的
步驟:
方法2:在創(chuàng)立表時同時設(shè)置參照完整性約
束,并設(shè)置規(guī)則為級聯(lián)。請寫出SQL語句。
文檔僅供參考
CREATETABLESC(
Snochar(10),
Cnochar(10),
Gradenumeric(6,2),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Cno)REFERENCES
Course(Cno)
ondeletecascadeonupdatecascade,
FOREIGNKEY(Sno)REFERENCES
Student(Sno)
ondeletecascadeonupdatecascade
)
(4)修改Student表學號9512101為
9512109,觀察SC表中相應記錄是否更新?
updatestudentsetsno=,9512109,where
sno=,951210V
文檔僅供參考
(5)在Course表中刪除課程代號為C01的
記錄,觀察SC表中選課C01的記錄是否刪
除?
deletefromcoursewherecno=,COT
3、用戶自定義完整性
(1)設(shè)置Student表的Sno輸入長度必須
為7個字符的約束。請將CHECK約束子句寫
在下面:
altertablestudentaddcheck(snolike
,3
(2)設(shè)置student表的Sdept只能為“計
算機系”,“數(shù)學系”,“信息系”,“物理系”。
請將CHECK約束子句寫在下面:
altertablestudentaddcheck(sdeptin('
計算機系’,'數(shù)學系信息系','物理系
文檔僅供參考
'))
4、觸發(fā)器
(1)定義一個觸發(fā)器,其基本功能是在SC
表中增加或修改一個選課記錄時,檢查該課
程的選課人數(shù)是否超過限定(可自行定義一
個限定值,根據(jù)表中數(shù)據(jù)的情況而定)。若
超過限定值,則拒絕操作。
觸發(fā)器代碼:
CREATETRIGGERtriglONSC
FORINSERT,UPDATE
AS
IF(SELECTCOUNT(*)FROMSCWHERE
CNO=(selectCNOfromINSERTED))>10
BEGIN
PRINT'選課人數(shù)超過上限'
文檔僅供參考
ROLLBACK
END
(2)定義一個觸發(fā)器,當刪除Student表
中數(shù)據(jù)時,先將刪除的數(shù)據(jù)插入到另一個專
門存放已刪除數(shù)據(jù)的表中(實驗時,首先定
義一個與Student表結(jié)構(gòu)相同的表用來存放
刪除的數(shù)據(jù)),然后執(zhí)行刪除操作。
觸發(fā)器代碼:
selecttop0*intosifromstudent
createtriggertrig2onstudent
fordelete
as
insertintosiselect*fromdeleted
5、用戶權(quán)限控制
(1)在自己數(shù)據(jù)庫中添加其它用戶。
(2)為添加的用戶進行授權(quán)和權(quán)限收回。
相互檢查是否獲得了相應的權(quán)限。
文檔僅供參考
sp_adduser'rjl07','rjl07'
grantselectonstudenttorjl07
grantselect,update(cname)oncourseto
rjl07
revokeselectoncoursefromrjl07
sp_dropuserJrjl07,
四、實驗小結(jié)
五、評閱成績
實驗預實驗過實驗結(jié)實驗報總成績
習20%程20%果30%告30%
文檔僅供參考
實驗六視圖與存儲過程
一、實驗目的
1、掌握視圖的定義及使用
2、掌握存儲過程的建立和調(diào)用
二、實驗預習
1、基本表與視圖有什么不同?哪種視圖能
夠更新?
2、視圖定義語句格式:
3、什么是存儲過程,其作用主要是什么?
文檔僅供參考
三、實驗內(nèi)容和要求
1、視圖(將執(zhí)行的SQL語句寫在下面)
(1)建立視圖IS_STUDENT,視圖中包含信息
系全體學生的基本信息。
createviewIS_STUDENT
as
select*fromstudentwheresdept=,信
息系'
select*fromIS_STUDENT
(2)建立視圖CJ_STUDENT,視圖中包含所有
成績不及格的學生的學號,姓名,課程名,
成績。
createviewCJ_STUDENT
as
selectsc.sno,sname,cname,gradefrom
sc,student,course
wheresc.sno=student.snoand
文檔僅供參考
o=course.enoandgrade<60
select*fromCJ_STUDENT
(3)建立視圖AVG_CJ,視圖包括學生的學
號以及她們的平均成績,按成績降序排列。
createviewavg_cj(sno,ag)
as
selectsno,avg(grade)fromscgroupby
sno
select*fromavg_cj
(4)修改視圖IS_STUDENT,將年齡均加lo
觀察基本表Student中相應的數(shù)據(jù)是否發(fā)生
變化。
updateis_studentsetsage=sage+l
select*fromisstudent
文檔僅供參考
(5)在視圖IS_STUDENT中插入新的記錄,
學號為9531103,姓名為張玉,女,21歲。
insertintois_student
valuesC9531103',‘張玉‘,'女',21,'信息
系')
select*fromis_student
(6)根據(jù)視圖AVG_CJ,查詢平均成績大于
60的學生的學號。
select*fromavg_cjwhereag>60
2、存儲過程
(1)建立存儲過程student_Gradel,功能
是查詢計算機系學生的成績,包括學號,姓
名,課程名,成績,按學號升序排序。
存儲過程代碼:
createproceduresutdent_gradel
as
文檔僅供參考
selectsc.sno,sname,cname,gradefrom
sc,student,course
wheresc.sno=student.snoand
o=course.enoandsdept=,計算機系’
orderbysc.sno
執(zhí)行存儲過程代碼:
execsutdent_gradel
(2)建立存儲過程student_Grade2,功能
是根據(jù)參數(shù)提供的系名,查詢該系學生的成
績,包括學號,姓名,課程名,成績,按學
號升序排序。
存儲過程代碼:
createproceduresutdent_grade2?sdept
char(20)
as
selectsc.sno,sname,cname,gradefrom
文檔僅供參考
sc,student,course
wheresc.sno=student.snoand
o=course.enoandsdept=@sdept
orderbysc.sno
執(zhí)行存儲過程代碼:
execsutdent_grade2'信息、系'
(3)建立存儲過程student_Grade3,功能是
根據(jù)參數(shù)提供的學生的姓名和課程名,查詢
該學生相應的課程成績,若存在不為空的成
績,則返回參數(shù)值為成績值,否則返回-1。
存儲過程代碼:
createprocedurestudent_grade3?sname
char(10),?cnamevarchar(20),?grade
smallintoutput
as
select@grade=gradefrom
student,sc,coursewhere
文檔僅供參考
student.sno=sc.snoand
o=course.enoandsname=@snameand
cname=@cname
if?gradeisnull
set@grade=-l
執(zhí)行存儲過程代碼:
declare@gsmallint
execstudent_Grade3'李勇','計算機導論
’,@goutput
print@g
(4)建立存儲過程check_Xk,功能是根據(jù)
提供的參數(shù)學號和課程號,完成選課記錄的
插入功能。要求如下:
■首先檢查該課程選課人數(shù)是否已滿(可
自己根據(jù)表中數(shù)據(jù)的情況定義一個限定
值),若滿,則返回一個0;若不滿,繼
續(xù)檢查該學生是否已經(jīng)選滿3門課程,
若滿,則返回-1,否則將選課記錄插入
文檔僅供參考
到SC表中,并返回lo
存儲過程代碼:
createprocedurecheck_xk@sno
char(7),@cnochar(10)
if(selectcount(*)fromscwhere
cno=@cno)>=80
return0
else
if(selectcount(*)fromscwhere
sno=@sno)>=3
return-1
else
begin
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上臺領(lǐng)獎感言(5篇)
- DB12T 571-2015 歷史風貌建筑安全性鑒定規(guī)程
- 中考百日誓師大會致辭
- 鐵山港課件教學課件
- 木地板課件教學課件
- 貧攻堅課件教學課件
- 變網(wǎng)絡課件教學課件
- 清新區(qū)第二中學集團九年級上學期語文期中聯(lián)考試卷
- 四年級數(shù)學(四則混合運算)計算題專項練習與答案
- 美甲店合伙開店合作協(xié)議書(2篇)
- 2023年金華市城市規(guī)劃設(shè)計院招聘筆試真題
- 江西省宜春市豐城市多校2024-2025學年五年級上學期期中數(shù)學試卷(含答案)
- 國家開放大學《Web開發(fā)基礎(chǔ)》形考任務實驗1-5參考答案
- 2024中國海油校園招聘2024人(高頻重點提升專題訓練)共500題附帶答案詳解
- 2023-2024學年教科版三年級上學期科學期中檢測試卷(含答案)
- 2024年湖北省工業(yè)建筑集團招聘筆試參考題庫含答案解析
- 污泥好氧發(fā)酵運行維護
- 《產(chǎn)品合格證》(通用格式模板)
- 電梯控制器DP30使用手冊應用篇
- (完整版)塔吊基礎(chǔ)專項施工方案(專家論證)
- 測繪專業(yè)職稱考試中級復習資料
評論
0/150
提交評論