实验教案数据库原理及应用MySQL版微课视频版李月军清华大学出版社文档格式.docx
- 文档编号:22488981
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:34
- 大小:25.37KB
实验教案数据库原理及应用MySQL版微课视频版李月军清华大学出版社文档格式.docx
《实验教案数据库原理及应用MySQL版微课视频版李月军清华大学出版社文档格式.docx》由会员分享,可在线阅读,更多相关《实验教案数据库原理及应用MySQL版微课视频版李月军清华大学出版社文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
完成实验指导书中要求的上机作业
预习内容
课时分配(以分钟计算)
教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
30
70
教学内容
课堂组织
一、上机内容
1.使用SQL语句创建数据库studentsdb。
2.使用SQL语句选择studentsdb为当前使用数据库。
3.使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
表1student_info表结构
列名
数据类型
允许NULL值
主键
学号
char(4)
否
是
姓名
char(8)
性别
char
(2)
出生日期
date
家族住址
varchar(50)
表2curriculum表结构
课程编号
课程名称
学分
int
表3grade表结构
分数
4.使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据,各表数据如表4-表6所示。
表4student_info表的数据
0001
张青平
男
2000-10-01
衡阳市东风路77号
0002
刘东阳
1998-12-09
东阳市八一北路33号
0003
马晓夏
女
1995-05-12
长岭市五一路763号
0004
钱忠理
1994-09-23
滨海市洞庭大道279号
0005
孙海洋
1995-04-03
长岛市解放路27号
0006
郭小斌
1997-11-10
南山市红旗路113号
0007
肖月玲
1996-12-07
东方市南京路11号
0008
张玲珑
1997-12-24
滨江市新建路97号
表5curriculum表的数据
计算机应用基础
2
C语言程序设计
数据库原理及应用
英语
4
高等数学
表6grade表的数据
80
91
88
85
77
73
68
79
84
92
81
82
75
5.使用SQL语句ALTERTABLE修改curriculum表的“课程名称”列,使之为空。
6.使用SQL语句ALTERTABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
7.使用SQL语句ALTERTABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50)。
8.使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
9.使用SQL语句删除表stu中学号为0004的记录。
10.使用SQL语句更新表stud中学号为0002的家庭住址为“滨江市新建路96号”。
11.删除表stud的“备注”列。
12.删除表stud。
13.删除数据库studb。
二、实验思考
1.能通过一个CREATEDATABASE语句创建两个及以上的数据库吗?
2.删除了的数据库还极可能恢复吗?
3.对于studentsdb数据库的student_info表而言,如果输入相同学号的记录将出现什么现象?
为什么?
4.已经打开的表能删除吗?
实验二数据查询
1.掌握使用SQL的SELECT语句进行基本查询的方法。
2.掌握使用SELECT语句进行条件查询的方法。
3.掌握SELECT语句的GROUPBY、ORDERBY以及UNION子句的作用和使用方法。
4.掌握嵌套查询的方法。
5.掌握连接查询的操作方法。
1.SQL的SELECT语句进行基本查询的方法。
2.SELECT语句进行条件查询的方法。
3.SELECT语句的GROUPBY、ORDERBY以及UNION子句的作用和使用方法。
4.SELECT嵌套查询的方法。
5.SELECT连接查询的操作方法。
SELECT分组、嵌套、连接查询
4.内容讲解
5.上机练习
6.针对问题进一步讲解
1.在studentsdb数据库中使用SELECT语句进行基本查询。
(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。
(2)查询student_info表学号为0002的学生的姓名和家庭住址。
(3)查询student_info表所有出生日期在95年以后的女同学的姓名和出生日期。
2.使用select语句进行条件查询。
(1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。
(2)在grade表中查询课程编号为0002的学生的平均成绩。
(3)在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。
(4)查询student_info的姓名和出生日期,查询结果按出生日期从大到小排序。
(5)查询所有姓名“张”的学生的学号和姓名。
3.对student_info表,查询学生的学号、姓名、性别、出生日期及家庭住址,查询结果先按照性别的由小到大排序,性别相同的再按学号由大到小排序。
4.使用GROUPBY子句查询grade表中各个学生的平均成绩。
5.使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。
6.嵌套查询
(1)在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。
(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
(3)使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。
(4)使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。
7.连接查询
(1)查询分数在80-90范围内的学生的学号、姓名、分数。
(2)使用INNERJOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。
(3)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。
(4)使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
(5)为grade表添加数据行:
学号为0004、课程编号为0006、分数为76。
使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。
1.查询所有没有选修课程的学生的学号、姓名。
2.查询选修课程的人数。
3.查询选课人数大于等于3人的课程编号、课程名称、人数。
4.在查询的FROM子句中实现表与表之间的连接有哪几种方式?
对应的关键字分别是什么?
3
实验三索引和视图
1.学会使用SQL语句CREATEINDEX创建索引。
2.学会使用SQL语句DROPINDEX删除索引。
3.学会使用SQL语句CREATEVIEW创建视图的用法。
4.掌握使用SQL语句ALTERVIEW修改视图的方法。
5.了解删除视图的SQL语句DROPVIEW的用法。
1.SQL语句CREATEINDEX创建索引。
2.SQL语句DROPINDEX删除索引。
3.SQL语句CREATEVIEW创建视图的用法。
4.SQL语句ALTERVIEW修改视图的方法。
5.SQL语句DROPVIEW的用法。
索引的创建、删除及视图的创建、修改、删除SQL语句。
7.内容讲解
8.上机练习
9.针对问题进一步讲解
1.使用SQL语句ALTERTABLE分别删除studentsdb数据库的student_info表、grade表、curriculum表的主键索引。
2.使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx。
3.使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。
4.使用SQL语句为grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_sid_cid_idx。
5.查看grade表上的索引信息。
6.使用SQL语句删除索引grade_idx。
再次查看grade表上的索引信息。
7.使用SQL语句CREATEVIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
8.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图包括所有学生的学号、姓名、课程名称、分数。
使用视图v_stu_g查询学号为0001的学生的课程平均分。
9.使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。
10.利用视图v_stu_g为student_info表添加一行数据:
学号为0010、姓名为陈婷婷、性别为女。
11.利用视图v_stu_g删除学号为0010的学生记录。
12.利用视图v_stu_g修改姓名为张青平的学生的高等数学的分数为87。
13.使用SQL语句删除视图v_stu_c和v_stu_g。
1.建立索引的目的。
什么情况下不适于在表上建立索引。
2.能否在视图上建立索引。
3.想通过视图修改表中数据,视图应具备哪些条件。
4.视图的作用。
实验四数据完整性
1.掌握使用SQL语句CREATETABLE定义约束的方法。
2.掌握使用SQL语句ALTERTABLE增加或删除约束的方法。
3.了解约束的各种类型。
4.掌握使用SQL语句CREATETRIGGER创建触发器的方法。
5.掌握引发触发器的方法。
6.掌握使用SQL语句DROPTRIGGER删除触发器的方法。
1.SQL语句CREATETABLE定义约束的方法。
2.SQL语句ALTERTABLE增加或删除约束的方法。
3.SQL语句CREATETRIGGER创建触发器的方法。
4.SQL语句DROPTRIGGER删除触发器的方法。
建表、修改表时约束的创建、修改及删除SQL语句,触发器的创建和删除。
10.内容讲解
11.上机练习
12.针对问题进一步讲解
1.创建students数据库,在该数据库下创建表stu,并同时创建约束,表结构及约束要求如表1所示。
表1stu的表结构
字段
类型
是否为空
约束
2.创建表sc,并同时创建约束,表结构及约束要求如表2所示。
表2sc的表结构
外键参照stu表的学号列(约束名fk_sno)
课号
成绩
decimal(5,2)
0≦成绩≦100
设置(学号,课号)为主键。
3.创建表course,并同时创建约束,表结构及约束要求如表3所示。
表3course的表结构
课名
char(20)
唯一约束(约束名uq_cname)
4.在course表的课号列建立主键约束。
5.在sc表的课号列建立外键约束fk_cno,参照course表的课号列的取值,要求实现级联更新。
6.在stu表的姓名列建立唯一约束名uq_sname。
7.在course表的学分列建立检查约束ck_xf,检查条件为学分>
0。
8.删除sc表的外键约束fk_cno,fk_sno。
9.删除stu表的主键约束。
10.删除course表的唯一约束uq_cname。
11.创建测试表test,包含一个字段date_time,字段类型varchar(50);
创建触发器test_trig,实现在stu表中每插入一条学生记录后,则自动在test表中追加一条插入成功时的日期时间。
SYSDATE()函数用来获取当前的日期和时间。
为stu表插入一条记录引发触发器,查看test表的内容。
12.在course表上创建触发器del_trig,当course表上删除一门课程时,级联删除sc表该课程的记录。
删除course表的一条记录,查看sc表相应记录是否被自动删除。
1.请说明唯一约束和主键约束之间的联系和区别。
2.在course表中插入一条学分值小于0的记录,该记录能插入成功吗?
3.建立外键约束所参照的父表的列必须建立成主键吗?
4.可以建立几种类型的触发器?
5
实验五存储过程和存储函数
1.掌握通过SQL语句CREATEPROCEDURE创建存储过程的方法。
2.掌握使用SQL语句CALL调用存储过程的方法。
3.掌握使用SQL语句ALTERPROCEDURE修改存储过程的方法。
4.掌握使用SQL语句DROPPROCEDURE删除存储过程的方法。
5.掌握使用CREATEFUNCTION创建存储函数的方法。
6.掌握使用SQL语句ALTERFUNCTION修改存储函数的方法。
7.掌握使用SQL语句DROPFUNCTION删除存储函数的方法。
1.存储过程的创建、修改、删除及调用SQL语句。
2.存储函数的创建、修改、删除及执行SQL语句。
存储过程和存储函数的创建、修改、删除及使用命令。
带参数的存储过程的创建及调用。
13.内容讲解
14.上机练习
15.针对问题进一步讲解
1.输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。
DELIMITER@@
CREATEPROCEDUREstu_info(INnameCHAR(8))
BEGIN
SELECTs.学号,姓名,课程编号,分数FROMstudent_infos,gradeg
WHEREs.学号=g.学号and姓名=name;
END@@
使用CALL命令执行存储过程stu_info,其参数值为'
张青平'
。
DELIMITER;
CALLstu_info('
);
2.使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
(2)调用存储过程stu_grade。
3.使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
(2)调用存储过程stu_name。
(3)删除存储过程stu_name。
4.使用studentsdb数据库中的grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
(2)执行存储过程stu_g_r,输入学号0002。
(3)显示0002号学生的选课门数。
5.使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数num_func,统计指定课程名称的选课人数。
(2)执行存储函数num_func,查看“C语言程序设计”选课人数。
6.使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。
(2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。
(3)删除存储函数avg_func。
1.存储函数和存储过程如何将运算结果返回给外界?
2.存储函数有OUT参数、INOUT参数吗?
3.使用游标的步骤。
6
实验六数据库的安全管理
1.掌握用户账号的创建、查看、修改、删除的方法。
2.掌握用户权限设置方法。
3.掌握角色的创建、删除方法。
1.用户账号的创建、查看、修改、删除的SQL语句。
2.用户权限设置SQL语句。
3.角色的创建、删除SQL语句。
用户权限的设置、角色的应用
16.内容讲解
17.上机练习
18.针对问题进一步讲解
1.在本地主机创建用户账号st_01,密码为123456。
2.查看MySQL下所有用户账号列表。
3.修改用户账号st_01的密码为111111。
4.使用studentsdb数据库中的student_info表。
(1)授予用户账号st_01查询表的权限。
(2)授予用户账号st_01更新家庭住址列的权限。
(3)授予用户账号st_01修改表结构的权限。
5.使用studentsdb数据库中的student_info表。
(1)创建存储过程cn_proc,统计student_info表中的学生人数。
(2)授予用户账号st_01调用cn_proc存储过程的权限。
(3)以用户账号st_01连接MySQL服务器,调用cn_proc存储过程查看学生人数。
6.使用studentsdb数据库。
(1)授予用户账号st_01在studentsdb数据库上创建表、删除表、查询数据、插入数据的权限。
(2)以用户账号st_01连接MySQL服务器,创建新表st_copy,与表student_info完全相同。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 教案 数据库 原理 应用 MySQL 版微课 视频 版李月军 清华大学出版社