当前位置: 首页 > news >正文

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

对应资源包名称:

期末九天从入门到精通操作数据库(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的数据,并输出删除的记录数。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 猫头虎 分享:Python库 SymPy 的简介、安装、用法详解入门教程 ‍
  • 鹏城杯 2022 取证writeup
  • OD C卷 - 结对编程
  • 计算机毕业设计 高校学术交流平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • python实用教程(二):安装配置Pycharm及使用(Win10)
  • 【MySQL】 黑马 MySQL进阶 笔记
  • 解决 VMware 中 Ubuntu文件系统磁盘空间不足
  • 【Leetcode 1832 】 判断句子是否为全字母句 —— 忙忙碌碌哈希表不如一行代码速度快
  • Object.create的原型继承
  • [笔记] hyperf event
  • Html中嵌入module类型的JavaScript代码,如何访问其中的函数或变量?
  • 数论之高斯消元
  • Spring父子容器
  • 文心快码 Baidu Comate 前端工程师观点分享:以文心快码 Baidu Comate为例,智能代码助手需要什么(三)
  • 神经重建在自动驾驶模拟中的应用
  • 【css3】浏览器内核及其兼容性
  • 【RocksDB】TransactionDB源码分析
  • css布局,左右固定中间自适应实现
  • eclipse的离线汉化
  • Java多态
  • LeetCode29.两数相除 JavaScript
  • Linux各目录及每个目录的详细介绍
  • Python socket服务器端、客户端传送信息
  • Vue.js源码(2):初探List Rendering
  • web标准化(下)
  • 分布式任务队列Celery
  • 回流、重绘及其优化
  • 京东美团研发面经
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 一个项目push到多个远程Git仓库
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # wps必须要登录激活才能使用吗?
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (13)DroneCAN 适配器节点(一)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net6 Api Swagger配置
  • .NET开发不可不知、不可不用的辅助类(一)
  • /proc/vmstat 详解
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • @Value获取值和@ConfigurationProperties获取值用法及比较(springboot)
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——