MySQL-增删改查
一、Create(创建)
📖 语法:
INSERT INTO table_name(value_list);
当我们使用表的时候,就可以使用这个语法来向表中插入元素~
我们这边创建一个用于示范的表(Student)~
create table student(
id int,
name varchar(20),
chinese int,
math int,
english int);
此时student就是一个空的表,然后我们就可以向其中插入元素:

那么如果说,此时一位学生的English学科缺考了,不应该录入成绩,应该怎么办?
其实很好办,我们可以针对一个学生,只添加一部分的数据即可。

同样的,我们也可以一次性添加多个成员:

Records: 2 表示成功插入了 2 条记录。
Duplicates: 0 表示没有重复的记录插入。
Warnings: 0 表示在执行插入操作时没有产生任何警告信息。
二、Retrieve(检索)
① Select 查询
📖 语法:
SELECT (values) from table_name;
上面我们其实就用到了:
📕 (select * from student)
其中的 ' * ' 代表的其实就是"全部"的意思,也就是"查询表中所有列的所有元素"
📕(select name from student)
代表只查询表中的"name"

📕 (select id,chinese)
代表只查询表中的"id"和"name"

除了上面一些直接查询表中的信息的方法,我们还可以在查询的时候自己定义一些想查询的东西,比如我们此时想知道"每个学生的(语文)和(数学)成绩的总和为多少":
📕 (select id ,name, chinese + math + english from student)
代表查询每个学生的 id,姓名,以及总分

(需要注意的是,null与任何数运算都等于null)
这么看或许非常别扭,所以我们还可以给它起个别名
📕 (select id,name,chinese + math + english as '总分' from student)
代表查询每个学生的 id,姓名,以及总分(别名为总分)

这样我们的表就变得简介,明了了
② Order by 排序查询
上面我们的查询,就对学生的总成绩进行了查询。而就现实生活的理想状态来说,当这些成绩出现时,我们更希望它是"有序"的,那么就引出了我们的 "Order by"~
📖 语法:
SELECT (values) from table_name order by (values) (排序方法);
| 语法 | 意义 |
| ASC | 升序(从小到大) |
| DESC | 降序(从大到小) |
比如此时我们要对学生的英语成绩降序排序:
📕 (select * from student order by english desc)

那让我们再添加一些数据,以便后续展示更加明显。

我们再试试,对于别名进行一个排序应该依然是如此吧?我们来试试:

但结果却有点出乎意料了~为什么会失败呢?
其实这是因为书写的形式不对,如果带了引号,'总分' 会被当作字符串常量,而不是列别名。
所以此时 order by '总分' 会对一个固定的字符串值排序,导致所有行的排序结果相同,实际并未按计算列排序。
那么想要实现这种排序,也很简单,我们只需要直接删除掉引号即可~
📕 select *, chinese + math + english as '总分' from student order by 总分 desc;

📕 (select * , chinese + math + english as '总分' from student order by chinese + math + english desc;)

📕 (select * , chinese + math + english as '总分' from student order by chinese + math + english asc;)

需要一提的是,如果我们不加 desc 也不加 asc 那么它的默认顺序是一个升序的:

③ Where 条件查询
而上面只能做到很简单的查询操作,想要查询某些符合特定条件的数据,就要用到"where"了。
📖 语法:
SELECT (values) from table_name where (条件语句);
📕 比较运算符:
| 运算符 | 说明 |
| >,>=,<,<= | 大于,大于等于,小于,小于等于 |
| = | 等于,无法比较NULL(NULL = NULL的结果是NULL) |
| <=> | 等于,可以比较NULL(NULL <=> NULL的结果为TRUE(1)) |
| !=,<> | 不等于 |
| value BETWEEN a0 AND a1 | 范围匹配[a0,a1] 如果value在其中则返回TRUE(1) (NOT BETWEEN代表取反) |
| value IN (列表) | 如果value在列表中,则返回TRUE(1) (NOT IN代表取反) |
| IS NULL | 是NULL |
| IS NOT NULL | 不是NULL |
| LIKE | 模糊匹配 %表示任意多个字符 _表示任意一个字符 NOT LIKE代表取反 |
📕 逻辑运算符:
| 运算符 | 说明 |
| AND | 多个条件都必须为TRUE 结果才能是TRUE |
| OR | 任意一个条件为TRUE 结果就为TRUE |
| NOT | 条件为TRUE 结果就为FALSE |
📕 查询所有学生中 语文 > 95分 的学生
select * from student where chinese > 95;

