1 / 14
文档名称:

数据库实验报告.pdf

格式:pdf   大小:1,330KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库实验报告.pdf

上传人:1781111**** 2024/5/11 文件大小:1.30 MB

下载得到文件列表

数据库实验报告.pdf

相关文档

文档介绍

文档介绍:该【数据库实验报告 】是由【1781111****】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【数据库实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..一):熟练掌握SQL语言实验目的:创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。实验内容:具体包括如下三部分。一、熟悉上机环境。客户/服务器结构,数据库服务器在一台NT服务器上,同学们通过客户机(操作系统为Windows2000)上安装的SQLServer客户端程序,使用SQLServer数据库服务器。具体包括:。鼠标点击开始,进入“MicrosoftSQLServer企业管理器”,点击SQLServer组下的数据库服务器(服务器名称为NEUC-201S(WindowsNT)),可以看到服务器上的圆形标志变为绿色,说明客户端程序已与服务器连接成功。点击服务器(NEUC-201S(WindowsNT))下的数据库,可以看到服务器上已建立的数据库,你可访问你有权访问的数据库,并进行相应的操作功能。因为,数据库服务器上建有许多数据库,每个数据库都有一些合法的用户。,进入“MicrosoftSQLServer?查询分析器”,输入用户名和口令,进入SQL查询分析器。如:你登录的客户机为27号,那么请以用户名user27,口令为user27登录,登录后缺省连到数据库user27上,user27/user27是数据库user27的创建者,因此用户user27/user27具有在数据库user27上创建表等一切权力。,你就可进行SQL命令语句操作了。二、在数据库useri上创建学生选课有关关系模式,并插入相应的数据,实现有关查询。、课程情况的E-R图如下,请将其转化为用关系数据模型描述的关系模式学号姓名年龄学生所在系成绩选修先行课号课程学分课号课程名学时:..TETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,FOREIGNKEY(Cpno)o));CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(o),FOREIGNKEY(Sno)REFERENCESStudent(Sno),o)o));:..4定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。不能建立主键约束,主键唯一,Student已经存在主键;ALTERTABLEStudentADDCHECK(Sage>=14ANDSage<=35);:..5如果约束建立后,请试着插入重复元组,结果如何?CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,FOREIGNKEY(Cpno)o));CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(o),FOREIGNKEY(Sno)REFERENCESStudent(Sno),o)o));ALTERTABLEStudent:..DROPconstraintPRIMARYKEY(Sno);ALTERTABLEStudentADDPRIMARYKEY(Sname);SQL完成下列查询(1)不用distinct消除重复元组,,!=(2)用distinct消除重复元组,写出其SQL语句SELECTSnoFROMSC;(3)如果该查询写成:,=?2、求开设的课程号、课程名、学时和学分,要求对查询结果的列重新命名ame,reditfromCourse:..3SelectSno,Sname,SagefromStudentwhereSdeptin('CS','MA');4、求不是数学系、计算机系的学生的情况,要求select后写*代替列出所有的列名select*!='CS'!='MA'5、求全体学生的信息,要求按年龄升序排列select*fromStudentselect*fromStudentwhereSdept='IS'andSnamelike'马%';orderbySage;6、求计算机系年龄在20~23岁之间的学生姓名和年龄selectSname,SagefromStudentwhereSage>=20andSage<=23andSdept='CS';:..7IS系学生select*fromStudentwhereSdept='IS'andSnamelike'马%';8、求选修了2课程的学生的学号、姓名、,,,==29、,,='200827%'10、求选修数学课程且成绩为80分以上的学生的学号、,Sname,,SC,==ame='数学'>8011、求计算机系每个学生的姓名,,,ameFROMSC,Course,='CS'==o:..12SelectSno,AVG(Grade)FromSCGroupbySno13、求男学生每一年龄组中超过50人的年龄组及人数selectSage,count(*)='男'groupbySagehavingcount(*)>=1;14、求每一门课程的间接先行课号15、求选修了全部课程的学生的学号SelectSnameFromStudentWherenot二):数据库的安全性和完整性实验目的:了解和使用安全子系统;进行完整性定义和检查。实验内容:具体包括如下三部分。一熟练掌握SQL(续)`udents,在其中加入一个字段性别sexchar(1):在Students表的Sno上创建唯一聚簇索引,在SC表的(o),记录的顺序有变化吗?查询SC表的内容,记录的顺序有变化吗?createuniqueclusteredindexStusnoonstudent(sno);:..oonSC(o);创建计算机系学生视图CS_Students,其中包括学号、年龄和性别。带withcheckopition子句不带withcheckopition子句时各插入一计算机系学生记录,通过视图查询插入的记录,结果如何?通过表Students查询插入的记录,查看所在系字段上的值?createviewCS_Students1asselectsno,sage,ssexfromstudentwheresdept=CS’withcheckoption:..intoCS_Studentsvalues('20082909',25,'f')不带withcheckopition子句:createviewCS_Studentsasselectsno,sage,ssexfromstudentwheresdept=CS’通过视图查询插入的记录:insertintoCS_Studentsvalues('20082909',25,'f')结果:插入成功。通过表Students查询插入的记录,查看所在系字段上的值为NULL。创建一视图,表示学生的平均成绩,其中包括Sno,avgGrade。通过该视图插入一学生姓名和平均成绩,结果如何?通过该视图查找平均成绩在90分以上的学生的学号和平均成绩,结果又如何??createviewStuavggrade(sno,avggrade)?as?selectsno,avg(Grade)?fromSC?('20082708',87)视图或函数'Stuavggrade'不可更新,因为它包含聚合。查找selectsno,avggradefromStuavggrade:..了解和使用安全子系统1sqlserver的一合法帐户(user60)加入到你的数据库当中来,并给其授权,使之:具有创建表的权限具有对Students表查询的权限具有对Studetns表的年龄字段修改的权限授权:ess'user60具有创建表的权限:grantcreatetabletouser60具有对Students表查询的权限:grantselectonStudentstouser60具有对Studetns表的年龄字段修改的权限:grantupdate(sage)onstudenttouser602、用user60/user60进入系统,完成权限验证:创建表dept(sd,mn,addr)创建视图s_view(Sno,Sage)在Students表上,实现select*fromStudentsselect*,实现select*fromcourseselect*:..updateStudetnssetSage=Sage+=Sage+1updateStudentssetSdept=CS’=CS’3你是数据库的dbo,你来查看dept表,结果如何?使用setuser命令使自己成:..后,查看dept表,结果如何?前者可以查看;后者不可以查看,没有的查看权限。完整性定义和检查1、创建表Studetns,要求学生的年龄在16和25岁之间,并且所在系的缺省取值为‘CS在Studetns表上插入一学生记录(‘9921’,‘’,’MA’,23,’f’)在Studetns表上插入一学生记录(‘9922’,‘ddd’,’MA’,27,’m’)在Studetns表上插入一学生记录(‘9923’,‘eeeee’,21,’m’)在Studetns表上插入一学生记录(‘9922’,‘ddd’,’MA’,23,’m’)createtableStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(2),SageSMALLINTcheck(Sage>=16andSage<=25),SdeptCHAR(20)default'CS');insertintoStudent(Sno,Sname,Ssex,Sage,Sdept)values('9921','','f','23','MA');insertintoStudent(Sno,Sname,Ssex,Sage,Sdept)values('9922','ddd','m','27','MA');insertintoStudent(Sno,Sname,Ssex,Sage,Sdept)values('9923','eeee','m','21');insertintoStudent(Sno,Sname,Ssex,Sage,Sdept)values('9924','ddf','f','23','MA');2、创建表course,要求课号作为主键在course表上插入一课程记录(’c9’,40,’cname1’,1)在course表上插入一课程记录(’c9’,40,’cname2’,1)在course表上插入一课程记录(null,25,’canme3’,2)结果如何?createtablecourse(cnochar(10)primarykey,:..cnamechar(20),cscorechar(10));o,ame,cscore)values('c9',40,'cname1',1)o,ame,cscore)values('c9',40,'cname2',1)o,ame,cscore)values('null',25,'cname3',2)3Studetns,指定学号为主键,然后插入一记录(9908’,’shang’,’CI’,20)插入一记录(’9908’,’shang’,’CI’,20)插入一记录(’’,’liang’,’CS’,18)插入一记录(’’,’an’,’CS’,19)结果如何?4、创建sc表,要求表sc中的学号参照表Studetns中的学号,sc中的课号参照course中的课号。参照约束创建完成后,向这三个表插入数据。先在sc表插入一个选课记录,看看有什么情况发生?先删除sc中的某个记录,看看有什么情况发生?将Studetns表中的学号9906改为9907,看看有什么情况发生?