《数据库原理及应用》实验报告121Word文档下载推荐.docx
《《数据库原理及应用》实验报告121Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《数据库原理及应用》实验报告121Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
②使用SQL语句删除MyDB数据库。
③利用SHOWDATABASES命令显示当前的所有数据库。
(9)使用配置向导修改当前密码,并使用新密码重新登录。
(10)配置Path变量,确保MySQL的相关路径包含在Path变量中。
四、思考题
MySQL的数据库文件有几种?
扩展名分别是什么?
五、实验总结
1、收获
2、存在的问题
实验二管理表
(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。
③将student表中的speciality字段删除。
④删除student表。
(4)利用SQL命令(createtable、altertable、droptable)完成对表的操作
①利用createtalbe命令完成student表和course表的定义。
②利用droptable命令实现(3)中的④。
(1)MySQL中的数据文件有几种?
(2)在定义基本表语句时,NOTNULL参数的作用是什么?
(3)主码可以建立在“值可以为NULL”的列上吗?
五、实验总结:
实验三简单查询——单表无条件和有条件查询
(1)掌握SELECT语句的基本用法。
(2)使用WHERE子句进行有条件的查询。
(3)掌握使用IN和NOTIN,BETWEEN…AND和NOTBETWEEN…AND来缩小查询范围的方法。
(4)利用LIKE子句实现字符串匹配查询。
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
3、1~2人为1小组,实验过程中独立操作、相互学习。
在上次实验建立的Gradem或Gradem1数据库中完成下面查询:
(1)查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。
(2)查询所有学生的学号、姓名、性别和出生日期。
(3)查询所有课程的课程名称。
(4)查询前10门课程的课号及课程名称。
(5)查询所有学生的姓名及年龄。
(6)查询所有年龄大于18岁的女生的学号和姓名。
(7)查询所有男生的信息。
(8)查询所有任课教师的姓名(Tname)和所在系别(Tdept)。
(9)查询“电子商务”专业的学生姓名、性别和出生日期。
(10)查询Student表中的所有系名。
(11)查询“C01”课程的开课学期。
(12)查询成绩在80~90分之间的学生学号及课号。
(13)查询在1970年1月1日之前出生的男教师信息。
(14)输出有成绩的学生学号。
(15)查询所有姓“刘”的学生信息。
(16)查询生源地不是山东省的学生信息。
(17)查询成绩为79分、89分或99分的记录。
(18)查询名字中第二个字是“小”字的男生的学生姓名和地址。
(19)查询名称以“计算机_”开头的课程名称。
(20)查询计算机工程系和软件工程系的学生信息。
1、LIKE的通配符有哪些?
分别代表什么含义?
2、知道学生的出生日期,如何求出其年龄?
3、IS能用“=”来代替吗?
4、关键字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子句中?
(2)WHERE子句与HAVING子句有何不同?
实验五、六、七多表查询
(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在什么情况下作用相同?
实验八、九嵌套查询
(1)掌握嵌套查询的使用方法。
(2)掌握相关子查询与嵌套子查询的区别。
(3)掌握带IN谓词的子查询的使用方法。
(4)掌握带比较运算符的子查询的使用方法。
在Grademanager数据库中完成下面查询:
(1)查询计算机系(CS)女学生的学生学号、姓名及考试成绩。
(5)查询姓“王”的学生所学的课程名称。
(6)查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。
(7)查询选修“C04”课程的学生的平均年龄。
(8)查询学习课程名为“数学”的学生学号和姓名。
(9)查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。
(10)查询在第3学期所开课程的课程名称及成绩。
(11)查询与“李勇”同一个系的同学姓名。
(12)查询学号比“刘晨”同学大,而出生日期比他小的学生姓名。
(13)查询出生日期大于所有女同学出生日期的男同学的姓名及系别。
(14)查询成绩比该课程平均成绩高的学生的学号及成绩。
(15)查询不讲授“C01”课的教师姓名。
(16)查询没有选修“C02”课程的学生学号及姓名。
(17)查询选修了“数据库”课程的学生学号、姓名及系别。
(18)查询“C02”号课程不及格的学生信息。
(1)子查询一般分为几种?
(2)相关子查询的执行过程是什么?
实验十数据更新
(1)掌握利用INSERT命令实现对表数据的插入操作。
(2)掌握利用UPDATE命令实现对表数据的修改操作。
(3)掌握利用DELETE命令实现对表数据的删除操作。
在Gradem或Gradem1数据库中完成下面操作:
注意:
利用SELECTINTO…命令备份Student、SC、Course这3个表,备份表名自定。
(1)向Student表中插入记录("
20050203"
,"
张静"
1981-3-21"
女"
CS"
电子商务"
)。
(2)插入学号为“20050302”、姓名为“李四”的学生信息。
(3)把计算机系的学生记录保存到表TS中(TS表已存在,表结构与Student表相同)。
(4)将学号为“20050202”的学生姓名改为“张华”,系别改为“CS”,专业改为“多媒体技术”。
(5)将“李勇”同学的专业改为“计算机信息管理”。
(6)将“20050201”学生选修“C03”号课程的成绩改为该课的平均成绩。
(7)把成绩低于总平均成绩的女同学的成绩提高5%。
(8)把选修了“数据库”课程而成绩不及格的学生的成绩全改为空值(NULL)。
(9)删除学号为“20050302”的学生记录。
(10)删除“计算机系”所有学生的选课记录。
(11)删除SC表中尚无成绩的选课记录。
(12)把“张晨”同学的成绩全部删除。
(1)DROP命令和DELETE命令的本质区别是什么?
(2)利用INSERT、UPDATE和DELETE命令可以同时对多个表进行操作吗?
实验十一、十二、十三第四章综合实验
(1)进一步掌握SELECT语句的功能及使用方法。
(2)进一步掌握SELECT语句的基本语法和查询条件表示方法;
(3)进一步掌握查询条件种类和表示方法;
(4)进一步掌握连接查询的表示及使用;
(5)进一步掌握嵌套查询的表示及使用;
(6)了解集合查询的表示及使用
(7)进一步掌握利用INSERT命令实现对表数据的插入操作。
(8)进一步掌握利用UPDATE命令实现对表数据的修改操作。
(9)进一步掌握利用DELETE命令实现对表数据的删除操作。
在Grademanager数据库中完成下面操作:
(1)查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
Select*fromcoursewherecnamelike‘db\_%s__’
(2)查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
思考能否用嵌套查询?
(3)列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
(4)查询缺少成绩的所有学生的详细情况;
(5)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
(6)查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;
Selecta.sno,sname,avg(degree)fromstudenta,scbwherea.sno=b.snogroupbya.snohavingavg(degree)>
(selectavg(degree)fromstudenta,scbwherea.sno=b.snoandsname=’张力’)
(7)列出只选修一门课程的学生的学号、姓名、院系及成绩;
Selecta.sno,sname,sdept,degreefromstudenta,scbwherea.sno=b.snogroupbya.snohavingcount(*)=1
(8)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
Selecta.sno,sname,cnofromstudenta,scb
wherea.sno=b.snoandcnoin(selectcnofromstudenta,scbwherea.sno=b.snoandsname=’张力’)
(9)只选修“数据库”和“数据结构”两门课程的学生的基本信息;
Select*fromstudenta,scb
Wherea.sno=b.snoandb.snoin(selectsnofromsca,coursebwhereo=oandcname='
大学英语'
andsnoin(selectsnofromsca,coursebwhereo=oandcname='
高等数学'
))
Groupbyb.snohavingcount(cno)=2
(10)至少选修“数据库”或“数据结构”课程的学生的基本信息;
(11)列出所有课程被选修的详细情况,包括课程号、课程名、学号及成绩;
(12)查询只被一名学生选修的课程的课程号、课程名;
Selectcno,cnamefromcoursewherecnoin(selectcnofromscgroupbycnohavingcount(*)=1)
(13)使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
(14)使用嵌套查询查询其它系中年龄小于计算机系的某个学生的学生姓名、年龄和系别;
(15)使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
(16)分别使用连接查询和嵌套查询,列出与‘张力’在一个系的学生的信息;
(17)使用集合查询列出CS系的学生以及性别为女的学生名单;
实验十四索引
(1)理解索引的概念与类型。
(2)掌握创建、更改、删除索引的方法。
(3)掌握维护索引的方法。
1)使用Navicat图形工具创建、管理索引
(1)在数据库test下创建workinfo表。
创建表的同时在id字段上创建名为index_id的唯一性索引,而且以降序的格式排列。
workinfo表结构内容如下表所示:
字段名
字段描述
主键
外键
非空
唯一
自增
id
编号
INT(10)
职位名称
VARCHAR(20)
Type
职位类别
VARCHAR(10)
Address
工作地址
VARCHAR(50)
Wages
工资
INT
Contents
工作内容
INTYTEXT
e