数据库应用基础-实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wherer.fkeyid=object_id('SC')ando.name='FK_SC_REFERENCE_STUDENT')
altertableSC
dropconstraintFK_SC_REFERENCE_STUDENT
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
13查询选修了全部课程的学生学号及姓名;
------------------------------------------------------
五、实验数据及结果分析:
(1)恢复数据库mydb,备份文件为mydb.bak;
代码:
create database STUD;
Restore database mydb from disk‘d:\mydb.bak’with replace;
4使用update命令登记你的全部课程分数,分数取值随意;
5查询你的选课记录,返回课程号、课程名、分数;
6将学号为“101”学生的学号改为“020060101”,且同时更改该所有的选课信息;
7查询年龄在指定区间(比如20—28之间)的学生姓名(通过出生日期和当前日期计算年龄year(getdate())-year(stud.birthd);
whereid=object_id('COURSE')
运行结果(截图):
>
13查询选修了全部课程的学生学号及姓名;
代码(文本):
>
selectSTUD.StudID,STUD.SNAMEfromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
groupbySTUD.StudID,STUD.SNAME
havingcount(CID)=10
运行结果(截图):
>
------------------------------------------------------
六、实验结论、心得体会和改进建议:
通过本实验,充分的运用了课堂上所学习的sql语言,加深了对数据库操作的理解并提升了对理论知识的运用能力和实践能力。
实验二:
实验学时:4学时
Use mydb;
结果:
(2)完成数据操纵和查询,给出操作代码和执行结果截图;
1添加数据库约束条件,要求学生的成绩的取值范围为“0”到“100”之间;
代码(文本):
altertableSC
addconstraintCS_SCOREcheck(SCOREbetween0and100);
运行结果(截图):
一、实验内容和目的:
学习数据库建模工具PowerDesigner设计数据库。学习数据库建模工具PowerDesigner最基本的使用方法,使用PDM(物理模型),以图形化界面方式创建表及确定各表之间的关系;通过物理模型生成创建数据库的脚本。
二、实验原理:
(1)使用PowerDesigner设计一个数据库物理模型,在实验报告中给出模型图;
fromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
groupbySTUD.StudID,SNAME
运行结果(截图):
>
10统计每门课程的选课情况,返回:课程号、最高分、最低分、平均分;
代码(文本):
>
selectCOURSE.CID课程,max(SCORE)最高分,min(SCORE)最低分,avg(SCORE)平均分
wherer.fkeyid=object_id('COURSE')ando.name='FK_COURSE_REFERENCE_TEACHER')
altertableCOURSE
dropconstraintFK_COURSE_REFERENCE_TEACHER
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
运行结果(截图):
>
12查询既选修了1号课程,又选修了2号课程的学生学号和姓名。
代码(文本):
>
selectdistinctSTUD.StudID学号,STUD.SNAME学生姓名
fromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
where(SC.CID='6001'orSC.CID='6002');
updateSTUDsetStudID='020060101'where(StudID='101');
运行结果(截图):
>
7查询年龄在指定区间(比如20—28之间)的学生姓名(通过出生日期和当前日期计算年龄year(getdate())-year(stud.birthd);
代码(文本):
>
selectSNAMEfromSTUDwhere(year(getdate())-year(STUD.BIRTHD)between20and28);
运行结果(截图):
>
8查询姓“张”的学生的学号、姓名、邮件地址;
代码(文本):
>
selectStudID,SNAME,EMAILfromSTUDwhere(SNAMElike'蒋%');
运行结果(截图):
>
9统计每个学生的选课情况,返回:学号、姓名、选课门数、总学分数;
代码(文本):
>
selectSTUD.StudID学号,SNAME姓名,count(CID)选课门数,sum(SCORE)总学分数
/*==============================================================*/
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
四、实验步骤:
(1)恢复数据库mydb,备份文件为mydb.bak;
(2)完成数据操纵和查询,给出操作代码和执行结果截图;
1添加数据库约束条件,要求学生的成绩的取值范围为“0”到“100”之间;
2将你的学生信息添加到学生表中,要求学号姓名为真实数据,其它字段随意;
3你要选修全部课程,使用一条SQL语句实现该功能;
运行结果(截图):
>
3你要选修全部课程,使用一条SQL语句实现该功能;
代码(文本):
>
//由于本来没有数据,先插入一条
insertintoSC(StudID,CID,TID,SCORE)values('2017060201009','6004','T05',90);
selectcnamefromSCinnerjoinCOURSEon(SC.CID=COURSE.CID)where(StudID='2017060201009');
wherer.fkeyid=object_id('SC')ando.name='FK_SC_REFERENCE_COURSE')
altertableSC
dropconstraintFK_SC_REFERENCE_COURSE
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('TEACHER')ando.name='FK_TEACHER_REFERENCE_DEP')
altertableTEACHER
dropconstraintFK_TEACHER_REFERENCE_DEP
go
ifexists(select1
fromsysobjects
fromCOURSEinnerjoinSCon(COURSE.CID=SC.CID)
groupbyCOURSE.CID
运行结果(截图):
>
11查询每门课程获得最高分的学生信息,返回课程号、课程名、最高分、学号、姓名;
代码(文本):
>
selectCOURSE.CID课程号,CNAME课Baidu Nhomakorabea名,SCORE最高分,STUD.StudID学号,SNAME姓名
8查询姓“张”的学生的学号、姓名、邮件地址;
9统计每个学生的选课情况,返回:学号、姓名、选课门数、总学分数;
10统计每门课程的选课情况,返回:课程号、最高分、最低分、平均分;
11查询每门课程获得最高分的学生信息,返回课程号、课程名、最高分、学号、姓名;
12查询既选修了1号课程,又选修了2号课程的学生学号和姓名。
运行结果(截图):
>
4使用update命令登记你的全部课程分数,分数取值随意;
代码(文本):
>
updateSCsetSCORE=95where(StudID='2017060201009')
运行结果(截图):
>
5查询你的选课记录,返回课程号、课程名、分数;
代码(文本):
>
selectCOURSE.CIDcourseId,cnamecourseName,SCOREfromSCinnerjoinCOURSEon(SC.CID=COURSE.CID)where(StudID='2017060201009')
wherer.fkeyid=object_id('STUDENT')ando.name='FK_STUDENT_REFERENCE_DEP')
altertableSTUDENT
dropconstraintFK_STUDENT_REFERENCE_DEP
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
2将你的学生信息添加到学生表中,要求学号姓名为真实数据,其它字段随意;
代码(文本):
>
insertintoSTUD(StudID,DEPID,SNAME,sex,BIRTHD,EMAIL,HOMEADDR)
values('2017060201009','603','蒋程','男','1998/04/22','111@gmail.com','电子科技大学学知苑四组团');
fromCOURSEinnerjoinSCon(COURSE.CID=SC.CID)innerjoinSTUDon(SC.StudID=STUD.StudID)
where(SCOREin(selectmax(SCORE)fromSCwhere(COURSE.CID=SC.CID)))
groupbyCOURSE.CID,COURSE.CNAME,SC.SCORE,STUD.StudID,STUD.SNAME
运行结果(截图):
>
6将学号为“101”学生的学号改为“020060101”,且同时更改该所有的选课信息;
代码(文本):
>
//由于外键约束没有级联,故先更新外键约束
altertableSCdropconstraintFK_sc_stud;
altertableSCaddconstraintFK_sc_studforeignkey(StudID)referencesSTUD(StudID)onupdatecascade;
模型图为(贴图):
>
2.生成创建数据库的代码;
自动生成的代码(文本):
>
/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2005 */
/* Created on: 2019/5/16 14:47:11 */
实验报告
评 分:
日 期: 2019年5月16日
实验一:(名称)
实验学时:
一、实验内容和目的:
使用SQL语言对数据库进行操作,从而理解数据库的增删改查的过程。
二、实验原理:
数据库库的完整性、约束条件、结构化查询语言。
三、实验器材(设备、元器件)
Microsoft SQL server Management Studio
(2)通过该模型生成数据库脚本,在实验报告中给出生成的脚本;
注:报告中不需要给出设计过程的描述。
三、实验器材(设备、元器件)
PowerDesigner
四、实验步骤:
1.使用PowerDesigner画出基于sqlserver的物理模型图;
2.生成创建数据库的代码;
五、实验数据及结果分析:
1.使用PowerDesigner画出基于sqlserver的物理模型图;
altertableSC
dropconstraintFK_SC_REFERENCE_STUDENT
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
13查询选修了全部课程的学生学号及姓名;
------------------------------------------------------
五、实验数据及结果分析:
(1)恢复数据库mydb,备份文件为mydb.bak;
代码:
create database STUD;
Restore database mydb from disk‘d:\mydb.bak’with replace;
4使用update命令登记你的全部课程分数,分数取值随意;
5查询你的选课记录,返回课程号、课程名、分数;
6将学号为“101”学生的学号改为“020060101”,且同时更改该所有的选课信息;
7查询年龄在指定区间(比如20—28之间)的学生姓名(通过出生日期和当前日期计算年龄year(getdate())-year(stud.birthd);
whereid=object_id('COURSE')
运行结果(截图):
>
13查询选修了全部课程的学生学号及姓名;
代码(文本):
>
selectSTUD.StudID,STUD.SNAMEfromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
groupbySTUD.StudID,STUD.SNAME
havingcount(CID)=10
运行结果(截图):
>
------------------------------------------------------
六、实验结论、心得体会和改进建议:
通过本实验,充分的运用了课堂上所学习的sql语言,加深了对数据库操作的理解并提升了对理论知识的运用能力和实践能力。
实验二:
实验学时:4学时
Use mydb;
结果:
(2)完成数据操纵和查询,给出操作代码和执行结果截图;
1添加数据库约束条件,要求学生的成绩的取值范围为“0”到“100”之间;
代码(文本):
altertableSC
addconstraintCS_SCOREcheck(SCOREbetween0and100);
运行结果(截图):
一、实验内容和目的:
学习数据库建模工具PowerDesigner设计数据库。学习数据库建模工具PowerDesigner最基本的使用方法,使用PDM(物理模型),以图形化界面方式创建表及确定各表之间的关系;通过物理模型生成创建数据库的脚本。
二、实验原理:
(1)使用PowerDesigner设计一个数据库物理模型,在实验报告中给出模型图;
fromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
groupbySTUD.StudID,SNAME
运行结果(截图):
>
10统计每门课程的选课情况,返回:课程号、最高分、最低分、平均分;
代码(文本):
>
selectCOURSE.CID课程,max(SCORE)最高分,min(SCORE)最低分,avg(SCORE)平均分
wherer.fkeyid=object_id('COURSE')ando.name='FK_COURSE_REFERENCE_TEACHER')
altertableCOURSE
dropconstraintFK_COURSE_REFERENCE_TEACHER
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
运行结果(截图):
>
12查询既选修了1号课程,又选修了2号课程的学生学号和姓名。
代码(文本):
>
selectdistinctSTUD.StudID学号,STUD.SNAME学生姓名
fromSTUDinnerjoinSCon(STUD.StudID=SC.StudID)
where(SC.CID='6001'orSC.CID='6002');
updateSTUDsetStudID='020060101'where(StudID='101');
运行结果(截图):
>
7查询年龄在指定区间(比如20—28之间)的学生姓名(通过出生日期和当前日期计算年龄year(getdate())-year(stud.birthd);
代码(文本):
>
selectSNAMEfromSTUDwhere(year(getdate())-year(STUD.BIRTHD)between20and28);
运行结果(截图):
>
8查询姓“张”的学生的学号、姓名、邮件地址;
代码(文本):
>
selectStudID,SNAME,EMAILfromSTUDwhere(SNAMElike'蒋%');
运行结果(截图):
>
9统计每个学生的选课情况,返回:学号、姓名、选课门数、总学分数;
代码(文本):
>
selectSTUD.StudID学号,SNAME姓名,count(CID)选课门数,sum(SCORE)总学分数
/*==============================================================*/
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
四、实验步骤:
(1)恢复数据库mydb,备份文件为mydb.bak;
(2)完成数据操纵和查询,给出操作代码和执行结果截图;
1添加数据库约束条件,要求学生的成绩的取值范围为“0”到“100”之间;
2将你的学生信息添加到学生表中,要求学号姓名为真实数据,其它字段随意;
3你要选修全部课程,使用一条SQL语句实现该功能;
运行结果(截图):
>
3你要选修全部课程,使用一条SQL语句实现该功能;
代码(文本):
>
//由于本来没有数据,先插入一条
insertintoSC(StudID,CID,TID,SCORE)values('2017060201009','6004','T05',90);
selectcnamefromSCinnerjoinCOURSEon(SC.CID=COURSE.CID)where(StudID='2017060201009');
wherer.fkeyid=object_id('SC')ando.name='FK_SC_REFERENCE_COURSE')
altertableSC
dropconstraintFK_SC_REFERENCE_COURSE
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
wherer.fkeyid=object_id('TEACHER')ando.name='FK_TEACHER_REFERENCE_DEP')
altertableTEACHER
dropconstraintFK_TEACHER_REFERENCE_DEP
go
ifexists(select1
fromsysobjects
fromCOURSEinnerjoinSCon(COURSE.CID=SC.CID)
groupbyCOURSE.CID
运行结果(截图):
>
11查询每门课程获得最高分的学生信息,返回课程号、课程名、最高分、学号、姓名;
代码(文本):
>
selectCOURSE.CID课程号,CNAME课Baidu Nhomakorabea名,SCORE最高分,STUD.StudID学号,SNAME姓名
8查询姓“张”的学生的学号、姓名、邮件地址;
9统计每个学生的选课情况,返回:学号、姓名、选课门数、总学分数;
10统计每门课程的选课情况,返回:课程号、最高分、最低分、平均分;
11查询每门课程获得最高分的学生信息,返回课程号、课程名、最高分、学号、姓名;
12查询既选修了1号课程,又选修了2号课程的学生学号和姓名。
运行结果(截图):
>
4使用update命令登记你的全部课程分数,分数取值随意;
代码(文本):
>
updateSCsetSCORE=95where(StudID='2017060201009')
运行结果(截图):
>
5查询你的选课记录,返回课程号、课程名、分数;
代码(文本):
>
selectCOURSE.CIDcourseId,cnamecourseName,SCOREfromSCinnerjoinCOURSEon(SC.CID=COURSE.CID)where(StudID='2017060201009')
wherer.fkeyid=object_id('STUDENT')ando.name='FK_STUDENT_REFERENCE_DEP')
altertableSTUDENT
dropconstraintFK_STUDENT_REFERENCE_DEP
go
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='F')
2将你的学生信息添加到学生表中,要求学号姓名为真实数据,其它字段随意;
代码(文本):
>
insertintoSTUD(StudID,DEPID,SNAME,sex,BIRTHD,EMAIL,HOMEADDR)
values('2017060201009','603','蒋程','男','1998/04/22','111@gmail.com','电子科技大学学知苑四组团');
fromCOURSEinnerjoinSCon(COURSE.CID=SC.CID)innerjoinSTUDon(SC.StudID=STUD.StudID)
where(SCOREin(selectmax(SCORE)fromSCwhere(COURSE.CID=SC.CID)))
groupbyCOURSE.CID,COURSE.CNAME,SC.SCORE,STUD.StudID,STUD.SNAME
运行结果(截图):
>
6将学号为“101”学生的学号改为“020060101”,且同时更改该所有的选课信息;
代码(文本):
>
//由于外键约束没有级联,故先更新外键约束
altertableSCdropconstraintFK_sc_stud;
altertableSCaddconstraintFK_sc_studforeignkey(StudID)referencesSTUD(StudID)onupdatecascade;
模型图为(贴图):
>
2.生成创建数据库的代码;
自动生成的代码(文本):
>
/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2005 */
/* Created on: 2019/5/16 14:47:11 */
实验报告
评 分:
日 期: 2019年5月16日
实验一:(名称)
实验学时:
一、实验内容和目的:
使用SQL语言对数据库进行操作,从而理解数据库的增删改查的过程。
二、实验原理:
数据库库的完整性、约束条件、结构化查询语言。
三、实验器材(设备、元器件)
Microsoft SQL server Management Studio
(2)通过该模型生成数据库脚本,在实验报告中给出生成的脚本;
注:报告中不需要给出设计过程的描述。
三、实验器材(设备、元器件)
PowerDesigner
四、实验步骤:
1.使用PowerDesigner画出基于sqlserver的物理模型图;
2.生成创建数据库的代码;
五、实验数据及结果分析:
1.使用PowerDesigner画出基于sqlserver的物理模型图;