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