📕 查找 英语缺考(NULL) 的学生
select * from student where english <=> NULL;

📕 查询 总分在[275,290]之间 的学生
select *,chinese + math + english as '总分' from student where chinese + math + english between 275 and 290;

注意!这里是不可以使用"总分"来进行查询的,使用where时不能够使用别名来进行判别~

这是因为"执行顺序"的差异:
一般情况下,我们对数据进行查询时,会先通过"from"确定数据源,然后中间会经过一系列"对数据的操作",其中"where"的过滤数据操作是在"起别名"之前的,所以此时的where是查询不到"别名"的!这点比较重要,需要记住。
📕 查询 语文成绩(89,90,95) 的学生
select * from student where chinese in (89,90,95);

📕 查询 学生名为"小_" 的学生
select * from student where name like "小_";

📕 查找 语文 = 数学 = 英语 的学生
select * from student where chinese = math and math = english;

注意,这里不能使用 chinese = math = english,这里的顺序是 先判断"chinese = math",返回0 或 1,然后判断(0/1 = english),这样就会得到错误的结果。
④ limit 分页查询
📖 语法:
SELECT (values) from table_name limit (num) offset (start);
📕 以3个为一页,从第一个开始查询
select * from student limit 3 offset 0;

📕 以3个为一页,从第四个开始查询
select * from student limit 3 offset 3;

⑤ distinct 去重查询
📖 语法:
SELECT distinct (values) from table_name;
📕 查找学生中所有出现的语文成绩(不重复)

三、Update(修改)
📖 语法:
update table_name set (value = 新值) where (条件语句);
📕 将语文为 89 分的同学,语文成绩 + 10分
update student set chinese = chinese + 10 where chinese = 89;

(这里不能使用 chinese += 10,MySQL中不能识别这种语句)
📕 将总成绩倒数前三的学生,数学成绩 + 30分
update student set math = math + 30 where chinese + math + english is not null order by chinese + math + english asc limit 3;

(这里我们查找三科成绩总和不是null的学生,因为null与任何数相加都为null,并且null与其他数字进行对比的结果是不确定的。)

(注意,最好使用where进行限制,否则会对整个表进行操作,非常危险)
四、Delete(删除)
📖 语法:
delete from table_name where (条件语句);
📕 删除名字叫'大王'的同学
delete from student where name = '大王';

📕 删除整个表中的数据
delete from student;

(非常危险的操作!)
注意,delete from student 和 drop table student 是不同的
delete from student是删除表中数据,但表还在。(相当于用橡皮把纸上的画擦了)
drop table student是删除表。(相当于直接把纸撕了~)

