数据库实验报告.docx

上传人:b****1 文档编号:11082703 上传时间:2023-05-29 格式:DOCX 页数:32 大小:314.79KB
下载 相关 举报
数据库实验报告.docx_第1页
第1页 / 共32页
数据库实验报告.docx_第2页
第2页 / 共32页
数据库实验报告.docx_第3页
第3页 / 共32页
数据库实验报告.docx_第4页
第4页 / 共32页
数据库实验报告.docx_第5页
第5页 / 共32页
数据库实验报告.docx_第6页
第6页 / 共32页
数据库实验报告.docx_第7页
第7页 / 共32页
数据库实验报告.docx_第8页
第8页 / 共32页
数据库实验报告.docx_第9页
第9页 / 共32页
数据库实验报告.docx_第10页
第10页 / 共32页
数据库实验报告.docx_第11页
第11页 / 共32页
数据库实验报告.docx_第12页
第12页 / 共32页
数据库实验报告.docx_第13页
第13页 / 共32页
数据库实验报告.docx_第14页
第14页 / 共32页
数据库实验报告.docx_第15页
第15页 / 共32页
数据库实验报告.docx_第16页
第16页 / 共32页
数据库实验报告.docx_第17页
第17页 / 共32页
数据库实验报告.docx_第18页
第18页 / 共32页
数据库实验报告.docx_第19页
第19页 / 共32页
数据库实验报告.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库实验报告.docx

《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(32页珍藏版)》请在冰点文库上搜索。

数据库实验报告.docx

数据库实验报告

实验1.1

(1)

原因是percent好像是系统的关键字。

忘记了加主键网上查有这个,如果没设NOTnull,先设好

同样方法设置PRODUENTS表却有问题,提示

已经有PRODUENTS对象,无法添加完整性约束。

后上网发现原来,constraint后是完整性约束的名字,上面的成功因为打错字。

2)

(3)

(4)

(5)

1.2

实验1.2

1.2

(1)select*fromCOURSES

(2)selectsidfromCHOICES

wherecidisnotnull

(3)selectCIDfromCOURSES

wherehour<88

(4)selectsidfromCHOICES

groupbysid

havingsum(score)>400

selectscorefromCHOICES

wheresid=822863200

(5)

selectcount(DISTINCTCID)fromCOURSES

(6)selectCID,count(CID)fromCHOICES

GROUPBYCID

(7)selectsidfromCHOICES

wherescore>60

groupbysid

havingcount(*)>2

(8)selectsid,count(cid),avg(score)fromCHOICES

groupbysid

(9)

SELECTSNAME,STUDENTS.SID

FROMCOURSES,STUDENTS,CHOICES

WHERECOURSES.CID=CHOICES.CID

ANDCHOICES.SID=STUDENTS.SID

ANDCNAME='Java'

结果:

共6110条记录

(10)

使用等值连接:

SELECTCID,SCORE

FROMSTUDENTS,CHOICES

WHERECHOICES.SID=STUDENTS.SID

ANDSNAME='sssht'

使用谓词IN:

SELECTCID,SCORE

FROMCHOICES

WHERESIDIN

(SELECTSID

FROMSTUDENTS

WHERESNAME='sssht')

结果:

共5条记录

(11)

SELECTCNAME

FROMCOURSES

WHEREHOUR>

(SELECTHOUR

FROMCOURSES

WHERECNAME='C++')

结果:

共5条记录

(12)

SELECTCHOICES.SID,SNAME

FROMCOURSES,STUDENTS,CHOICES

WHERECHOICES.SID=STUDENTS.SID

ANDCHOICES.CID=COURSES.CID

ANDCNAME='C++'

ANDSCORE>

(SELECTSCORE

FROMCOURSES,STUDENTS,CHOICES

WHERECHOICES.SID=STUDENTS.SID

ANDCHOICES.CID=COURSES.CID

ANDCNAME='C++'

ANDSNAME='znkoo')

结果:

共2065条记录

(13)

SELECTSNAME

FROMSTUDENTS

WHEREGRADEIN

(SELECTGRADE

FROMSTUDENTS

WHERESID='883794999'ORSID='850955252')

结果:

共13372条记录

