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