电子科技大学 数据库原理及应用 实验报告 2017 计算机学院
计算机专业类课程
课程名称:数据库原理及应用 学 院:计算机科学与
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
学院 专 业:数字媒体技术
学生姓名:tss
学 号:2015060501
指导教师:胡旺
日 期: 2017年4月26日
电子科技大学计算机学院实验中心
电 子 科 技 大 学
实 验 报 告
实验一
一、实验名称:创建、备份与恢复数据库
二、实验学时:2
三、实验内容和目的:
本实验要求学生掌握创建数据库的方法及相关操作,向数据库中添加样本数据,学习SQLSERVER数据库的恢复和备份。
四、实验原理:
使用数据库管理系统DB、DDL创建数据库及数据库对象 五、实验器材(设备、元器件)
MySQL WorkBench, 安装了MySQL的阿里云服务器一台 六、实验步骤:
远端使用CentOS7.3,从MySQL官网上配置好MySQL5.7的源之后安装启动服务 安装好MySQL Server 5.7之后配置好安全选项,比如关闭远程root登录保证安全,打开允许远程连接数据库等
使用root账号登录,创建一个普通用户(如图)
为了方便起见…给用户ROOT操作权限
打开本机的MySQL WorkBench 新建一个查询,开始写建库建表的语句
电子科技大学计算机学院实验中心
create database db2015060501024; use db2015060501024;
create table dep(
depid varchar(8) primary key,
depanme varchar(20) not null );
create table teacher(
tid varchar(8) primary key,
tname varchar(8) not null,
title varchar(10),
depid varchar(20),
);
create table student(
sid varchar(11) primary key,
sname varchar(8) not null,
sex Char(2) not null,
depid varchar(20),
birthd date,
semail varchar(20),
homeaddr varchar(40), );
create table course(
cid varchar(8) primary key,
cname varchar(30) not null,
cid_pre varchar(8),
credits numeric(3,1) not null );
create table sc(
sid varchar(8) not null,
cid varchar(8) not null,
tid varchar(8) not null,
score integer,
primary key(sid,cid) );
电子科技大学计算机学院实验中心
数据库的备份
在mysql服务器主机上执行命令
mysqldump -uroot -pN?/ua2qLaORS --all-databases > backup.sql
-u用户名 –p 密码
这里使用了root用户
--all-databases 备份所有数据库,并导出到backup.sql文件
数据库的恢复
mysql -uroot -pN?/ua2qLaORS < backup.sql 七、实验数据及结果分析:
如上图所示
八、实验结论、
心得体会
决胜全面小康心得体会学党史心得下载党史学习心得下载军训心得免费下载党史学习心得下载
和改进建议:
使用mysql熟悉了数据库的建立,表的建立,数据库整体备份还原。
电 子 科 技 大 学
实 验 报 告
实验二 一、实验名称:数据库的完整性
二、实验学时:4
三、实验内容和目的:
通过设置表的检查约束、外键约束
体会
针灸治疗溃疡性结肠炎昆山之路icu常用仪器的管理名人广告失败案例两会精神体会
数据库完整性的含义,约束条件下数据
修改操作的限制,以及实现修改操作的技巧。 四、实验原理:
数据库库的完整性、约束条件、结构化查询语言。 五、实验器材(设备、元器件)
阿里云服务器一台,MySQL WorkBench 六、实验步骤:
在实验一的基础上增加外键约束,Check约束 纯手动输入命令
电子科技大学计算机学院实验中心
create database db2015060501024; use db2015060501024;
create table dep(
depid varchar(8) primary key,
depname varchar(20) not null )character set = utf8;
create table teacher(
tid varchar(8) primary key,
tname varchar(8) not null,
title varchar(10),
depid varchar(20),
constraint teacher_fk foreign key(depid) references dep(depid)
)character set = utf8;
create table student(
sid varchar(15) primary key,
sname varchar(8) not null,
sex Char(2) not null,
depid varchar(20),
birthd date,
semail varchar(20),
homeaddr varchar(40),
constraint student_fk foreign key(depid) references dep(depid),
check(sex in ('男', '女')),
check(find_in_set('@',semail)) )character set = utf8;
create table course(
cid varchar(8) primary key,
cname varchar(30) not null,
cid_pre varchar(8),
credits numeric(3,1) not null )character set = utf8;
create table sc(
sid varchar(11) not null,
cid varchar(8) not null,
tid varchar(8) not null,
score integer,
constraint sc_fk_sid foreign key(sid) references student(sid),
constraint sc_fk_cid foreign key(cid) references course(cid),
constraint sc_fk_tid foreign key(tid) references teacher(tid),
primary key(sid,cid),
check(score >= 0 and score <= 100) )character set = utf8;
接下来制造一些表内的数据,方便之后的实验(在之后的试验中还有增加,这里就不给出了)
电子科技大学计算机学院实验中心
insert into dep
values('001', '计算机科学与工程');
insert into dep
values('002', '微电子与固体电子');
insert into teacher
values('000001','胡旺','副教授','001');
insert into teacher
values('000002','俸志刚','讲师','001');
insert into student(sid,sname,sex,depid)
values('060201035','张三','男','001');
insert into student(sid,sname,sex,depid)
values('030204028','李四','男','001');
insert into student(sid,sname,sex,depid) values('060102027','王五','男','001');
insert into student(sid,sname,sex,depid) values('030201012','老六','女','001');
insert into student(sid,sname,sex,depid) values('045201012','刘七','女','001');
insert into course
values('100','C++程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
',null,4.0);
insert into course
values('101','离散数学',null,3.0);
insert into course
values('102','数据结构','100',4.0);
insert into sc
values('060201035','100','000001',100); insert into sc
values('030204028','100','000002',59); insert into sc
values('045201012','100','000001',80); insert into sc
values('045201012','101','000001',77); insert into sc
values('045201012','102','000002',62); 七、实验数据及结果分析:
如上所示。
注意,需要在建表的同时使用utf8字符集。这点在后来加入数据时进行了 修改,否则不支持中文
代码在2.sql文件以及2add.sql文件中
八、实验结论、心得体会和改进建议:
学习了使用外键约束,check约束
电子科技大学计算机学院实验中心
电 子 科 技 大 学
实 验 报 告
实验三
一、实验名称:数据的修改
二、实验学时:4
三、实验内容和目的:
练习UPDATE、DELETE命令的使用,实现对数据的修改和删除。 四、实验原理:
使用结构化查询语言,在满足约束条件的情况下完成数据修改 五、实验器材(设备、元器件)
阿里云服务器一台,电脑一台
六、实验步骤:
手动输入sql语句
update dep
set depname='Information'
where depid='001'; /* 将院系中,院系名改为Information */
delete from sc
where sid in (select sid from student where depid='001') and cid='102'; /* 在选课表中,删除计算机科学与工程系学生选修2号课程的
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
*/
delete from sc
where sid in (select sid from student where depid='002') and cid='101'; /*在选课表中,删除软件工程系学生选课1号课程的纪录记录*/
insert into student(sid,sname,sex,depid,birthd,semail,homeaddr) select '2406030102',sname,sex,depid,birthd,semail,homeaddr from student where sid='060201035';
update sc set sid='2406030102' where sid='060201035';
delete from student where sid='060201035';
/* 学号为2406010103的同学由原来的计算机科学与工程系转入信息安全系,学号更改为2406030102,
在数据库中做出相应修改*/
电子科技大学计算机学院实验中心
七、实验数据及结果分析:
使用了update语句修改
学习了 当外键约束存在的时候如何进行修改
(即修改学号的步骤)
Sql语句保存在3.sql文件中
八、实验结论、心得体会和改进建议:
外键的存在可以很好的对数据进行约束,防止一些修改的过程中出现不合
法的数据。
电 子 科 技 大 学
实 验 报 告
实验四
一、实验名称:简单查询、多表查询
二、实验学时:2
三、实验内容和目的:
练习用SELECT查询语句,设置查询条件,实现单表查询。练习使用SELECT
语句从多个表中查询数据,表的内连接、左外连接、右外连接的使用以及设置
连接条件,理解连接条件和查询条件的在目的和功能上的区别 四、实验原理:
结构化查询语言、表的连接、关系运算
五、实验器材(设备、元器件)
阿里云服务器一台,MySQL WorkBench 六、实验步骤:
手动输入sql语句
电子科技大学计算机学院实验中心
, 查询年龄在20—22之间的学生姓名(通过出生日期和当前日期计算年龄,方法见第八章)
select sname
from student
where FLOOR(DATEDIFF(CURDATE(), birthd)/365.2422) <= 22 and FLOOR(DATEDIFF(CURDATE(), birthd)/365.2422) >= 20;
, 查询年龄在20—22之间的学生姓名、院系和年龄(忘记截图)
select sname,depname,FLOOR(DATEDIFF(CURDATE(), birthd)/365.2422) from student,dep
where student.depid=dep.depid and (DATEDIFF(CURDATE(), birthd)/365.2422) <= 22 and
FLOOR(DATEDIFF(CURDATE(), birthd)/365.2422) >= 20; , 查询姓’张’的学生的学号、姓名、邮件地址
select sid,sname,semail
from student
where sname like '张%';
, 查询所有有成绩(成绩不为空)的学生学号和课程号
select sid,cid from sc where score>0;
, 查询选修了2号课程成绩在60分以下的所有学生 的学号、姓名、学生的邮件地址、课程名、教师
姓名和教师的邮件地址及课程成绩
select student.sid,student.sname,student.semail,course.cname,teacher.tname,sc.score from student,course,teacher,sc
where sc.sid=student.sid and sc.cid=course.cid and sc.tid=teacher.tid and sc.score<60; , 查询既选修了1号课程,又选修了2号课程的学生学号
select distinct sid
from sc
where sid in (select sid from sc where cid='101') and sid in (select sid from sc where cid='100');
电子科技大学计算机学院实验中心
七、实验数据及结果分析:
使用了多种select语句
使用了多种连接方式
语句保存在4.sql内
八、实验结论、心得体会和改进建议:
查询使用的不熟练,效率还可以提升
电 子 科 技 大 学
实 验 报 告
实验五 一、实验名称:分组统计查询
二、实验学时:4
三、实验内容和目的:
练习使用聚集函数count(),max(),min(),avg()等在SQL命令中实现统计功能。使
用GROUP BY子句实现分组查询,以及聚集函数在分组查询中的应用。体会
分组查询的功能特点。
四、实验原理:
结构化查询语言、分组查询、集函数
五、实验器材(设备、元器件)
阿里云服务器一台,电脑一台
六、实验步骤:
手动输入sql语句
, 查询选修数据库并成绩在,,分以上的人数
电子科技大学计算机学院实验中心
, 求每个学生的选课的门数,显示学号和选课门数
, 求每个学生选课的总学分数,显示学号和学分
, 求每个学生的总成绩,显示学号和总成绩
, 求每门课程的平均成绩,并显示课程名及平均成绩
, 求每门课程的学生选修人数,并显示课程名及选修人数
电子科技大学计算机学院实验中心
, 求选修了5门以上课程的学生姓名及邮件地址
七、实验数据及结果分析:
使用了group by与having语句实现了分组的功能
语句在5.sql文件内
八、实验结论、心得体会和改进建议:
分组的语句能方便的实现很多功能
电 子 科 技 大 学
实 验 报 告
实验六 一、实验名称:集合操作、子查询
二、实验学时:2
三、实验内容和目的:
IN、EXISTS、NOT EXISTS 运算在WHERE子句中的应用;静态集合和由
SELECT命令产生的动态结果集运算。
四、实验原理:
结构化查询语言、集合运算、子查询
五、实验器材(设备、元器件)
阿里云服务器一台,电脑一台
六、实验步骤:
手动输入sql语句
, 查询其他系中比信息系(depid=’IS’)某一学生年龄小的学生姓名和年龄
电子科技大学计算机学院实验中心
, 查询没有选修任何课程的学生姓名、所在院系及邮件地址
, 查询选修了全部课程的学生姓名
, 查询既选修了1号课程,又选修了2号课程的学生姓名
七、实验数据及结果分析:
使用了联合查询
使用嵌套的查询完成复杂的工作,保存在6.sql内 八、实验结论、心得体会和改进建议:
联合查询使得复杂的查询逻辑变成一条语句,提高了效率
电子科技大学计算机学院实验中心