《数据库原理及应用》实验报告 下载本文

数据库原理及应用

实验报告

实验课程: 数据库原理及应用

学 号: 2012044543003

学生姓名: 陈洪波

班 级: 12通信工程1班 2015年 4 月 22 日

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 实验一 创建和维护数据库

一、实验目的

(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。 (2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。 (3)了解手工配置MySQL 5.5 的方法。

(4)掌握MySQL 数据库的相关概念。

(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。 (6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。

二、实验要求

(1)学生提前准备好实验报告,预习并熟悉实验步骤; (2)遵守实验室纪律,在规定的时间内完成要求的内容; (3)1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

(1)在Windows 平台下安装与配置MySQL 5.5.36 版。

进入到下载页面,没看到5.5.36的版本,就选择了32位的5.5.43版本的来安装

(2)在服务对话框中,手动启动或者关闭MySQL 服务。

(3)使用Net 命令启动或关闭MySQL 服务。

(4)分别用Navicat 工具和命令行方式登录MySQL。

2

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: ①下面用Nacicat工具登录Mysql,连接测试成功的页面如下:

登录成功的页面截图如下:

②运用行命令方式登录成功的页面如下:

(5)在my.ini 文件中将数据库的存储位置改为D:\\MYSQL\\DATA。

3

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 步骤总共有四步: ① 停止Mysql服务

② 打开MySQL默认的安装文件夹C:\\Program Files\\MySQL\\MySQL Server 5.1中的my.ini文件,点击记事本顶

部的“编辑”,“查找”,在查找内容中输入datadir后并点击“查找下一个”转到“Path to the database root数据库存储主路径”参数设置,找到datadir=\and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/\即是默认的数据库存储主路径设置,现将它改到D:\\MYSQL\\DATA即可,正确的设置是datadir=\。

③将老的数据库存储主路径中的数据库文件和文件夹复制到新的存储主路径 ④重新启动MYSQL服务,这样子数据库的存储路径就完成了。

(6)创建数据库。

① 使用Navicat 创建学生信息管理数据库gradem。

② 使用SQL 语句创建数据库MyDB。 语句截图如下:

(7)查看数据库属性。

① 在Navicat 中查看创建后的gradem 数据库和MyDB 数据库的状态,查看数据库所在的文件夹。

4

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩:

② 利用SHOW DATABASES 命令显示当前的所有数据库。

(8)删除数据库。

① 使用Navicat 图形工具删除gradem 数据库。 ② 使用SQL 语句删除MyDB 数据库。

③ 利用SHOW DATABASES 命令显示当前的所有数据库。

(9)使用配置向导修改当前密码,并使用新密码重新登录。

(10)配置Path 变量,确保MySQL 的相关路径包含在Path 变量中。

5

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 四、思考题 My SQL的数据库文件有几种?扩展名分别是什么?

答:一个格式文件---.frm,一个数据文件---.isd,一个索引文件---.isd。 五、实验总结

1、收获

答:(1)在这次的实验过程中学习到了Mysql的安装过程和基本的配置,基本了解了用图形化工具Navicat和用SQL语言来删除以及创建数据库的方法。

(2)熟练掌握了数据库启动的步骤和方法,通过查阅资料深刻认识到了数据库的强大功能,易于管理的特点对人们平时工作处理一些数据表格的帮助非常巨大。 2、存在的问题

答:还不能熟练地记住一些SQL语句,接下来得在这一方面下多点功夫。

6

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 实验二 管理表

一、实验目的

(1) 掌握表的基础知识。

(2) 掌握使用Navicat管理工具和SQL语句创建表的方法。 (3) 掌握表的修改、查看、删除等基本操作方法。

二、实验要求

(1)学生提前准备好实验报告,预习并熟悉实验步骤; (2)遵守实验室纪律,在规定的时间内完成要求的内容; (3)1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

(1)在gradem数据库中创建表4.18~表4.22所示结构的表。

表4.18 student表的表结构 字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 sno char 10 否 主码 sname varchar 8 是 ssex char 2 是 sbirthday datetime 是 saddress varchar 50 是 sdept char 16 是 speciality varchar 20 是

表4.19 course表(课程名称表)的表结构

7

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 cno char 5 否 主码 cname varchar 20 否

表4.20 sc表(成绩表)的表结构 字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 sno char 10 否 组合主码、外码 cno char 5 否 组合主码、外码 degree decimal 4 1 是 1~100

表4.21 teacher表(教师表)的表结构

字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 tno char 3 否 主码 tname varchar 8 是 tsex char 2 是 tbirthday date 是 tdept char 16 是

表4.22 teaching表(授课表)的表结构

8

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 字段名称 cno tno cterm 数据类型 char char tinyint 长度 5 3 1 小数位数 0 是否允许NULL值 否 否 是 说明 组合主码、外码 组合主码、外码 1~10

(2) 向表4.18至表4.22输入数据记录,见表4.23~表4.27。 表4.23 学生关系表student sno 20050101 20050201 20050301 20050202 sname 李勇 刘晨 王敏 张立 ssex 男 女 女 男 sbirthday 1987-01-12 1988-06-04 1989-12-23 1988-08-25 saddress 山东济南 山东青岛 江苏苏州 河北唐山 sdept

speciality 计算机应用 电子商务 数学 电子商务 计算机工程系 信息工程系 数学系 信息工程系

表4.24 课程关系表course

cno

cname cno cname 9

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: C01 数据库 C03 信息系统 C02 数学 C04 操作系统

表4.25 成绩表sc

sno cno degree 20050101 C01 92 20050101 C02 85 20050101 C03 88 20050201 C02 90 20050201 C03 80

表4.26 教师表teacher

tno tname tsex tbirthday tdept 101 李新 男 1977-01-12 计算机工程系 102 钱军 女 1968-06-04 计算机工程系 201 王小花 女 1979-12-23 信息工程系 202 张小青 男 1968-08-25 信息工程系

表4.27 授课表teaching

cno tno cterm C01 101 2

10

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: C02 102 1 C03 201 3 C04 202 4

(3) 修改表结构。

① 向student表中增加“入学时间”列,其数据类型为日期时间型。 直接添加一个栏位,然后再进行相应的参数约束。 ② 将student表中的sdept字段长度改为20。 直接在navicat的设计表里面改再保存就可以了。 ③ 将student表中的speciality字段删除。

直接在图形工具里面删除整个栏位再保存就可以了 ④ 删除student表。

(4) 利用SQL命令(create table、alter table、drop table)完成对表的操作 ①利用create talbe 命令完成student表和course表的定义。 Student表的定义如下: Use gradem Creat table student (sno char(10) primary key, Sname char(8), Ssex char(2),sbirthday ,

11

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: Saddress char(50), Sdept char(16), Speciaity varchar(20));

Course表格的定义代码如下; Use gradem Creat table course (cno char(5) primary key, cname char(20));

②利用drop table命令实现(3)中的④。 Drop table student;

四、思考题

(1) MySQL中的数据库文件有几种?扩展名分别是什么? 答:数据库文件-- .mdf,次数据文件-- .ndf,日志文件-- .ldf

(2) 在定义基本表语句时,NOT NULL参数的作用是什么?

答:设置列的分量不为空值

(3) 主码可以建立在“值可以为NULL”的列上吗? 答:不行。

五、实验总结:

1、收获

答:学会了在图形工具navicat里面建立表格跟输入数据的基本操作,在命令窗口会使用SQL语句查询已建好的表格的各种信息。

2、存在的问题

12

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 实验三 简单查询——单表无条件和有条件查询

一、实验目的

(1) 掌握SELECT语句的基本用法。 (2) 使用WHERE子句进行有条件的查询。

(3) 掌握使用IN和NOT IN,BETWEEN?AND和NOT BETWEEN?AND来缩小查询范围的方法。 (4) 利用LIKE子句实现字符串匹配查询。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在上次实验建立的Gradem或Gradem1数据库中完成下面查询:

(1) 查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。 学生的基本信息:select * from student; 所有课程的基本信息:select * from course; 所有学生的成绩信息:select degree from student;

(2) 查询所有学生的学号、姓名、性别和出生日期。 Select sno,sname,sbirthday from student;

(3) 查询所有课程的课程名称。 Select cname from course;

13

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: (4) 查询前10门课程的课号及课程名称。 Select cno,cname from student limit 10;

(5) 查询所有学生的姓名及年龄。 Select sname,sage from student;

(6) 查询所有年龄大于18岁的女生的学号和姓名。 Select sno,sname from student Where sage>18;

(7) 查询所有男生的信息。 Select * from student Where ssex=?男?;

(8) 查询所有任课教师的姓名(Tname)和所在系别(Tdept)。 Select tname,tdept from teacher;

(9) 查询“电子商务”专业的学生姓名、性别和出生日期。 Select sname,ssex,sbirthday from student Where speciality=?电子商务?;

(10) 查询Student表中的所有系名。

14

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: Select sdept from student;

(11) 查询“C01”课程的开课学期。 Select cterm from teaching Where cno in(C01);

(12) 查询成绩在80~90分之间的学生学号及课号。 Select sno,cno from sc

Where degree >80 and degree <90;

(13) 查询在1970年1月1日之前出生的男教师信息。 Select * from teacher

Where tsex=?男? and tbirthday

(14) 输出有成绩的学生学号。

Select sno from sc where degree in not null;

(15) 查询所有姓“刘”的学生信息。

15

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: Select * from student where sname regexp?^刘?;

(16) 查询生源地不是山东省的学生信息。

Select * from student where not saddress=?山东青岛? and sadress=?山东济南?; (17) 查询成绩为79分、89分或99分的记录。

(18) 查询名字中第二个字是“小”字的男生的学生姓名和地址。 Select sname,saddress from student where sname like ?_小%?;

(19) 查询名称以“计算机_”开头的课程名称。 Select speciality from student where sdept regexp ?^计算机?;

(20) 查询计算机工程系和软件工程系的学生信息。

Select * from student where sdept =?计算机工程系? and sdept=?软件工程系?;

四、思考题

1、LIKE的通配符有哪些?分别代表什么含义?

答:有四种。%:代表任意长度的字符串,_:代表一个任意的字符,[]:表示指定范围内任意单个字符,[^]:表示不指定范围内任意单个字符

2、知道学生的出生日期,如何求出其年龄?

答:datediff(year,数据库里的时间段,getdate()) 就是当前时间减去数据库里的时间得到年。

3、IS能用“=”来代替吗?

4、关键字ALL和DISTINCT有什么不同的含义?

16

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 答:ALL表示所有的字段,有重复的字段,都显示,DISTINCT表示如果有重复的,只取一条,过滤掉重复的字段。

四、实验总结:

1、收获

从学习可以知道:数据库的内容是从数据表的创建和修改开始的,数据表的建立关系数据库的基本结构,它用来存储数据已经定义的属性,在数据表的操作中有:查看表的信息,查看表的属性,修改表中的数据,删除表中的数据以及修改、删除表的操作。从学习和实验报告的完成过程中我了解到,表是数据库数据中重要的一个数据对象,表建立的好坏直接影响到数据库的使用效果,表中的内容越具体对表越有利,然后对数据库中的各种应用也有着各种各样的便利。

2、存在的问题

17

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 实验四 简单查询——分组与排序

一、实验目的:

(1) 利用GROUP BY子句对查询结果分组。 (2) 利用ORDER BY子句对查询结果排序。 (3) 掌握聚集函数的使用方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Gradem或Gradem1数据库中完成下面查询: (1) 统计有学生选修的课程的门数。

(2) 计算“c01”课程的平均成绩。

(3) 查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列。

(4) 查询各个课程号及相应的选课人数。

(5) 统计每门课程的选课人数和最高分。

(6) 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。

(7) 查询选修了3门以上课程的学生学号。

(8) 查询成绩不及格的学生学号及课号,并按成绩降序排列。

(9) 查询至少选修一门课程的学生学号。

18

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: (10) 统计输出各系学生的人数

(11) 统计各系学生人数;各系的男、女生人数。(两条命令)

(12) 统计各班人数;各班男、女生人数。(两条命令)

(13) 统计各系的老师人数,并按人数升序排序。

(14) 统计不及格人数超过10人的课程号。?统计选修人数超过10人的课程号。

(15) 查询软件系的男生信息,查询结果按出生日期升序排序,出生日期相同的按地址降序排序。

三、思考题

(1) 聚集函数能否直接使用在SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中? 答:可以使用在SELECT子句跟HAVING子句中,不可用在WHERE子句跟GROUP BY子句中。

(2) WHERE子句与HAVING子句有何不同?

答:作用对象不同,WHERE子句作用于表和视图,HAVING子句作用于组。

四、实验总结:

1、收获

通过本次实验使我更加了解一些常用的SQL语句:查询语句:select,添加语句:INSERT,删除语句:DELETE等,简单掌握了怎么给表分组以及表的排序查询。有些不太会的题目通过跟同学交流以及上网查询资料,

基本都得到了解决,总的来说通过实验还能发现自己的不足之处,可以通过查缺补漏,印象会比较深刻。

19

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 2、存在的问题 一些查询语句的使用还不熟练,应该在以后多加练习,这样子才能更好地掌握这门语言的基本知识。

20

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 实验五、六、七 多表查询

一、实验目的

(1) 掌握SELECT语句在多表查询中的应用。 (2) 掌握多表连接的几种连接方式及应用。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Gradem或Gradem1数据库中完成下面查询:

(1) 查询计算机工程系女学生的学生学号、姓名及考试成绩。

(2) 查询“李勇”同学所选课程的成绩。(不考虑重名)

(3) 查询“李新”老师所授课程的课程名称。

(4) 查询女教师所授课程的课程号及课程名称。

(5) 查询至少选修一门课程的女学生姓名。

(6) 查询姓“王”的学生所学的课程名称。

(7) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。?查询姓名?

(8) 查询课程成绩及格的男同学的学生信息及课程号与成绩。

21

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: (9) 查询选修“c04”课程的学生的平均年龄。

(10) 查询学习课程名为“数学”的学生学号和姓名。

(11) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。?姓名?

(12) 查询在第3学期所开课程的课程名称及成绩。

(13) 查询“c02”号课程不及格的学生信息。

(14) 查询软件系成绩在90分以上的学生姓名、性别和课程名称。

(15) 查询同时选修了“c04”和“c02”课程的学生姓名和成绩。

三、思考题

(1) 指定一个较短的别名有什么好处?

答:用比较短的名字代替原来比较长的名字方便记忆。 (2) 内连接与外连接有什么区别?

答:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连 接)中的所有数据行。 (3) “=”与IN在什么情况下作用相同?

答:如果子查询只有一条记录,‘=’和‘IN’的作用才相同,IN可查询一条或多条记录,而=只能查询一条记录。

四、实验总结:

1、收获

2、存在的问题

22

学院实验报告

学号: 姓名: 班级: 同组者: 课程名称: 数据库原理及应用 指导老师: 实验成绩: 23