(14)

SELECTDISTINCTSNAME

FROMSTUDENTS,COURSES,CHOICES

WHERECHOICES.SID=STUDENTS.SID

ANDCHOICES.CID=COURSES.CID

ANDCNAMENOTIN('Java')

结果:

共99548条记录

(15)

SELECTCID,CNAME,HOUR

FROMCOURSES

WHEREHOUR<=ALL

(SELECTHOUR

FROMCOURSES)

结果:

共2条记录

(16)

SELECTTID,CID

FROMCHOICES

WHERETIDIN

SELECTTID

FROMTEACHERS

WHERESALARY=

(SELECTMAX(SALARY)

FROMTEACHERS)

GROUPBYTID,CID

结果:

共73条记录,共4名教师

(17)

SELECTSID

FROMCHOICES

WHERESCORE=

(SELECTMAX(SCORE)

FROMCHOICES

WHERECID=

(SELECTCID

FROMCOURSES

WHERECNAME='ERP'))

结果:

共5963条记录

(18)

SELECTCNAME

FROMCOURSES

WHERECIDNOTIN

(SELECTCID

FROMCHOICES)

结果:

无数据

(19)

SELECTDISTINCTCID

FROMCHOICES

WHERETIDIN

(SELECTTID

FROMCHOICES

WHERECID=(

SELECTCID

FROMCOURSES

WHERECNAME='UML'))

结果:

共50条记录

(20)

SELECTSNAMEFROMSTUDENTS

WHERENOTEXISTS

(SELECT*

FROMCHOICESASC1

WHERENOTEXISTS

(SELECT*

FROMCHOICESASC2

WHEREC2.SID=STUDENTS.SID

ANDC2.CID=C1.CID

ANDC2.TID='200102901'))

结果:

无数据

(21)

SELECTSID

FROMCHOICES,COURSES

WHERECHOICES.CID=COURSES.CID

ANDCOURSES.CNAME='database'

UNION

SELECTSID

FROMCHOICES,COURSES

WHERECHOICES.CID=COURSES.CID

ANDCOURSES.CNAME='UML'

结果:

共11297条记录

(22)

SELECTX.SID

FROMCHOICESASX,CHOICESASY

WHERE(X.CID=

(SELECTCID

FROMCOURSES

WHERECNAME='database')

ANDY.CID=

(SELECTCID

FROMCOURSES

WHERECNAME='UML'))

ANDX.SID=Y.SID

结果:

共317条记录

(23)

SELECTX.SID

FROMCHOICESASX,CHOICESASY

WHERE(X.CID=

(SELECTCID

FROMCOURSES

WHERECNAME='database'))

ANDX.SID=Y.SID

ANDNOT(Y.CID=

(SELECTCID

FROMCOURSES

WHERECNAME='UML'))

结果:

共21383条记录

实验1.3

(1)

INSERTINTOSTUDENTS(SID,SNAME)

VALUES('800022222','WangLan')

(2)

INSERTINTOTEACHERS

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

(3)

UPDATETEACHERS

SETSALARY=4000

WHERETID='200010493'

(4)

UPDATETEACHERS

SETSALARY=2500

WHERESALARY<2500

结果:

(5)

UPDATECHOICES

SETTID=

(SELECTTID

FROMTEACHERS

WHERETNAME='rnupx')

WHERETID='200016731'

结果:

(6)

UPDATESTUDENTS

SETGRADE=2001

WHERESID='800071780'

(7)

DELETEFROMCOURSES

WHERECIDNOTIN

(SELECTCID

FROMCHOICES

GROUPBYCID)

(8)

DELETEFROMSTUDENTS

WHEREGRADE<1998

这样执行会提示错误,因为CHOICES表中的SID外键参照STUDENTS表,要先去除外键约束,或者删除CHOICES表中的相关约束。

(9)

DELETEFROMSTUDENTS

WHERESIDNOTIN

(SELECTSID

FROMCHOICES

GROUPBYSID)

(10)

DELETEFROMCHOICES

WHERESCORE<60

结果:

实验1.4

(1)

CREATEVIEWVIEWCAS

