Mysql 学习——项目实战
MySQL 学习——项目实战
项目出处 博主:Asmywishi
Linux-Ubuntu启动Mysql
sudo mysql
Data preparation
Create Database and Table
- Create database :
create database mysql_example1;
- Start database :
use mysql_example1;
- Create Student table :
# 学生表
CREATE TABLE Student(
s_id VARCHAR(20), # 学生学号ID
s_name VARCHAR(20) NOT NULL DEFAULT '', # 学生名字
s_birth VARCHAR(20) NOT NULL DEFAULT '', # 学生生日
s_sex VARCHAR(10) NOT NULL DEFAULT '', # 学生性别
PRIMARY KEY(s_id) # 学生学号为表数据主键
);
NOT NULL DEFAULT属于两个约束,是指填写数据时不能为空 [可参考链接内容](Markdown 语法速查表 | Markdown 教程)PRIMARY KEY表示主键必须包含的唯一值,且不能是NULL [可参考W3school](SQL PRIMARY KEY 约束 (w3school.com.cn))
- Create Course table :
# 课程表
CREATE TABLE Course(
c_id VARCHAR(20), # 课程ID
c_name VARCHAR(20) NOT NULL DEFAULT '', # 课程名
t_id VARCHAR(20) NOT NULL, # 授课教师ID
PRIMARY KEY(c_id) # 课程ID为表数据主键
);
- Create Teachers table :
# 教师表
CREATE TABLE Teacher(
t_id VARCHAR(20), # 教师ID
t_name VARCHAR(20) NOT NULL DEFAULT '', # 教师名
PRIMARY KEY(t_id) # 教师ID为表数据主键
);
- Create Score table :
# 成绩表
CREATE TABLE Score(
s_id VARCHAR(20), # 学生ID
c_id VARCHAR(20), # 课程ID
s_Score INT(3), # 科目成绩
PRIMARY KEY(s_id,c_id) # 学生ID,课程ID为表数据主键
);
Insert Data to table
- Insert students’ data to students’ table :
# 插入学生表测试数据
insert into Student values('01' , 'zhaolei' , '1990-01-01' , 'male');
insert into Student values('02' , 'qiandian' , '1990-12-21' , 'male');
insert into Student values('03' , 'sunfeng' , '1990-05-20' , 'male');
insert into Student values('04' , 'liyun' , '1990-08-06' , 'male');
insert into Student values('05' , 'zhoumei' , '1991-12-01' , 'female');
insert into Student values('06' , 'wulan' , '1992-03-01' , 'female');
insert into Student values('07' , 'zhenzhu' , '1989-07-01' , 'female');
insert into Student values('08' , 'wangju' , '1990-01-20' , 'female');
Check the student data: select * from Student;
- show data code:
select * from [table_name]打印出表格table_name中的数据- insert into [table_name] values(data) : 向
table_name表中传入data数据
- Insert data of Course to table of Course :
# 课程表测试数据
insert into Course values('01' , 'Chinese' , '02');
insert into Course values('02' , 'Maths' , '01');
insert into Course values('03' , 'English' , '03');
Check data of the course : select * from Course;
- Insert the teachers’ data to Teachers’ table :
# 教师表测试数据
insert into Teacher values('01' , 'zhangsan');
insert into Teacher values('02' , 'lisi');
insert into Teacher values('03' , 'wangwu');
Check teahcers’ data : select * from Teacher;
- Insert score data to Score table :
# 成绩表测试数据
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);
Check score data : select * from Score;
Practical problems
Question 1
查询“01”课程比“02”课程成绩高的学生的信息及课程分数
Answer 1
查看学生成绩信息
select st.s_id,s_name,c_id,s_Score from Student st,Course c where st.s_id = c.s_id and c.c_id in (01,02) ;

