《数据库原理与应用实验》实验报告册学年第学期学院:专业:年级:姓名:学号:任课教师:MySQL+Navicat安装步骤与下载地址百度地址:配置与简单使用百度地址:本文档所书写的代码,为本人纯手工敲打,并且通过软件测试成功,欢迎大家进行学习,如有错误,可联系本人实验一创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 的方法。
(2)掌握启动服务并登录MySQL 数据库的方法和步骤。
(3)掌握MySQL 数据库的相关概念。
(4)掌握使用Navicat 工具和SQL 语句创建数据库的方法。
(5)掌握使用Navicat 工具和SQL 语句删除数据库的方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 版。
(2)在服务对话框中,手动启动或者关闭MySQL 服务。
(3)使用Net 命令启动或关闭MySQL 服务。
(4)分别用Navicat 工具和命令行方式登录MySQL。
(5)在文件中将数据库的存储位置改为D:\MYSQL\DATA。
(6)创建数据库。
①使用Navicat 创建学生信息管理数据库gradem。
②使用SQL 语句创建数据库MyDB。
(7)删除数据库。
①使用Navicat 图形工具删除gradem 数据库。
②使用SQL 语句删除MyDB 数据库。
常见的数据库产品有哪些五、实验总结1、收获2、存在的问题实验二管理表一、实验目的(1) 掌握表的基础知识。
(2) 掌握使用Navicat管理工具和SQL语句创建表的方法。
(3) 掌握表的修改、查看、删除等基本操作方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;三、实验内容及步骤(1)在gradem数据库中创建表~表所示结构的表。
表 student表的表结构表 course表(课程名称表)的表结构表 sc表(成绩表)的表结构表 teaching表(授课表)的表结构(2) 向表至表输入数据记录,见表~表。
表课程关系表course表成绩表sc表教师表teacher表授课表teaching(3)在navicat下修改表结构。
①向student表中增加“入学时间”列,其数据类型为日期时间型。
②将student表中的sdept字段长度改为20。
③将student表中的speciality字段删除。
④删除student表。
(4) 利用SQL命令(create table、alter table、drop table)完成对表的操作①利用create talbe 命令完成student表和course表的定义。
②利用alter table、drop table命令实现(3)中的所有任务。
四、思考题(1) 在定义基本表语句时,NOT NULL参数的作用是什么(2) 主码可以建立在“值可以为NULL”的列上吗五、实验总结:1、收获2、存在的问题实验三简单查询——单表无条件和有条件查询一、实验目的(1) 掌握SELECT语句的基本用法。
(2) 使用WHERE子句进行有条件的查询。
(3) 掌握使用IN和NOT IN,BETWEEN…AND和NOT BETWEEN…AND来缩小查询范围的方法。
(4) 利用LIKE子句实现字符串匹配查询。
二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;三、实验内容及步骤在上次实验建立的Gradem或Gradem1数据库中完成下面查询:(1) 查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。
SELECT *FROM student;SELECT *FROM course;SELECT *FROM sc;(2) 查询所有学生的学号、姓名、性别和出生日期。
SELECT sno,sname,ssex,sbirthdayFROM student;(3) 查询所有课程的课程名称。
SELECT cnameFROM course(4) 查询前10门课程的课号及课程名称。
SELECT cno,cnameFROM courseWHERE cno<=10(5) 查询所有学生的姓名及年龄。
SELECT sname ,year(now())-year(sbirthday)FROM student;(6) 查询所有年龄大于18岁的女生的学号和姓名。
SELECT sno,snameFROM studentWHERE ssex='女'and year(now())-year(sbirthday)>18(7) 查询所有男生的信息。
SELECT *FROM student,teacherWHERE ssex='男'and tsex='男'(8) 查询所有任课教师的姓名(Tname)和所在系别(Tdept)。
SELECT tname,tdeptFROM teacher(9) 查询“电子商务”专业的学生姓名、性别和出生日期。
SELECT sname,ssex,sbirthdayFROM studentWHERE sdept='电子商务'(10) 查询Student表中的所有系名。
SELECT sdeptFROM student(11) 查询“C01”课程的开课学期。
SELECT ctermFROM teachingWHERE cno='c01'(12) 查询成绩在80~90分之间的学生学号及课号。
SELECT sno,cnoFROM scWHERE degree BETWEEN 80 and 90(13) 查询在1970年1月1日之前出生的男教师信息。
SELECT *FROM teacherWHERE tbirthday<'1970-01-01'and tsex=’男’;(14) 输出有成绩的学生学号。
SELECT snoFROM scWHERE degree is NOT NULL;(15) 查询所有姓“刘”的学生信息。
SELECT *FROM studentWHERE sname LIKE'刘%'(16) 查询生源地不是山东省的学生信息。
SELECT *FROM studentWHERE saddress NOT LIKE'山东%'(17) 查询成绩为79分、89分或99分的记录。
SELECT *FROM scWHERE degree='79' or degree='89' or degree='99'(18) 查询名字中第二个字是“小”字的男生的学生姓名和地址。
SELECT sname,saddressFROM studentWHERE ssex='男' and sname LIKE'_小'(19) 查询名称以“计算机_”开头的课程名称。
SELECT cnameFROM courseWHERE cname LIKE'计算机_'(20) 查询计算机工程系和软件工程系的学生信息。
SELECT *1111FROM studentWHERE sdept='计算机工程系' OR sdept='软件工程系'四、思考题1、LIKE的通配符有哪些分别代表什么含义通配符含义% 有零个或更多个字符组成的任意字符串_ 任意单个字符[ ] 用于指定范围,例如[A ~ F],表示A ~ F范围内的任何单个字符[ ^ ] 表示指定范围之外的,例如[ ^A ~ F ],表示A ~ F 范围以外的任何单个字符。
2、知道学生的出生日期,如何求出其年龄SELECT year(now())-year(sbirthday)FROM student;3、IS能用“=”来代替吗不能is是用来判断null的,比如 remark is null 或者remark is not null=是用来直接比较值的。
4、关键字ALL和DISTINCT有什么不同的含义ALL表示所有的字段,有重复的2条,2 条都显示,DISTINCT表示如果有重复的,只取一条。
五、实验总结:1、收获经过这节数据库课程的学习,我基本上掌握了创建数据库以及对数据库的操作的基础知识。
学习了SQL数据库中的增、删、改、查等功能,数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。
2、存在的问题不够熟悉对数据库系统的操作,不会运用快捷键,需要更多的练习和操作。
实验四简单查询——分组与排序一、实验目的:(1) 利用GROUP BY子句对查询结果分组。
1212(2) 利用ORDER BY子句对查询结果排序。
(3) 掌握聚集函数的使用方法。
二、实验要求1、学生提前准备好实验报告,预习并熟悉实验步骤;2、遵守实验室纪律,在规定的时间内完成要求的内容;三、实验内容及步骤在Gradem或Gradem1数据库中完成下面查询:(1) 统计有学生选修的课程的门数。
SELECT COUNT(DISTINCT cno)FROM course(2) 计算“c01”课程的平均成绩。
SELECT AVG(degree)FROM scWHERE cno='c01';(3) 查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT sno,degreeFROM scWHERE cno='c03'ORDER BY degree DESC;(4) 查询各个课程号及相应的选课人数。
SELECT cno,COUNT(sno)FROM scGROUP BY cno(5) 统计每门课程的选课人数和最高分。
SELECT COUNT(sno),MAX(degree)FROM scGROUP BY cno(6) 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。
SELECT COUNT(sno),sum(degree)FROM scGROUP BY snoORDER BY COUNT(sno) DESC;1313(7) 查询选修了3门以上课程的学生学号。
SELECT snoFROM scGROUP BY snoHAVING COUNT(cno)>3(8) 查询成绩不及格的学生学号及课号,并按成绩降序排列。
SELECT sno,cnoFROM scWHERE degree<60ORDER BY degree DESC(9) 查询至少选修一门课程的学生学号。