《数据库原理及应用》实验报告Word下载.docx
《《数据库原理及应用》实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《《数据库原理及应用》实验报告Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
1停止Mysql服务
2打开MySQL默认的安装文件夹C:
\ProgramFiles\MySQL\MySQLServer5.1中的my.ini文件,点击记事本顶部的“编辑”,“查找”,在查找内容中输入datadir后并点击“查找下一个”转到“Pathtothedatabaseroot数据库存储主路径”参数设置,找到datadir="
C:
/DocumentsandSettings/AllUsers/ApplicationData/MySQL/MySQLServer5.1/Data/"
即是默认的数据库存储主路径设置,现将它改到D:
\MYSQL\DATA即可,正确的设置是datadir="
D:
\MYSQL\DATA"
。
③将老的数据库存储主路径中的数据库文件和文件夹复制到新的存储主路径
④重新启动MYSQL服务,这样子数据库的存储路径就完成了。
(6)创建数据库。
①使用Navicat创建学生信息管理数据库gradem。
②使用SQL语句创建数据库MyDB。
语句截图如下:
(7)查看数据库属性。
①在Navicat中查看创建后的gradem数据库和MyDB数据库的状态,查看数据库所在的文件夹。
②利用SHOWDATABASES命令显示当前的所有数据库。
(8)删除数据库。
①使用Navicat图形工具删除gradem数据库。
②使用SQL语句删除MyDB数据库。
③利用SHOWDATABASES命令显示当前的所有数据库。
(9)使用配置向导修改当前密码,并使用新密码重新登录。
(10)配置Path变量,确保MySQL的相关路径包含在Path变量中。
四、思考题
MySQL的数据库文件有几种?
扩展名分别是什么?
答:
一个格式文件---.frm,一个数据文件---.isd,一个索引文件---.isd。
五、实验总结
1、收获
(1)在这次的实验过程中学习到了Mysql的安装过程和基本的配置,基本了解了用图形化工具Navicat和用SQL语言来删除以及创建数据库的方法。
(2)熟练掌握了数据库启动的步骤和方法,通过查阅资料深刻认识到了数据库的强大功能,易于管理的特点对人们平时工作处理一些数据表格的帮助非常巨大。
2、存在的问题
还不能熟练地记住一些SQL语句,接下来得在这一方面下多点功夫。
实验二管理表
(1)掌握表的基础知识。
(2)掌握使用Navicat管理工具和SQL语句创建表的方法。
(3)掌握表的修改、查看、删除等基本操作方法。
(1)在gradem数据库中创建表4.18~表4.22所示结构的表。
表4.18student表的表结构
字段名称
数据类型
长度
小数位数
是否允许NULL值
说明
sno
char
10
否
主码
sname
varchar
8
是
ssex
2
sbirthday
datetime
saddress
50
sdept
16
speciality
20
表4.19course表(课程名称表)的表结构
cno
5
cname
表4.20sc表(成绩表)的表结构
组合主码、外码
degree
decimal
4
1
1~100
表4.21teacher表(教师表)的表结构
tno
3
tname
tsex
tbirthday
date
tdept
表4.22teaching表(授课表)的表结构
cterm
tinyint
1~10
(2)向表4.18至表4.22输入数据记录,见表4.23~表4.27。
表4.23学生关系表student
20050101
李勇
男
1987-01-12
山东济南
计算机工程系
计算机应用
20050201
刘晨
女
1988-06-04
山东青岛
信息工程系
电子商务
20050301
王敏
1989-12-23
江苏苏州
数学系
数学
20050202
张立
1988-08-25
河北唐山
表4.24课程关系表course
C01
数据库
C03
信息系统
C02
C04
操作系统
表4.25成绩表sc
92
85
88
90
80
表4.26教师表teacher
101
李新
1977-01-12
102
钱军
1968-06-04
201
王小花
1979-12-23
202
张小青
1968-08-25
表4.27授课表teaching
(3)修改表结构。
①向student表中增加“入学时间”列,其数据类型为日期时间型。
直接添加一个栏位,然后再进行相应的参数约束。
②将student表中的sdept字段长度改为20。
直接在navicat的设计表里面改再保存就可以了。
③将student表中的speciality字段删除。
直接在图形工具里面删除整个栏位再保存就可以了
④删除student表。
(4)利用SQL命令(createtable、altertable、droptable)完成对表的操作
①利用createtalbe命令完成student表和course表的定义。
Student表的定义如下:
Usegradem
Creattablestudent
(snochar(10)primarykey,
Snamechar(8),
Ssexchar
(2),sbirthday,
Saddresschar(50),
Sdeptchar(16),
Speciaityvarchar(20));
Course表格的定义代码如下;
Creattablecourse
(cnochar(5)primarykey,
cnamechar(20));
②利用droptable命令实现(3)中的④。
Droptablestudent;
(1)MySQL中的数据库文件有几种?
数据库文件--.mdf,次数据文件--.ndf,日志文件--.ldf
(2)在定义基本表语句时,NOTNULL参数的作用是什么?
设置列的分量不为空值
(3)主码可以建立在“值可以为NULL”的列上吗?
不行。
五、实验总结:
学会了在图形工具navicat里面建立表格跟输入数据的基本操作,在命令窗口会使用SQL语句查询已建好的表格的各种信息。
实验三简单查询——单表无条件和有条件查询
(1)掌握SELECT语句的基本用法。
(2)使用WHERE子句进行有条件的查询。
(3)掌握使用IN和NOTIN,BETWEEN…AND和NOTBETWEEN…AND来缩小查询范围的方法。
(4)利用LIKE子句实现字符串匹配查询。
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
3、1~2人为1小组,实验过程中独立操作、相互学习。
在上次实验建立的Gradem或Gradem1数据库中完成下面查询:
(1)查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。
学生的基本信息:
select*fromstudent;
所有课程的基本信息:
select*fromcourse;
所有学生的成绩信息:
selectdegreefromstudent;
(2)查询所有学生的学号、姓名、性别和出生日期。
Selectsno,sname,sbirthdayfromstudent;
(3)查询所有课程的课程名称。
Selectcnamefromcourse;
(4)查询前10门课程的课号及课程名称。
Selectcno,cnamefromstudentlimit10;
(5)查询所有学生的姓名及年龄。
Selectsname,sagefromstudent;
(6)查询所有年龄大于18岁的女生的学号和姓名。
Selectsno,snamefromstudent
Wheresage>
18;
(7)查询所有男生的信息。
Select*fromstudent
Wheressex=’男’;
(8)查询所有任课教师的姓名(Tname)和所在系别(Tdept)。
Selecttname,tdeptfromteacher;
(9)查询“电子商务”专业的学生姓名、性别和出生日期。
Selectsname,ssex,sbirthdayfromstudent
Wherespeciality=’电子商务’;
(10)查询Student表中的所有系名。
Selectsdeptfromstudent;
(11)查询“C01”课程的开课学期。
Selectctermfromteaching
Wherecnoin(C01);
(12)查询成绩在80~90分之间的学生学号及课号。
Selectsno,cnofromsc
Wheredegree>
80anddegree<
90;
(13)查询在1970年1月1日之前出生的男教师信息。
Select*fromteacher
Wheretsex=’男’andtbirthday<
’1970’;
(14)输出有成绩的学生学号。
Selectsnofromscwheredegreeinnotnull;
(15)查询所有姓“刘”的学生信息。
Select*fromstudentwheresnameregexp’^刘’;
(16)查询生源地不是山东省的学生信息。
Select*fromstudentwherenotsaddress=’山东青岛’andsadress=’山东济南’;
(17)查询成绩为79分、89分或99分的记录。
(18)查询名字中第二个字是“小”字的男生的学生姓名和地址。
Selectsname,saddressfromstudentwheresnamelike‘_小%’;
(19)查询名称以“计算机_”开头的课程名称。
Selectspecialityfromstudentwheresdeptregexp’^计算机’;
(20)查询计算机工程系和软件工程系的学生信息。
Select*fromstudentwheresdept=’计算机工程系’andsdept=‘软件工程系’;
1、LIKE的通配符有哪些?
分别代表什么含义?
有四种。
%:
代表任意长度的字符串,_:
代表一个任意的字符,[]:
表示指定范围内任意单个字符,[^]:
表示不指定范围内任意单个字符
2、知道学生的出生日期,如何求出其年龄?
datediff(year,数据库里的时间段,getdate())就是当前时间减去数据库里的时间得到年。
3、IS能用“=”来代替吗?
4、关键字ALL和DISTINCT有什么不同的含义?
ALL表示所有的字段,有重复的字段,都显示,DISTINCT表示如果有重复的,只取一条,过滤掉重复的字段。
四、实验总结:
从学习可以知道:
数据库的内容是从数据表的创建和修改开始的,数据表的建立关系数据库的基本结构,它用来存储数据已经定义的属性,在数据表的操作中有:
查看表的信息,查看表的属性,修改表中的数据,删除表中的数据以及修改、删除表的操作。
从学习和实验报告的完成过程中我了解到,表是数据库数据中重要的一个数据对象,表建立的好坏直接影响到数据库的使用效果,表中的内容越具体对表越有利,然后对数据库中的各种应用也有着各种各样的便利。
实验四简单查询——分组与排序
一、实验目的:
(1)利用GROUPBY子句对查询结果分组。
(2)利用ORDERBY子句对查询结果排序。
(3)掌握聚集函数的使用方法。
在Gradem或Gradem1数据库中完成下面查询:
(1)统计有学生选修的课程的门数。
(2)计算“c01”课程的平均成绩。
(3)查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列。
(4)查询各个课程号及相应的选课人数。
(5)统计每门课程的选课人数和最高分。
(6)统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。
(7)查询选修了3门以上课程的学生学号。
(8)查询成绩不及格的学生学号及课号,并按成绩降序排列。
(9)查询至少选修一门课程的学生学号。
(10)统计输出各系学生的人数
(11)统计各系学生人数;
各系的男、女生人数。
(两条命令)
(12)统计各班人数;
各班男、女生人数。
(13)统计各系的老师人数,并按人数升序排序。
(14)统计不及格人数超过10人的课程号。
统计选修人数超过10人的课程号。
(15)查询软件系的男生信息,查询结果按出生日期升序排序,出生日期相同的按地址降序排序。
三、思考题
(1)聚集函数能否直接使用在SELECT子句、HAVING子句、WHERE子句、GROUPBY子句中?
可以使用在SELECT子句跟HAVING子句中,不可用在WHERE子句跟GROUPBY子句中。
(2)WHERE子句与HAVING子句有何不同?
作用对象不同,WHERE子句作用于表和视图,HAVING子句作用于组。
通过本次实验使我更加了解一些常用的SQL语句:
查询语句:
select,添加语句:
INSERT,删除语句:
DELETE等,简单掌握了怎么给表分组以及表的排序查询。
有些不太会的题目通过跟同学交流以及上网查询资料,基本都得到了解决,总的来说通过实验还能发现自己的不足之处,可以通过查缺补漏,印象会比较深刻。
一些查询语句的使用还不熟练,应该在以后多加练习,这样子才能更好地掌握这门语言的基本知识。
实验五、六、七多表查询
(1)掌握SELECT语句在多表查询中的应用。
(2)掌握多表连接的几种连接方式及应用。
(1)查询计算机工程系女学生的学生学号、姓名及考试成绩。
(2)查询“李勇”同学所选课程的成绩。
(不考虑重名)
(3)查询“李新”老师所授课程的课程名称。
(4)查询女教师所授课程的课程号及课程名称。
(5)查询至少选修一门课程的女学生姓名。
(6)查询姓“王”的学生所学的课程名称。
(7)查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。
查询姓名?
(8)查询课程成绩及格的男同学的学生信息及课程号与成绩。
(9)查询选修“c04”课程的学生的平均年龄。
(10)查询学习课程名为“数学”的学生学号和姓名。
(11)查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。
姓名?
(12)查询在第3学期所开课程的课程名称及成绩。
(13)查询“c02”号课程不及格的学生信息。
(14)查询软件系成绩在90分以上的学生姓名、性别和课程名称。
(15)查询同时选修了“c04”和“c02”课程的学生姓名和成绩。
(1)指定一个较短的别名有什么好处?
用比较短的名字代替原来比较长的名字方便记忆。
(2)内连接与外连接有什么区别?
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
(3)“=”与IN在什么情况下作用相同?
如果子查询只有一条记录,‘=’和‘IN’的作用才相同,IN可查询一条或多条记录,而=只能查询一条记录。