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主要采…...
USB HID设备中断传输ACK机制与MDK实现
1. USB HID设备中断传输的ACK确认机制解析 在USB HID设备开发过程中,确保数据包被主机正确接收是许多开发者遇到的典型问题。当使用中断传输(Interrupt Transfer)方式发送HID报告时,设备端需要明确知道主机是否成功接收了数据。这是USB协议栈中一个关键但…...
企业私有代码仓库建设:高可用、备份恢复与灾备方案复盘
开篇 企业内网私有化代码仓库,是研发资产的核心单点。一旦出现仓库不可用、数据丢失、分支错乱、权限越权,会直接导致研发停摆、资产外泄、合规不通过。很多团队初期用单机Git/SVN、简单文件备份,看似低成本,在多团队、高并发、信…...
SM2国密算法实战:从Java工具类到与前端(JS)的跨语言加解密联调避坑指南
SM2国密算法实战:前后端联调中的密钥格式与加解密兼容性解决方案 在前后端分离架构中实现国密SM2算法的端到端加密,就像让两个说不同方言的人进行秘密对话——稍有不慎就会导致"鸡同鸭讲"的尴尬局面。最近在金融项目中使用SM2实现登录报文加密…...
ArduPilot硬件抽象层(HAL)深度解析:如何让你的飞控代码轻松跑在不同芯片上?
ArduPilot硬件抽象层(HAL)深度解析:跨平台飞控开发实战指南 当开发者尝试将ArduPilot移植到一块全新的飞控板时,最常遇到的挑战莫过于如何让同一套控制算法在不同硬件架构上无缝运行。这正是硬件抽象层(HAL)设计的精妙之处——它如同一位技艺高超的翻译官…...
Python/Numpy线性代数编程:DeepLearningBook-Notes代码实现完整手册
Python/Numpy线性代数编程:DeepLearningBook-Notes代码实现完整手册 【免费下载链接】deepLearningBook-Notes Notes on the Deep Learning book from Ian Goodfellow, Yoshua Bengio and Aaron Courville (2016) 项目地址: https://gitcode.com/gh_mirrors/de/de…...
SteamAutoCrack终极破解指南:三分钟移除游戏DRM保护
SteamAutoCrack终极破解指南:三分钟移除游戏DRM保护 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否遇到过Steam游戏无法离线运行的问题?或者想要在没有S…...
光谱分析避坑指南:为什么你的多项式拟合基线校正总是不准?
光谱分析避坑指南:为什么你的多项式拟合基线校正总是不准? 拉曼光谱和红外光谱分析中,基线漂移是困扰研究人员的常见问题。就像摄影师需要先调平三脚架才能拍出清晰照片一样,准确的光谱基线校正是后续定量分析的基石。然而在实际操…...
RAG夺命10连问,你能抗住第几问?
前言最近金三银四,很多小伙伴在准备大厂面试,几乎每个人都被问到了同一个技术点——RAG(检索增强生成)。从阿里到字节,从腾讯到美团,RAG已经成为大模型应用方向必考的“压轴题”。但是,很多求职…...
【软考高级架构】论文范文22——论系统可靠性设计及其应用
论系统可靠性设计及其应用 论系统可靠性设计及其应用,本文结合2014年试题题目进行深入论述,探讨如何在实际项目中进行软件的可靠性设计,确保系统在复杂和高风险环境下的稳定性与高效性。在现代复杂系统中,软件的可靠性设计已成为保障系统高效稳定运行的关键因素之一。随着技…...
消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置
1. 微信/钉钉自动化不是“接个API就完事”,而是上下文边界的重新定义 大多数人第一次配置 Hermes Agent 接入微信或钉钉时,会下意识打开官方文档,复制粘贴几行 webhook 配置,跑通一条“收到消息→回复‘你好’”的 demo 就以为大功告成。我试过三次——第一次在测试环境里…...

