期末九天从入门到精通操作数据库(mysql)

ops/2024/9/24 11:00:00/

对应资源包名称:

期末九天从入门到精通操作数据库(mysql

学习目标:

掌握数据库的基本操作,熟练使用navicat工具.


学习内容:

  1. 数据查询实验
  2. 视图管理实验
  3. 索引管理实验
  4. 用户安全性管理实验
  5. MySQL备份和还原实验
  6. MySQL编程基础与函数实验
  7. 存储过程与游标
  8. 触发器和事件管理实验
  9. Python操作MySQL数据库实验

学习时间:

每天完成一个学习内容,花费1~2个小时


学习产出:

实验任务一  数据查询实验任务

1. 实验目的

掌握无条件查询的使用方法;

掌握条件查询的使用方法;

掌握聚合函数查询的使用方法;

掌握分组查询的使用方法;

掌握查询的排序方法;

掌握连接查询的使用方法;

掌握子查询的使用方法;

2. 实验内容

根据实验任务一和实验任务二的实验中创建的学生成绩管理数据库以及其中的学生表、课程表和学生成绩表,进行以下的查询操作(每一个查询都要给出SQL语句,列出查询结果)。

(1)查询各位学生的学号、专业和姓名。

(2)查询课程的全部信息。

(3)查询数据库中有哪些专业。

(4)查询学时数大于60的课程信息。

(5)查询在2003年出生的学生的学号、姓名和出生日期。

(6)查询姓张的学生的学号、姓名和专业。

(7)查询没有考试成绩的学号和课程号。

(8)查询学号为“0538”的学生的平时成绩的总分。

(9)查询选修了K001课程的学生人数。

(10)查询数据库中共有多少个专业。

(11)查询选修三门以上(含三门)课程的学生的学号和考试平均分。

(12)查询“于兰兰”的选课信息,列出学号、姓名、课程名。

(13)查询与“张艳”同一班级的学生的学号和姓名。

(14)查询比“计算机应用基础”学时多的课程的课程号、课程名和课时。

(15)查询选修课程号为K002的学生的学号、姓名。

实验任务二 视图管理实验任务

1. 实验目的

掌握在MySQL中使用Navicat或者SQL语句创建和查询视图的方法(以SQL命令为重点)。

掌握在MySQL中使用Navicat或者SQL语句查看、修改和删除视图的方法(以SQL命令为重点)。

2. 实验内容

根据实验2.1中学生表、课程表和学生成绩表完成如下实验内容,给出实验涉及的SQL语句和执行结果截图。

在MySQL中使用Navicat或者SQL语句创建和查询视图

(1)在Navicat或命令行环境下,创建计算机专业的学生视图s_computer_view,视图包含学生表全部字段。

(2)在Navicat或命令行环境下,查询s_computer_view中内容。

(3)在Navicat或命令行环境下,创建2002年(含)后出生的女学生视图s_female_view,视图显示学生的学号(s_no)、姓名(s_name)、学生性别(s_sex)、出生日期(s_birthday)以及学生的联系方式(s_contact)。

(4)在Navicat或命令行环境下,通过视图s_female_view,查询张姓学生的信息。

(5)在Navicat或命令行环境下,创建学生选课信息视图sc_view,显示选修3学分(含)学生学号(s_no)、姓名(s_name)、课程号(c_no)、课程名(c_name)。

(6)在Navicat或命令行环境下,创建学生选课成绩视图score_view,显示选修3学分(含)学生学号(s_no)、姓名(s_name)、课程号(c_no)、课程名(c_name)、总成绩(total_score)。其中,总成绩按照——平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重)公式计算。

(7)在Navicat或命令行环境下,创建学生成绩汇总视图score_group_view,提供每位学生考试成绩最高的选课信息,要求显示的视图字段包括学生学号(s_no)、姓名(s_name)、课程号(c_no)、课程名(c_name)、考试成绩(total_score)。其中,总成绩按照——平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重)公式计算。

(8)在Navicat或命令行环境下,通过视图score_group_view,按考试成绩降序排列学生成绩汇总情况。