使用连接查询学生成绩信息——更清晰
select st.s_id,s_name,sc1.s_Score as 'Chinese',sc2.s_Score as 'Maths' from Student st left outer join Score sc1 on sc1.s_id = st.s_id and sc1.c_id = 01 left outer join Score sc2 on sc2.s_id = st.s_id and sc2.c_id = 02 where sc1.s_Score > sc2.s_Score ;

Question 2
查询"01"课程比"02"课程成绩低的学生信息及课程分数
Answer 2
与answer1 的解题思路一致,改一下判断条件即可
select st.s_id,s_name,sc1.s_Score as 'Chinese',sc2.s_Score as 'Maths' from Student st left outer join Score sc1 on sc1.s_id = st.s_id and sc1.c_id = 01 left outer join Score sc2 on sc2.s_id = st.s_id and sc2.c_id = 02 where sc1.s_Score < sc2.s_Score ;

Question 3
查询平均成绩大于等于60分的同学的学生编号、学生姓名和平均成绩
Answer 3
查询出所有同学的学生编号、学生姓名和平时成绩再添加筛选条件即可
select st.s_id,st.s_name,avg(sc.s_Score) as 'avg' from Student st,Score sc where st.s_id = sc.s_id group by st.s_id having avg(sc.s_Score) >= 60 ;
group by [filed_name] having [condition]根据filed_name进行排序,未设置参数则默认从小到大排序,condition筛选条件
Question 4
查询平均成绩大于等于60分的同学的学生编号、学生姓名和平均成绩
Answer 4
与question3 一致,改变判断条件即可
select st.s_id,st.s_name,avg(sc.s_Score) as 'avg' from Student st left outer join Score sc on st.s_id = sc.s_id group by st.s_id having avg(sc.s_Score) < 60 or avg(s_Score) is null ;

Question 5
查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
Answer 5
select st.s_id,st.s_name,count(sc.c_id) as 'course_counts',sum(sc.s_Score) as 'sum_score' from Score sc left outer join Student st on st.s_id = sc.s_id group by st.s_id ;