那么这篇关于MySQL的(增删改查)的文章到这里就结束啦,作者能力有限,如果有哪里说的不够清楚或者不够准确,还请各位在评论区多多指出,我也会虚心学习的,我们下次再见啦
相关文章:
MySQL-增删改查
一、Create(创建) 📖 语法: INSERT INTO table_name(value_list); 当我们使用表的时候,就可以使用这个语法来向表中插入元素~ 我们这边创建一个用于示范的表(Student)~ create table student( id int, name varchar(20), chinese int, math…...
开源堡垒机 JumpServer 社区版实战教程:发布机的配置与Website资产配置使用
文章目录 开源堡垒机 JumpServer 社区版实战教程:发布机的配置与Website资产配置使用一、功能简述二、应用发布机2.1 版本要求2.2 创建应用发布机2.2.1 通过WinRM的协议进行应用发布机的创建2.2.2 通过OpenSSH的协议进行应用发布机的创建2.2.2.1 下载OpenSSH2.2.2.2…...
【STM32】使用电打火器测试火焰传感器,去掉传感器LED依然亮
项目需求:火焰传感器识别到火焰后,LED灯闪烁,然后熄灭。 现象描述:不需要火焰传感器,当使用电打火器时电路板LED灯也会闪烁。(详情看底部视频) fire.h #ifndef __FIRE_H #define __FIRE_H …...
代码随想录算法训练day64---图论系列8《拓扑排序dijkstra(朴素版)》
代码随想录算法训练 —day64 文章目录 代码随想录算法训练前言一、53. 117. 软件构建—拓扑排序二、47. 参加科学大会---dijkstra(朴素版)总结 前言 今天是算法营的第64天,希望自己能够坚持下来! 今天继续图论part!今…...
机器学习数学基础:32.斯皮尔曼等级相关
斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数(Spearman’s rank - correlation coefficient),常用 ρ \rho ρ表示,是一种非参数统计量,用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…...
《论区块链技术及应用》审题技巧 - 系统架构设计师
区块链技术及应用论题写作框架 一、考点概述 本论题“区块链技术及应用”主要考察软件测试工程师对区块链技术的理解及其在软件项目中的实际应用能力。论题涵盖了多个关键方面,首先要求考生对区块链技术有全面的认识,包括但不限于其作为分布式记账技术…...
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(四)
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(四) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1:应急响应&…...
单片机的串口(USART)
Tx - 数据的发送引脚,Rx - 数据的接受引脚。 串口的数据帧格式 空闲状态高电平,起始位低电平,数据位有8位校验位,9位校验位,停止位是高电平保持一位或者半位,又或者两位的状态。 8位无校验位传输一个字节…...
Modelfile配置说明
参数说明翻译 参数描述值类型示例用法mirostat启用Mirostat采样以控制困惑度。(默认:0,0禁用,1Mirostat,2Mirostat 2.0)intmirostat 0mirostat_eta影响算法对生成文本反馈的响应速度。较低的学习率将导致调…...
pnpm的基本用法
以下是 pnpm 的核心命令和使用指南,涵盖从安装依赖到项目管理的常见操作: 1. 基础命令 (1) 安装依赖 pnpm install # 安装 package.json 中的所有依赖 pnpm install <包名> # 安装指定包(自动添加到 dependencies…...
动态规划(背包问题)--是否逆序使用的问题--二进制拆分的问题
动态规划(背包问题) 题目链接01背包代码 完全背包问题代码 多重背包问题 I代码 什么时候适用逆序多重背包问题 II(超百万级的复杂度)代码 关于二进制拆分 题目链接 01背包 代码 #include <iostream> #include <vector&…...
Vue 中动态实现进度条
在 Vue 中动态实现进度条,基本上有两种常见的方法:直接通过 Vue 数据绑定控制样式,或者利用外部库来实现更复杂的功能。我们会深入探讨这两种方式,并且详细说明每种方法的实现步骤、优缺点以及使用场景。 1. 使用 Vue 数据绑定来…...
如何基于PyTorch做二次开发
基于PyTorch进行二次开发以实现可视化工程,可以从以下几个方面入手:模型结构可视化、训练过程监控、特征可视化等。以下是一些推荐的GitHub项目,这些项目可以帮助你快速搭建一个可视化的工程环境: ### 1. **PyTorch CNN Visualiz…...
Mac 版 本地部署deepseek ➕ RAGflow 知识库搭建流程分享(附问题解决方法)
安装: 1、首先按照此视频的流程一步一步进行安装:(macos版)ragflowdeepseek 私域知识库搭建流程分享_哔哩哔哩_bilibili 2、RAGflow 官网文档指南:https://ragflow.io 3、RAGflow 下载地址:https://github.com/infi…...
算法——后缀平衡树
先回想一下之前讨论的内容。之前我们详细讨论了后缀树,包括它的构建、应用以及相关算法。用户可能是在了解后缀树之后,想要进一步探索相关的数据结构,或者是想比较后缀树和后缀平衡树的异同。 后缀平衡树并不是一个常见的数据结构名称&#…...
姿态矩阵/旋转矩阵/反对称阵
物理意义,端点矢量角速率叉乘本身向量; 负号是动系b看固定系i是相反的; 一个固定 在惯性导航解算中,旋转矢量的叉乘用于描述姿态矩阵的微分方程。你提到的公式中, ω i b b \boldsymbol{\omega}_{ib}^b \times ωibb…...
【大语言模型】【整合版】DeepSeek 模型提示词学习笔记(散装的可以看我之前的学习笔记,这里只是归纳与总结了一下思路,内容和之前发的差不多)
以下是个人笔记的正文内容: 原文在FlowUs知识库上,如下截图。里面内容和这里一样,知识排版好看一点 一、什么是 DeepSeek 1. DeepSeek 简介 DeepSeek 是一家专注于通用人工智能(AGI)的中国科技公司,主攻大模型研发与…...
ollama无法通过IP:11434访问
目录 1.介绍 2.直接在ollama的当前命令窗口中修改(法1) 3.更改ollama配置文件(法2) 3.1更新配置 3.2重启服务 1.介绍 ollama下载后默认情况下都是直接在本地的11434端口中运行,绑定到127.0.0.1(localhost)&#x…...
⭐算法OJ⭐位操作用法总结+实战指南(C++实现)
位操作在OJ 题目中是一种非常高效的工具,常用于优化时间复杂度和空间复杂度。本文是位操作在 OJ 题目中的主要用法总结,并以 C 实现为例。 相关题目:《C⭐算法OJ⭐Single Number 系列(位操作)》 文章目录 1. 基本位操…...
2.1 用大模型构建新人答疑机器人-大模型ACP模拟题-真题
真题 真题:如何初始化OpenAI客户端 client OpenAI( api_keyos.getenv("DASHSCOPE_API_KEY"), base_url"https://dashscope.aliyuncs.com/compatible-mode/v1", ) AI生成模拟题 一、单选题 (每题5分,共6题ÿ…...
单片机裸机编程-时机管理
对于 RTOS 实时操作系统,我们是通过 TASK(任务)进行底层操作的,这与裸机编程中的函数(fun)类似。不同的任务或函数实现不同的功能,在RTOS中,单片机有信号量、队列等不同任务之间的通…...
Bugku CTF CRYPTO
Bugku CTF CRYPTO 文章目录 Bugku CTF CRYPTO聪明的小羊ok[-<>]散乱的密文.!? 聪明的小羊 描 述: 一只小羊翻过了2个栅栏 fa{fe13f590lg6d46d0d0} 分 析:栅栏密码,分2栏,一个栏里有11个 ①手动解密 f a { f e 1 3 f 5 9 0 l g 6 d 4 …...
【洛谷】【ARC100E】Or Plus Max(高维前缀和)
传送门:Or Plus Max 高维前缀和 题目描述 長さ 2N の整数列 A0, A1, ..., A2N−1 があります。(添字が 0 から始まることに注意) 1 ≤ K ≤ 2N−1 を満たすすべての整数 K について、次の問題を解いてください。 i,j を整数と…...
宿主机的 root 是否等于 Docker 容器的 root?
在 Docker 容器化技术中,宿主机的 root 和 容器的 root 并不完全相同,尽管它们都称作 “root 用户”。这里需要明确的是,Docker 容器与宿主机之间存在隔离机制,容器内的 root 用户和宿主机的 root 用户有一些关键的区别。 1. 宿主…...
SmolLM2:多阶段训练策略优化和高质量数据集,小型语言模型同样可以实现卓越的性能表现
SmolLM2 采用创新的四阶段训练策略,在仅使用 1.7B 参数的情况下,成功挑战了大型语言模型的性能边界: 在 MMLU-Pro 等测试中超越 Qwen2.5-1.5B 近 6 个百分点数学推理能力(GSM8K、MATH)优于 Llama3.2-1B在代码生成和文…...
云原生降本之路:技术创新与应用解析
随着云计算的快速发展,云原生技术已成为企业降低成本、提高效率的重要手段。本文基于腾讯云容器技术专家孟凡杰的PPT内容,深入探讨了云原生技术在降低企业成本方面的应用,包括资源利用现状、成本优化思路、Kubernetes中的资源分配、横向与纵向…...
《Effective Objective-C》阅读笔记(中)
目录 接口与API设计 用前缀避免命名空间冲突 提供“全能初始化方法” 实现description方法 尽量使用不可变对象 使用清晰而协调的命名方式 方法命名 编辑类与协议命名 为私有方法名加前缀 理解OC错误模型 理解NSCopying协议 协议与分类 通过委托与数据源协议进行…...
Hbase客户端API——语句大全
目录 创建表: 插入数据: 删除数据: 修改数据: 查询数据:Get 查询数据:Scan 查询数据:过滤查询 创建表: 检验: 插入数据: 验证 一次多条数据插入 验证&…...
MQ(Message Queue)
目录 MQ(Message Queue)基本概念 为什么要使用消息队列? 使用消息队列有什么缺点? 如何保证消息不丢失?(如何保证消息的可靠性传输?/如何处理消息丢失的问题?) 通用的MQ场景: RabbitMQ如何保证消息不丢失? 生产者丢数据…...
SQL进阶实战技巧:汽车转向次数分析 | 真实场景案例
目录 0 问题描述 1 数据准备 2 问题分析 3 小结 关键技术总结 0 问题描述 现有一组实际汽车在平整路面安全行驶数据,每秒记录一次汽车的车头绝对指向,车头方向记为[0-360)度,部分数据如下,完整数据后附文件。...