MySQL中使用Navicat或者SQL语句修改和删除视图的方法

(1)使用SQL语句,查看s_computer_view视图的结构信息和状态信息。

(2)使用SQL语句,查看s_female_view视图的创建信息和元信息。

(3)在Navicat或命令行环境下,替换视图s_female_view,替换后的视图提供2003年(含)后出生的女学生信息,具体显示的字段包括学生的学号(s_no)、姓名(s_name)、学生性别(s_sex)、出生日期(s_birthday)。

(4)在Navicat或命令行环境下,修改视图sc_view,显示男同学选课情况,具体显示的字段包括学生学号(s_no)、姓名(s_name)、课程号(c_no)、课程名(c_name)、总成绩(total_score)。其中,总成绩按照——平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重)公式计算。

(5)在Navicat或命令行环境下,删除视图s_female_view。

实验任务三  索引管理实验

1. 实验目的

掌握在MySQL中使用Navicat或者SQL语句创建和使用索引的方法(以SQL命令为重点)。

掌握在MySQL中使用Navicat或者SQL语句查看和删除索引的方法(以SQL命令为重点)。

2. 实验内容

根据实验2.1中学生表、课程表和学生成绩表完成如下实验内容,给出实验涉及的SQL语句和执行结果截图。

在MySQL中使用Navicat或者SQL语句创建和使用索引的方法

(1)在Navicat或命令行环境下,使用CREATE INDEX为课程表上课程名称添加普通索引,索引名称自拟。

(2)在Navicat或命令行环境下,使用EXPLAIN语句分析查询计算机图形学课程信息时,索引的使用情况。

(3)在Navicat或命令行环境下,使用ALTER TABLE为学生表上学生姓名和出生日期附加复合唯一索引,索引名称自拟。

(4)在Navicat或命令行环境下,使用EXPLAIN语句,分析查询学生表时,使用学生姓名为查询条件和使用出生日期为查询条件,在索引使用时的差异性。

(5)在Navicat或命令行环境下,修改学生表,添加学生基本信息字段info,为学生基本信息字段添加全文索引,索引名称自拟。

MySQL中使用Navicat或者SQL语句查看和删除索引的方法

(1)在Navicat或命令行环境下,查看学生表上索引情况。

(2)在Navicat或命令行环境下,删除学生表上姓名和出生日期的复合索引。

实验任务四 用户安全性管理实验任务

1. 实验目的

掌握在MySQL中使用Navicat或者SQL语句用户管理的方法(以SQL命令为重点)。

掌握在MySQL中使用Navicat或者SQL语句权限授予和回收方法(以SQL命令为重点)。

掌握在MySQL中使用SQL语句角色创建、分配和激活方法(以SQL命令为重点)。

2. 实验内容

根据实验2.1中数据库,给出实验涉及的SQL语句和执行结果截图。

1.MySQL中使用Navicat或者SQL语句管理用户

(1)在Navicat或命令行环境下,创建一个允许在任意主机登录的用户,用户名为admin,密码为admin123,使用sha策略加密。

(2)使用SQL语句,创建一个允许在本地登录的用户,用户名为teacher,密码为teacher123,使用sha策略加密。

(3)使用SQL语句,同时创建一个允许在‘202.204.111.111’IP位置登录的2个用户,用户名1为student,密码为student123,用户2位student2,密码为student1233,两个用户均使用sha策略加密。

(4)使用SQL语句,将用户名为student的用户密码修改为123student。

(5)使用SQL语句,用查询语句,查询系统表,查看已经创建的用户情况。

(6)使用SQL语句,删除student2用户,并通过查询系统表,查看已经删除用户的情况。

2.MySQL中使用Navicat或者SQL语句授予和回收权限

(1)使用SQL语句,为admin用户授予全局全部权限,并允许权限转移。

(2)使用Navicat,为teacher语句授予teaching_lab数据库中课程表和成绩表的查找、修改数据权限,不允许权限转移。

(3)使用SQL语句,为student用户授予teaching_lab中学生表s中出生日期和联系方式的查询和修改权限。

(4)使用SQL语句,查询系统数据表,查看为teacher用户和student用户授权情况。