SELECTCHOICES.NO,CHOICES.SID,CHOICES.TID,CHOICES.SCORE,COURSES.CNAME

FROMCHOICES,COURSES

WHERECHOICES.CID=COURSES.CID

(2)

CREATEVIEWVIEWSAS

SELECTCHOICES.NO,STUDENTS.SNAME,CHOICES.TID,CHOICES.CID,CHOICES.SCORE

FROMCHOICES,STUDENTS

WHERECHOICES.SID=STUDENTS.SID

(3)

CREATEVIEWS1(SID,SNAME,GRADE)AS

SELECTSTUDENTS.SID,STUDENTS.SNAME,STUDENTS.GRADE

FROMSTUDENTS

WHEREGRADE>1998

(4)

SELECT*

FROMVIEWS

WHERESNAME='uxjof'

结果:

(5)

SELECTSID,SCORE

FROMVIEWC

WHERECNAME='UML'

结果:

共5253条记录

(6)

INSERTINTOS1

VALUES('60000001','Lily',2001)

(7)

CREATEVIEWS2(SID,SNAME,GRADE)AS

SELECTSID,SNAME,GRADE

FROMSTUDENTS

WHEREGRADE>1998

WITHCHECKOPTION

插入:

INSERTINTOS2

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

结果:

DELETEFROMS2

WHEREGRADE=1999

结果:

(8)

UPDATEVIEWS

SETSCORE=SCORE+5

WHERESNAME='uxjof'

结果:

(9)

DROPVIEWVIEWC

DROPVIEWVIEWS

DROPVIEWS1

DROPVIEWS2

实验1.5

(1)

GRANTSELECT

ONSTUDENTS

TOPUBLIC

(2)

GRANTSELECT,UPDATE

ONCOURSES

TOPUBLIC

(3)

GRANTSELECT,UPDATE(SALARY)

ONTEACHERS

TOUSER1

WITHGRANTOPTION

(4)

GRANTSELECT,UPDATE(SCORE)

ONCHOICES

TOUSER2

(5)

CREATEVIEWTVAS

SELECTTID,TNAME,EMAIL,SALARY

FROMTEACHERS

GRANTSELECT

ONTV

TOUSER2

(6)

GRANTSELECT

ONTEACHERS

TOUSER2

WITHGRANTOPTION

(7)

USER2的操作:

GRANTSELECT

ONTEACHERS

TOUSER3

WITHGRANTOPTION

USER3的操作:

GRANTSELECT

ONTEACHERS

TOUSER2

WITHGRANTOPTION

(8)

REVOKESELECT

ONTEACHERS

FROMUSER1CASCADE

(9)

REVOKESELECT,UPDATE

ONCOURSES

FROMUSER1,USER2

实验1.6

(1)

SELECTCID,HOUR*18

FROMCOURSES

对NULL做算术运算结果为NULL

结果:

共50条记录

(2)

选修C++课程的人数为5307人:

SELECTCOUNT(*)

FROMCHOICES

WHERECID=

(SELECTCID

FROMCOURSES

WHERECNAME='C++')

其中,合格人数为4817:

SELECTCOUNT(*)

FROMCHOICES

WHERECID=

(SELECTCID

FROMCOURSES

WHERECNAME='C++')

ANDSCORE>='60'

不合格人数为0人:

SELECTCOUNT(*)

FROMCHOICES

WHERECID=

(SELECTCID

FROMCOURSES

WHERECNAME='C++')

ANDSCORE<'60'

成绩为NULL的人数为490人:

SELECTCOUNT(*)

FROMCHOICES

WHERECID=

(SELECTCID

FROMCOURSES

WHERECNAME='C++')

ANDSCOREISNULL

总结:

在比较运算中,NULL不参与比较,因此会导致合格人数加上不合格人数不等于总人数的情况。

(3)

SELECTCHOICES.SID,SCORE

FROMCHOICES,COURSES

WHERECHOICES.CID=COURSES.CID

ANDCNAME='C++'

ORDERBYSCORE

NULL结果出现在结果集中,并且按照最小值处理

结果:

共5307条记录

(4)

SELECTDISTINCTCHOICES.SID,SCORE

FROMCHOICES,COURSES

WHERECHOICES.CID=COURSES.CID

