电子科技大学 数据库原理及应用 实验报告 计算机学院Word文档下载推荐.docx
《电子科技大学 数据库原理及应用 实验报告 计算机学院Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子科技大学 数据库原理及应用 实验报告 计算机学院Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。
本实验要求学生掌握创建数据库的方法及相关操作,向数据库中添加样本数据,学习SQLSERVER数据库的恢复和备份。
4、实验原理:
使用数据库管理系统DB、DDL创建数据库及数据库对象
5、实验器材(设备、元器件)
MySQLWorkBench,安装了MySQL的阿里云服务器一台
6、实验步骤:
远端使用CentOS7.3,从MySQL官网上配置好MySQL5.7的源之后安装启动服务
安装好MySQLServer5.7之后配置好安全选项,比如关闭远程root登录保证安全,打开允许远程连接数据库等
使用root账号登录,创建一个普通用户(如图)
为了方便起见…给用户ROOT操作权限
打开本机的MySQLWorkBench
新建一个查询,开始写建库建表的语句
createdatabasedb2015060501024;
usedb2015060501024;
createtabledep(
depidvarchar(8)primarykey,
depanmevarchar(20)notnull
);
createtableteacher(
tidvarchar(8)primarykey,
tnamevarchar(8)notnull,
titlevarchar(10),
depidvarchar(20),
createtablestudent(
sidvarchar(11)primarykey,
snamevarchar(8)notnull,
sexChar
(2)notnull,
birthddate,
semailvarchar(20),
homeaddrvarchar(40),
createtablecourse(
cidvarchar(8)primarykey,
cnamevarchar(30)notnull,
cid_prevarchar(8),
creditsnumeric(3,1)notnull
createtablesc(
sidvarchar(8)notnull,
cidvarchar(8)notnull,
tidvarchar(8)notnull,
scoreinteger,
primarykey(sid,cid)
数据库的备份
在mysql服务器主机上执行命令
mysqldump-uroot-pN?
/ua2qLaORS--all-databases>
backup.sql
-u用户名–p密码
这里使用了root用户
--all-databases备份所有数据库,并导出到backup.sql文件
数据库的恢复
mysql-uroot-pN?
/ua2qLaORS<
7、实验数据及结果分析:
如上图所示
8、实验结论、心得体会和改进建议:
使用mysql熟悉了数据库的建立,表的建立,数据库整体备份还原。
实验二
数据库的完整性
4
通过设置表的检查约束、外键约束体会数据库完整性的含义,约束条件下数据修改操作的限制,以及实现修改操作的技巧。
数据库库的完整性、约束条件、结构化查询语言。
阿里云服务器一台,MySQLWorkBench
在实验一的基础上增加外键约束,Check约束
纯手动输入命令
depnamevarchar(20)notnull
)characterset=utf8;
constraintteacher_fkforeignkey(depid)referencesdep(depid)
sidvarchar(15)primarykey,
constraintstudent_fkforeignkey(depid)referencesdep(depid),
check(sexin('
男'
'
女'
)),
check(find_in_set('
@'
semail))
sidvarchar(11)notnull,
constraintsc_fk_sidforeignkey(sid)referencesstudent(sid),
constraintsc_fk_cidforeignkey(cid)referencescourse(cid),
constraintsc_fk_tidforeignkey(tid)referencesteacher(tid),
primarykey(sid,cid),
check(score>
=0andscore<
=100)
接下来制造一些表内的数据,方便之后的实验(在之后的试验中还有增加,这里就不给出了)
insertintodep
values('
001'
计算机科学与工程'
002'
微电子与固体电子'
insertintoteacher
000001'
'
胡旺'
副教授'
000002'
俸志刚'
讲师'
insertintostudent(sid,sname,sex,depid)
060201035'
张三'
030204028'
李四'
060102027'
王五'
030201012'
老六'
045201012'
刘七'
insertintocourse
100'
C++程序设计'
null,4.0);
101'
离散数学'
null,3.0);
102'
数据结构'
4.0);
insertintosc
100);
59);
80);
77);
62);
如上所示。
注意,需要在建表的同时使用utf8字符集。
这点在后来加入数据时进行了修改,否则不支持中文
代码在2.sql文件以及2add.sql文件中
学习了使用外键约束,check约束
实验三
数据的修改
练习UPDATE、DELETE命令的使用,实现对数据的修改和删除。
使用结构化查询语言,在满足约束条件的情况下完成数据修改
阿里云服务器一台,电脑一台
手动输入sql语句
updatedep
setdepname='
Information'
wheredepid='
;
/*将院系中,院系名改为Information*/
deletefromsc
wheresidin(selectsidfromstudentwheredepid='
)andcid='
/*在选课表中,删除计算机科学与工程系学生选修2号课程的记录*/
/*在选课表中,删除软件工程系学生选课1号课程的纪录记录*/
insertintostudent(sid,sname,sex,depid,birthd,semail,homeaddr)
select'
2406030102'
sname,sex,depid,birthd,semail,homeaddrfromstudent
wheresid='
updatescsetsid='
wheresid='
deletefromstudentwheresid='
/*学号为2406010103的同学由原来的计算机科学与工程系转入信息安全系,学号更改为2406030102,在数据库中做出相应修改*/
使用了update语句修改
学习了当外键约束存在的时候如何进行修改
(即修改学号的步骤)
Sql语句保存在3.sql文件中
外键的存在可以很好的对数据进行约束,防止一些修改的过程中出现不合法的数据。
实验四
简单查询、多表查询
练习用SELECT查询语句,设置查询条件,实现单表查询。
练习使用SELECT语句从多个表中查询数据,表的内连接、左外连接、右外连接的使用以及设置连接条件,理解连接条件和查询条件的在目的和功能上的区别
结构化查询语言、表的连接、关系运算
●查询年龄在20—22之间的学生姓名(通过出生日期和当前日期计算年龄,方法见第八章)
selectsname
fromstudent
whereFLOOR(DATEDIFF(CURDATE(),birthd)/365.2422)<
=22andFLOOR(DATEDIFF(CURDATE(),birthd)/365.2422)>
=20;
●查询年龄在20—22之间的学生姓名、院系和年龄(忘记截图)
selectsname,depname,FLOOR(DATEDIFF(CURDATE(),birthd)/365.2422)
fromstudent,dep
wherestudent.depid=dep.depidand(DATEDIFF(CURDATE(),birthd)/365.2422)<
●查询姓’张’的学生的学号、姓名、邮件地址
selectsid,sname,semail
wheresnamelike'
张%'
●查询所有有成绩(成绩不为空)的学生学号和课程号
selectsid,cidfromscwherescore>
0;
●查询选修了2号课程成绩在60分以下的所有学生的学号、姓名、学生的邮件地址、课程名、教师姓名和教师的邮件地址及课程成绩
selectstudent.sid,student.sname,student.semail,ame,teacher.tname,sc.score
fromstudent,course,teacher,sc
wheresc.sid=student.sidandsc.cid=course.cidandsc.tid=teacher.tidandsc.score<
60;
●查询既选修了1号课程,又选修了2号课程的学生学号
selectdistinctsid
fromsc
wheresidin(selectsidfromscwherecid='
)andsidin(selectsidfromscwherecid='
使用了多种select语句
使用了多种连接方式
语句保存在4.sql内
查询使用的不熟练,效率还可以提升
实验五
分组统计查询
练习使用聚集函数count(),max(),min(),avg()等在SQL命令中实现统计功能。
使用GROUPBY子句实现分组查询,以及聚集函数在分组查询中的应用。
体会分组查询的功能特点。
结构化查询语言、分组查询、集函数
●查询选修数据库并成绩在60分以上的人数
●求每个学生的选课的门数,显示学号和选课门数
●求每个学生选课的总学分数,显示学号和学分
●求每个学生的总成绩,显示学号和总成绩
●求每门课程的平均成绩,并显示课程名及平均成绩
●求每门课程的学生选修人数,并显示课程名及选修人数
●求选修了5门以上课程的学生姓名及邮件地址
使用了groupby与having语句实现了分组的功能
语句在5.sql文件内
分组的语句能方便的实现很多功能
实验六
集合操作、子查询
IN、EXISTS、NOTEXISTS运算在WHERE子句中的应用;
静态集合和由SELECT命令产生的动态结果集运算。
结构化查询语言、集合运算、子查询
●查询其他系中比信息系(depid=’IS’)某一学生年龄小的学生姓名和年龄
●查询没有选修任何课程的学生姓名、所在院系及邮件地址
●查询选修了全部课程的学生姓名
●查询既选修了1号课程,又选修了2号课程的学生姓名
使用了联合查询
使用嵌套的查询完成复杂的工作,保存在6.sql内
联合查询使得复杂的查询逻辑变成一条语句,提高了效率