(5)使用SQL语句,回收teacher用户的有关teaching_lab数据中课程表的修改数据权限。

3.MySQL中使用SQL语句创建、分配和激活角色方法

(1)使用SQL语句,创建teach角色。

(2)使用SQL语句,为teach角色授予teaching_lab数据库中课程表的平时分数和考试成绩查询数据、修改数据的权限。

(3)使用SQL语句,将teach角色分配给teacher用户。

(4)使用SQL语句,激活teacher用户的teach角色。

(5)使用SQL语句,查询teacher用户当前活跃的角色情况。

(6)使用SQL语句,删除teach角色。

实验任务五 MySQL备份和还原实验任务

1. 实验目的

掌握使用命令进行MySQL数据库备份和还原的方法。

掌握使用工具进行MySQL数据库备份和还原的方法。

2. 实验内容

在D盘新建一个用于存放备份文件的文件夹bak。

分别选用命令和至少一种工具将实验2.1中所创建的数据库完整备份到文件夹bak中,给出命令和重要步骤的截图。

使用命令将数据库中的学生成绩表备份到文件夹bak中,给出命令。

删除实验2.1所创建的数据库

使用命令和至少一种工具还原数据库,给出命令和重要步骤的截图。

实验任务六  MySQL编程基础与函数实验任务

1. 实验目的

熟练掌握使用流程控制语句完成简单程序的编写。

掌握常用的系统函数的使用。

掌握在MySQL中使用SQL语句完成自定义函数的创建、调用及管理工作。

2. 实验内容

根据实验2.1中表1所设计的数据库(teaching_lab)和其中的3个数据表(学生表s_lab、课程表c_lab和学生成绩表sc_lab),完成如下实验内容,给出实验涉及的SQL语句和执行结果截图。

(1)编写程序代码完成如下功能,如果学生表中有1988年出生的同学,则把其学号、姓名、性别、出生日期及所属的星期几查询出来,否则输出“没有1988年出生的同学”。

(2)通过MySQL编程,完成用户自定义函数创建、调用、查看和删除等管理工作。

①创建一个函数show_sign,函数的功能是,当向函数传递一个出生日期参数时,函数返回其所属的星座名称;

②调用函数show_sign,显示每位同学的学号、姓名、出生日期和所属的星座;

③分别写出查看函数show_sign的代码定义和状态特征的语句;

④写出删除函数show_sign的语句。

(3)通过MySQL编程,完成用户自定义函数的创建、调用。

①创建一个函数count_number,任意向函数传递一个学号值,如果存在该同学,则能计算并返回该同学的选课门数,否则,返回0;

②编写代码,调用函数count_number,显示每位同学的学号、姓名和选课门数。

(4)通过MySQL编程,完成用户自定义函数的创建、调用。

①创建一个函数show_score,任意向函数传递一个学号值,如果存在该同学,则能计算并返回该同学已经取得的学分总数(课程的考试成绩>=60分表示取得该课程的学分),否则,返回0;

②编写代码,调用函数show_score,显示每位同学的学号、姓名和取得的学分数。

实验任务七 存储过程与游标实验任务

1. 实验目的

掌握在MySQL中使用SQL语句定义和使用游标。

掌握在MySQL中使用SQL语句创建和执行用户自定义存储过程(以SQL命令为重点)。

掌握在MySQL中使用SQL语句完成存储过程的查看、修改、删除等管理任务。

2. 实验内容

根据实验2.1中表1所设计的数据库(teaching_lab)和其中的3个数据表(学生表s_lab、课程表c_lab和学生成绩表sc_lab),成如下实验内容,给出实验涉及的SQL语句和执行结果截图。

(1)通过MySQL编程,完成用户存储过程的创建、调用、查看和删除等管理工作。

①创建存储过程showstudents,显示出生年月在2002年7月前出生的性别为“男”的学生所有信息;

②编写程序代码,调用存储过程showstudents,显示执行结果;

③写出相应语句,分别查看存储过程showstudents的代码定义和状态特征;

④修改存储过程showstudents,将其功能改为:显示出生年月在2002年7月前出生的性别为“女”的学生信息。