ANDCNAME='C++'

ORDERBYSCORE

成绩为NULL排在最前面

结果:

共5301条记录

(5)

SELECTDISTINCTGRADE

FROMSTUDENTS

GROUPBYGRADE

结果:

得到15个组,实际有14个年纪,原因是,把NULL当做了一个分组。

(6)

SELECTAVG(SCORE),COUNT(*),MAX(SCORE),MIN(SCORE)

FROMCHOICES

GROUPBYCID

结果:

共50条记录

集合函数中,COUNT(*)会统计NULL值,而其余COUNT(列名)则会不计NULL值,其余聚合函数,则会忽略NULL的取值。

(7)

SELECTGRADE

FROMSTUDENTS

WHEREGRADE>=ALL

(SELECTGRADE

FROMSTUDENTS)

利用上面的查询语句不能查询出结果,可能因为存在NULL值,因此尝试了下面的语句:

SELECTGRADE

FROMSTUDENTS

WHEREGRADE>=ALL

(SELECTGRADE

FROMSTUDENTS

WHEREGRADEISNOTNULL)

得到结果为2004,果真因为在比较>=ALL的时候,因为存在NULL值,不能做比较。

(8)

SELECTCOUNT(*)

FROMS,T

WHERET.TID=S.SID

实验2.1

(1)

USESCHOOL

CreateTableClass

Class_idvarchar(4),namevarchar(10),Deparmentvarchar(20)

constraintPK_ClassPrimarykey(Class_id)

(2)

USESCHOOL

BeginTransactionT3

insertintoClassvalues('0001','01CSC','CS')

BeginTransactionT4

insertintoClassvalues('0001','01CSC','CS')

CommitTransactionT4

CommitTransactionT3

实验2.2

(1)

AltertableSC

dropconstraintFK__SC__cno__03F0984C;

AltertableSC

addconstraintFK__SC__cnoforeignkey(cno)

referencesCourse(cno)ondeleterestrict;

USESCHOOL

deletefromStu_Unionwheresno='10001';

select*fromSC;

USESCHOOL

deletefromCoursewherecno='0002';

select*fromSC;

(2)

AltertableSC

dropconstraintFK__SC__cno__03F0984C;

AltertableSC

addconstraintFK__SC__cnoforeignkey(cno)

referencesCourse(cno)ondeletesetnull;

USESCHOOL

deletefromStu_Unionwheresno='10001';

select*fromSC;

USESCHOOL

deletefromCoursewherecno='0002';

select*fromSC;

(3)

CREATETABLEhelp

sidchar(8),snamevarchar(20),help_idchar(8)NOTNULL

CONSTRAINTPK_helpprimarykey(sid)

altertablehelp

addconstraintFK_helpforeignkey(help_id)referenceshelp(sid)

(4)

CREATETABLEleader

sidchar(9),snamevarchar(20),myleaderchar(9)

CONSTRAINTPK_leaderprimarykey(sid)

CREATETABLEmonitor

sidchar(9),snamevarchar(20),mymonitorchar(9)

constraintPK_monitorprimarykey(sid)

constraintFK_monitorforeignkey(mymonitor)referencesleader(sid)

altertableleader

addconstraintFK_leaderforeignkey(myleader)referencesmonitor(sid)

实验2.3

(1)

useschool

altertableworker

addconstraintU3check(sage>=0);

(2)

useschool

Go

createrulerule_sageas@valuebetween1and100

Go

Execsp_bindrulerule_sage,'worker.[sage]';

实验2.4

(1)

useschool

go

createtriggerT4onworker

forinsert

as

if(selectsagefrominserted)<=(selectmax(sage)fromworker)

begin

print'Thesageofcouplemustbemorethantheexistedcouples’sage'

Rollbacktransaction

End

useschool

insertintoworkervalues('00003','李红','F',50,'开发部')

(2)

useschool

go

createtriggerT5onworker

forupdate

as

if(selectsagefrominserted)<=(selectsagefromdeleted)

begin

print'Thesageofnewcouplemustbemorethanthesageofoldcouple'

Rollbacktransaction

End

useschool

updateworkersetsage=10wherenumber='00001'

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2