数据库应用基础实验报告.docx
- 文档编号:5449976
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:7
- 大小:18.58KB
数据库应用基础实验报告.docx
《数据库应用基础实验报告.docx》由会员分享,可在线阅读,更多相关《数据库应用基础实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
数据库应用基础实验报告
电子科技大学
实验报告
1、实验一:
名称创建数据库
2、实验学时:
4
3、实验内容和目的:
实验要求学生掌握创建数据库的方法及相关操作,并且创建一个包含五个表的数据库STUD:
系别代码表表名dep,教师表表名teacher,学生表表名stud,课程表表名course,选课表表名sc。
4、实验原理:
本实验主要是“createtable表名(列名1类型1(not)null,列名2类型2(not)null,……,primarykey(列名));”语句的应用,来实现表的建立。
同时还可能用到“droptable表名”,“altertable表名dropcolumn列名”等语句。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
具体步骤见实验指导书。
7、实验数据及结果分析:
createtableCOURSE
(CIDVARCHAR(8)notnull,CNAMEVARCHAR(30)notnull,CID_PREVARCHAR(8),CREDITSNUMERIC(3,1)notnull,primarykey(CID));
createtableDEP
(DEPIDVARCHAR(8)notnull,DEPNAMEVARCHAR(20)notnull,primarykey(DEPID));
createtableSC
(SIDVARCHAR(11)notnull,CIDVARCHAR(8)notnull,TIDvarchar(8)notnull,SCOREINTEGER,primarykey(sid,cid,tid));
createtableSTUDENT
(SIDVARCHAR(11)notnull,SNAMEVARCHAR(8)notnull,sexchar
(2)notnull,DEPIDVARCHAR(20),BIRTHDDATETIME,SEMAILVARCHAR(20),HOMEADDRVARCHAR(40),primarykey(SID));
createtableTEACHER
(TIDvarchar(8)notnull,TNAMEvarchar(8)notnull,TITLEVARCHAR(10),DEPIDVARCHAR(20),primarykey(TID));
8、实验结论:
心得体会和改进建议:
确实可以用createtable语句实现数据库表的创建,一开始就要想好各个表的分配和各种定义的合理性,避免以后大幅度的改动表。
1、实验二:
名称备份和恢复
2、实验学时:
4
3、实验内容和目的:
向数据库中添加样本数据,学习DB2数据库的恢复和备份。
4、实验原理:
利用分离与附加实现数据的备份与恢复。
用“insertinto表名values(列名1类型1(not)null,列名2类型2(not)null,……)”语句实现向表中添加数据。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中用insert语句输入准备的数据。
7、实验数据及结果分析:
insertintodepvalues('601','计算机科学与工程');
insertintodepvalues('602','软件工程');
insertintodepvalues('603','信息安全');
insertintodepvalues('604','IS');
insertintoteachervalues('T01','教师1','教授','601');
insertintoteachervalues('T02','教师2','工程师','601');
insertintoteachervalues('T03','教师3','副教授','602');
insertintoteachervalues('T04','教师4','讲师','602');
insertintoteachervalues('T05','教师5','高工','603');
insertintoteachervalues('T06','教师6','高工','603');
insertintocoursevalues('6001','计算机组成原理',null,3);
insertintocoursevalues('6002','操作系统','6001',3);
insertintocoursevalues('6003','数据结构',null,3);
insertintocoursevalues('6004','数据库原理',null,3);
insertintocoursevalues('6011','数据库应用开发',null,2);
insertintocoursevalues('6005','ComputerNetwork',null,2);
insertintocoursevalues('6006','ObjectedJAVA',null,2);
insertintocoursevalues('6007','SoftwareEngeneering','6006',2);
insertintocoursevalues('6008','UNIXBasic',null,2);
insertintocoursevalues('6009','UNIXOSDesign','6008',2);
insertintostudentvalues('601','张1','男','602','1990-10-20','587627416@','四川');
insertintostudentvalues('2406010103','张2','女','601','1991-06-10','123627416@','湖南');
insertintostudentvalues('2406030101','王1','男','603','1990-05-06','4827416@','新疆');
insertintostudentvalues('2406020105','王2','女','602','1990-07-15','90627416@','云南');
insertintostudentvalues('2406030110','吴1','女','603','1991-08-14','367627416@','广西');
insertintoscvalues('601','6002','T03',50);
insertintoscvalues('2406010103','6002','T02',60);
insertintoscvalues('2406030101','6001','T01',70);
insertintoscvalues('2406020105','6004','T04',80);
insertintoscvalues('2406030110','6006','T06',90);
8、实验结论、心得体会和改进建议:
插入数据要仔细,以免不必要的麻烦。
1、实验三:
名称数据库的完整性
2、实验学时:
4
3、实验内容和目的:
通过设置表的检查约束、外键约束体会数据库完整性的含义,约束条件下数据修改操作的限制,以及实现修改操作的技巧。
4、实验原理:
用“altertable表名addconstraint约束名check条件”,“altertable表名1addconstraint外键名foreignkey(列名)references表名2(列名)”分别实现检查约束与设置外键约束的功能。
以及用“deletefrom表名where条件”,“update表名set列名=()where条件”来删除和修改满足条件的数据。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中输入相应代码。
7、实验数据及结果分析:
altertablescaddconstraintfk_sc_student_sidforeignkey(sid)
referencesstudent(sid);
altertablescaddconstraintfk_sc_teacher_tidforeignkey(tid)
referencesteacher(tid);
altertablescaddconstraintfk_sc_course_cidforeignkey(cid)
referencescourse(cid);
altertablestudentaddconstraintcheck_student_sname
check(snameisnotnull);
altertablescaddconstraintcheck_sc_course
check(score>=0andscore<=100);
altertablestudentaddconstraintcheck_student_sex
check(sex='男'orsex='女');
altertablestudentaddconstraintcheck_student_semail
check(semaillike'%@%');
deletefromscwhere(sid='601');
updatestudentsetsid='20060601'where(sid='601');
insertintoscvalues('20060601','6002','T03',50);
8、实验结论、心得体会和改进建议:
注意按一定的习惯来书写约束名和键名,以便利于修改和删除。
1、实验四:
名称数据的修改
2、实验学时:
4
3、实验内容和目的:
练习UPDATEV、DELETE命令的使用,实现对数据的修改和删除。
4、实验原理:
用“deletefrom表名where条件”,“update表名set列名=()where条件”来删除和修改满足条件的数据。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中输入相应代码。
7、实验数据及结果分析:
updatedepsetdepname='Information'
where(depname='IS');
deletefromscwhere(sidlike'%601%'andcid='6002');
deletefromscwhere(sidlike'%603%'andcid='6001');
deletefromscwhere(sid='2406010103');
updatestudentsetsid='2406030102'where(sid='2406010103');
insertintoscvalues('2406030102','6002','T02',60);
8、实验结论、心得体会和改进建议:
对于要修改和删除的数据需要注意主外键。
比如对于要修改被引用外键的数据,需要先删除被引用外键的数据,才能顺利修改或删除。
1、实验五:
名称简单查询、多表查询
2、实验学时:
4
3、实验内容和目的:
练习用SELECT查询语句,设置查询条件,实现单表查询。
练习使用SELECT语句从多个表中查询数据,表的内连接、左外连接、右外连接的使用以及设置连接条件,理解连接条件和查询条件的目的和功能上的区别。
4、实验原理:
用“select列名1(as列名),列名2……from表名where查询条件”来实现有条件的简单查询。
用“select*from表名1join表名2on连接条件having(where)查询条件”语句来实现多表连接查询。
以及用union,except,intersect来实现查找结果的并、差、交操作。
还有用“datediff(year,生日,现在日期)”语句实现年龄的计算。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中输入相应代码。
7、实验数据及结果分析:
selectsnamefromstudentwhere(datediff(year,birthd,'2011-10-7')between20and22);
selectsname,datediff(year,birthd,'2011-10-7')asyear,depnamefromstudentjoindeponstudent.depid=dep.depidwheredatediff(year,birthd,'2011-10-7')between20and22;
select*fromteacherwheretitle='副教授';
selectsid,sname,semailfromstudentwheresnamelike'张%';
selectsid,cidfromscwherescoreisnotnull;
selectstudent.*,sc.cid,sc.tid,sc.scorefromstudentjoinsconstudent.sid=sc.sid;
selectstudent.*,cname,tname,scorefrom((scjoinstudentonstudent.sid=sc.sid)jointeacheronteacher.tid=sc.tid)joincourseoncourse.cid=sc.cidwherescore<60;
(selectsidfromscwherecid='6001')intersect(selectsidfromscwherecid='6002');
8、实验结论、心得体会和改进建议:
用union,except,intersect实现查询结果的并、差、交时,表的列数必须一样,结果列名显示前一个表的。
查询时,是根据引用的表及算法得出的一个集合,原来的表没有任何变化。
并且可以用“as新列名”为查询结果的列重新命名。
多表连接查询时,因为会有两行的连接条件,不要用它作查询条件。
还有查询项可以是引用表的表达式或函数,查询条件一样可以。
1、实验六:
名称分组统计查询
2、实验学时:
4
3、实验内容和目的:
练习使用聚集函数count(),max(),min(),avg(),sum()等在SQL命令中实现统计功能。
使用GROUPBY子句实现分组查询,以及聚集函数在分组查询中的应用。
体会分组查询的功能特点。
4、实验原理:
用“select列名,聚集函数from表名groupbyhaving查询条件”或“select列名,聚集函数from表名where包含‘列名’的的查询条件”来实现分组查询。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中输入相应代码。
7、实验数据及结果分析:
selectcount(*)as'选修数据库课程的人数'fromscwherecid='6003';
selectsidas'学号',count(cid)as'选课门数'fromscgroupbysid;
selectsidas'学号',sum(score)as'总成绩'fromscgroupbysid;
selectcount(sid)as'选修数据库课且成绩分以上人数'fromsc
wheresidin(selectsidfromscwherecid='6003'andscore>=60);
selectscoreas'数据库课最高成绩',snameas'姓名'fromscjoinstudentonsc.sid=student.sidwherescore=(selectmax(score)fromscgroupbycidhavingcid='6003');
selectcnameas'课程名',avg(score)as'平均成绩'fromscjoincourseonsc.cid=course.cidgroupbycname;
selectcnameas'课程名',count(sid)as'选课人数'fromscjoincourseonsc.cid=course.cidgroupbycname;
selectsnameas'选修5门课以上学生姓名',semailfromstudent
wheresidin(selectsidfromscgroupbysidhavingcount(cid)>=5);
8、实验结论、心得体会和改进建议:
分组查询作为查询主体时,只能显现分组列名和聚集函数部分。
把他放在条件位置,作为查询条件集合时,能够实现多列甚至是多表连接的多列的显示。
另外聚集函数可以不显示,而作为查询条件出现,跟在having后。
1、实验七:
名称集合操作、子查询
2、实验学时:
4
3、实验内容和目的:
IN、EXISTS、NOTEXISTS运算在WHERE子句中的应用;静态集合和由SELECT命令产生的动态结果集运算。
4、实验原理:
子查询即把查询的结果当做另一个查询的条件,通过嵌套语句来实现复杂的查询。
因为子查询的结果很可能是一个集合,需要运用集合之间的运算,比如in、exists、notexists的运用。
5、实验器材(设备、元器件)操作系统:
Windows2000/XP编程环境:
SQLServerManagementStudio
6、实验步骤:
用附加命令载入数据库,然后在相应新建查询中输入相应代码。
7、实验数据及结果分析:
selectsnameas'姓名',datediff(year,birthd,'2011-10-7')as'年龄'fromstudent
wherebirthd>(selectbirthdfromstudentwheredepid='603'andsid='2406030101');
selectsname,depname,semailfromstudentjoindeponstudent.depid=dep.depid
wheresidin((selectsidfromstudent)except(selectsidfromsc));
selectsnamefromstudentwheresidin(selectsidfromscgroupbysidhavingcount(cid)=(selectcount(cid)fromcourse));
selectsnamefromstudentwheresidin(selectsidfromscwherecid='6002'intersectselectsidfromscwherecid='6001');
8、实验结论、心得体会和改进建议:
对于子查询是集合的情况,是不能跟在=,>,<>等条件运算符后面的。
对于聚集函数本身是查询结果时,where和having后面只能定义与聚合函数有关的条件。
可以通过添加子查询的方式,来实现多条件查询条件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 基础 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)