(2)通过MySQL编程,利用存储过程向数据表中添加记录。

①创建存储过程insertsc,实现向选课表中添加一条选课记录,记录内容由参数传递完成,当提供的学号和课程号合法(即学号和课程号存在)且不存在该条选课记录时,则向选课表中插入该记录,插入完成后,显示选课表的内容,否则,输出“学号或课程号不存在和重复”的错误提示信息;

②编写程序代码,调用存储过程insertsc,显示执行结果;

③写出相应语句,删除存储过程insertsc。

(3)通过MySQL编程,完成游标的创建与使用。

创建一个名称为showcursor的存储过程,在该存储过程中,创建一个名称为shownum_cursor的游标,对应的结果集为课程号、课程名和选课人数,然后利用游标逐一从结果集中取出每一条记录,并显示各字段的值。

实验任务八  触发器和事件管理实验任务

1. 实验目的

掌握在MySQL中使用Navicat或者SQL语句创建触发器完成复杂数据操作功能。

掌握在MySQL 中使用Navicat或者SQL语句创建事件完成复杂数据操作功能。

2. 实验内容

根据实验2.1中创建的学生成绩管理数据库以及其表1~表3所示的学生表、课程表和学生成绩表,在MySQL中使用Navicat和SQL语句创建触发器完成复杂的数据操作功能。

  1. 为了防止有人随意修改学生成绩,学校规定只能教务处(用户“user2”)才可以修改学生成绩表中的数据,普通教师用户(“user1”)不能随意修改学生成绩,否则输出“用户没有权限”。创建触发器完成上述成绩修改权限问题,具体步骤如下所示:

(1)在数据库中创建两个用户“user1”和“user2”。

(2)查看数据库中所有的用户,确认两名用户创建成功。

(3)创建触发器(名字自拟,符合命名规则即可)完成成绩修改权限限制功能。

(4)分别使用用户“user1”和“user2”修改学生成绩表中任意学生成绩信息,查看结果。

2. 学校规定,所有转入计算机专业的学生都需要重修课程“计算机应用基础(K002)”。在MySQL中使用Navicat和SQL语句创建触发器完成如下操作:

(1)创建触发器(名字自拟,符合命名规则即可)完成以下功能:当往学生表中插入转入学生信息时,需要向学生成绩表中插入该学生的“计算机应用基础(K002)”课程的成绩信息,平时成绩和期末成绩的初始值均为NULL,平时成绩比重为0.3。

(2)往学生表中插入以下学生信息:

0593

王志军

2003-9-2

计算机

信息学院

1588524××××

(3)查询学生成绩表中学号=“0593”的学生的信息来验证触发器的功能。

3. 当某个学生退学,需要把学生表中该学生的信息删除,为了减少数据库中的垃圾数据,需要从学生成绩表中删除该同学相应的成绩信息。

(1)创建触发器(名字自拟,符合命名规则即可)实现以下功能:在删除学生信息之前,把学生成绩表中该同学所有相关数据删除。

(2)删除学生表中学号为“0593”的学生信息。

(3)查询学生成绩表中学号为“0593”的学生的信息来验证触发器功能。

4. 为了更好的了解学生的成绩状况,首先,创建如表4的统计成绩表,用来存放学生的平均成绩和总成绩,其中,

每门课成绩=平时成绩*平时成绩比重+期末成绩*(1-平时成绩比重);

总成绩=所有课程成绩的总和;

平均成绩=总成绩/课程数。

表16.1 统计成绩表

学号

平均成绩

总成绩

统计时间

char(10)

decimal(4,2)

decimal(5,2)

date

在MySQL中使用Navicat或者SQL语句实现下述操作:

(1)在数据库中创建统计成绩表。

(2)创建事件(名字自拟,符合命名规则即可)完成以下功能:每个月统计一次学生的平均分和总分并把结果插入统计成绩表中。