相关文章:
Mysql 学习——项目实战
MySQL 学习——项目实战 项目出处 博主:Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…...
Springboot 整合 logback 日志框架
文章目录 整合 Logback 日志框架第一步:导入依赖第二步:导入配置(logback.xml)详解 使用(记录日志) 遇到问题一解决方案 整合 Logback 日志框架 第一步:导入依赖 (Springboot 会自己…...
Hugging face简要介绍
1.注册使用huggingface 2.在Datasets下可以查看数据集 3.在Models下可以查看模型,左侧是对模型的分类 4.官方文档查看https://huggingface.co/docs 5.主要模型: 自回归:GPT、Transformer-XL、XLNet 自编码:BERT、ALBERT、RoBERT…...
A股知识答题pk小程序怎么做?
A股知识答题pk小程序怎么做?以下是制作A股知识答题PK小程序的一般步骤: 一、 需求分析与规划: 明确目标:确定小程序的主要目标,比如是为了帮助用户学习A股知识、进行趣味竞赛,还是作为金融教育工具等。 …...
单细胞转录组 —— kb-python 原始数据处理
单细胞转录组 —— kb-python 原始数据处理 前言 kallisto|bustools 是一种用于预处理 scRNA-seq 数据的工作流程。 数据预处理步骤包括: 将 reads 与其来源细胞关联起来;根据唯一分子标识符(UMI)对 reads 进行去重࿱…...
全同态加密算法概览
我们前面有谈到《Paillier半同态加密算法》,半同态加密算法除了支持密文加法运算的 Paillier 算法,还有支持密文乘法计算的 RSA 算法,早期的PSI(隐私求交)和PIR(匿踪查询)都有使用基于RSA盲签名技术来实现。今天我们来谈谈能够有效支持任意函…...
leetcode 刷题day38动态规划Part07 打家劫舍(198.打家劫舍、213.打家劫舍II、337.打家劫舍III)
198.打家劫舍 思路: 1、dp[i]为到第i家偷到的最高金额。 2、如果偷第i家,那么dp[i]dp[i-2]nums[i],如果不偷,则dp[i]dp[i-1],所以递推公式dp[i]max(dp[i-2]nums[i],dp[i-1])。 3、初始值,根据递推公式,我们…...
C0010.Qt5.15.2下载及安装方法
1. 下载及安装 Qt 添加链接描述下载地址:http://download.qt.io/ 选择 archive 目录 安装Qt **注意:**本人使用的是Qt5.15.2版本,可以按如下方法找到该版本;...
制造企业MES管理系统的应用策略与实施路径
在智能制造浪潮的席卷之下,MES管理系统作为连接生产计划与车间操作的核心桥梁,其战略地位愈发显著。本文旨在深入剖析MES管理系统在智能制造转型中的核心价值、实施策略及实践路径,为制造企业探索智能化生产之路提供实践指导与灵感启发。 MES…...
Halcon 3D应用 - 胶路提取
1. 需求 本文基于某手环(拆机打磨处理)做的验证性工作,为了项目保密性,只截取部分数据进行测试。 这里使用的是海康3D线激光轮廓相机直线电机的方式进行的高度数据采集,我们拿到的是高度图亮度图数据。 提取手环上的胶…...
【Redis】Redis线程模型
目录 1. Redis 是单线程的,还是多线程的?2. Redis单线程模式是怎么样的?Redis 单线程模式的优势Redis 单线程的局限性Redis 单线程的优化策略 3. Redis采用单线程为什么还这么快4. Redis 6.0 之前为什么使用单线程?5. Redis 6.0 之…...
Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...
无所畏惧地面对未知,并将其视为成长的机会 大纲官网快速入门1.安装node.js -- 这里推荐用nvm管理2.脚手架创建3.electron 包安装到应用的开发依赖4.创建主进程(main.js)并启动项目1.创建页面2.配置main.js3.启动项目 -- 效果 进阶 -- 基于项目场景功能使用场景一&am…...
linux Load Average 计算
在内核代码 kernel/sched/loadavg.c 中有一个公式: a1 a0 * e a * (1 - e) 此算法是指数加权移动平均法(Exponential Weighted Moving Average,EMWA),是一种特殊的加权移动平均法,它考虑当前和历史的所有数据&#…...
pandas常用数据格式IO性能对比
前言 本文对pandas支持的一些数据格式进行IO(读写)的性能测试,大数据时代以数据为基础,经常会遇到操作大量数据的情景,数据的IO性能尤为重要,本文对常见的数据格式csv、feather、hdf5、jay、parquet、pick…...
【D3.js in Action 3 精译_031】3.5.2 DIY实战:在 Observable 平台实现带数据标签的 D3 条形图并改造单元测试模块
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…...
华为OD机试真题-字符串分割
题目描述: 给定非空字符串s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数。 1、若分割不成功,则返回0。 2、若分割成功且分割结果不唯一,则返回-1。 3、若分割成功且分割结果唯一,则返…...
编程技巧:提高代码健壮性与可维护性的关键方法(以 Shell 为例)
在脚本编写和自动化工作中,良好的编程技巧对于确保代码的健壮性和可维护性至关重要。以下是一些关键的编程技巧,包括模块化设计、单元测试、版本控制、处理边界条件、错误处理、中间值保存和创建 Flag。本文将通过 Shell 脚本示例来阐述这些技巧的应用。 1. 模块化设计 **定…...
【无标题】ReadableStream is not defined
升级 node 版本到 18 及以上即可解决...
【JVM】高级篇
1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址:https://www.graalvm.org/ 官方标语:Build faster, smaller, leaner applications。 更低的CPU…...
nacos1.4源码-服务发现、心跳机制
nacos的服务发现主要采用服务端主动推送客户端定时拉取;心跳机制通过每5s向服务端发送心跳任务来保活,当超过15s服务端未接收到心跳任务时,将该实例设置为非健康状态;当超过30s时,删除该实例。 1.服务发现 nacos主要采…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...