(3)为了防止统计成绩表中的数据过多而影响操作效率,创建事件于今年年底删除统计成绩表中所有的数据。

  1. 教务处想保留统计成绩表中的成绩数据,但是从现在到年底的数据还没有生成,因此,需要阶段性的保存成绩信息。在MySQL中使用Navicat或者SQL语句实现下述操作:  

 (1)首先根据已知的统计成绩表创建一个表结构一样的副表。

 (2)创建事件实现以下功能:从现在开始到年底,把每个月的成绩数据都保存到副表中。

实验任务九  Python操作MySQL数据库实验任务

1. 实验目的

掌握在Python中连接MySQL数据库的方法。

掌握使用Python操纵MySQL数据库数据的方法,包括插入、删除,修改数据。

掌握使用Python查询MySQL数据库数据的方法。

2. 实验内容

根据实验2.1中创建的学生成绩管理数据库以及学生表、课程表和学生成绩表,在Python中使用Python代码和SQL语句完成数据操作功能。按要求完成实验,并给出代码和重要步骤截图:

(1)在Python代码中连接数据库teaching_lab。

(2)使用Python代码往学生成绩表中插入以下两条数据。

M001

0531

2019-2-26 13:15:12

77

0.4

K002

0591

2018-2-26 13:15:12

82.5

0.4

86

(3)使用Python代码把平时成绩和期末成绩为空的学生的成绩修改成0。

(4)使用Python代码查询出所有学生的每门课程的总成绩(总成绩=平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重))并输出。

(5)使用Python代码统计学生期末成绩低于所有学生总平均分的人数。

(6)使用Python代码删除平时成绩和期末成绩都为0的数据,并输出删除的记录数。


http://www.ppmy.cn/ops/99017.html

相关文章

Nginx知识详解(理论+实战更易懂)

目录 一、Nginx架构和安装 1.1 Nginx 概述 1.1.1 nginx介绍 1.1.2 Nginx 功能介绍 1.1.3 基础特性 1.1.4 Web 服务相关的功能 1.2 Nginx 架构和进程 1.2.1 Nginx 进程结构 1.2.2 Nginx 进程间通信 1.2.3 Nginx 启动和 HTTP 连接建立 1.2.4 HTTP 处理过程 1.3 Nginx …

NLP位置编码

位置编码 一、基本概念 在自然语言处理和深度学习中,位置编码(Position Encoding)是一种为了向模型中引入序列中元素位置信息的技术。 当处理序列数据时,如文本句子或时间序列数据,模型通常需要考虑元素的顺序和位置…

C++20特性-------std::span

概述 std::span 是一个轻量级的视图类型,用于表示一段连续的内存区域。它不拥有数据,而是提供对现有数组、容器或内存区域的非拥有(non-owning)视图。允许你在不复制数据的情况下处理这些数据。 关键特性 非拥有:st…

前端Array.reduce()函数延申用法

1.求和 // 求和const sum (arr) > arr.reduce((acc,cur) > acc cur,0)let arr [1,2,3,4,5]console.log(参数为:,arr);console.log(总和:,sum(arr)); 2.求积 //求积const sum1 (arr) > arr.reduce((acc,cur) > acc * cur,1)let arr1 …

VIT论文阅读: A Image is Worth 16x16 Words

简介 在2024年,大家都知道了transformer的故事,但是在4年前, CNN和Transformer谁才是CV的未来,还没有那么确定。 在简介部分,作者提到了一个令人失望的事实,在基于imagenet的实验中发现,transformer的表现…

【K8s】专题十二(2):Kubernetes 存储之 PersistentVolume

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 Linux 专栏 | Docker 专栏 | Kubernetes 专栏 往期精彩文章 【Docker】(全网首发)Kyl…

@PathVariable:Spring MVC中的路径变量解析

在Spring MVC中,PathVariable注解是一个非常重要的特性,它允许开发者将URL中的一部分作为参数传递给控制器(Controller)的方法。这种机制在处理RESTful风格的API时尤为有用,因为它使得URL更加简洁且富有表达力。本文将…

心得与体会

Loop本地回环 Loop本地回环,通常指的是以127开头的IP地址段(127.0.0.1 – 127.255.255.254),其中127.0.0.1是最常用的一个地址,被称为本地回环地址(Loop back address)。这个地址不属于任何一个…