MySQL——CRUD

devtools/2025/2/11 7:37:09/

一、Create新增数据行

语法:

其中,column表示要插入的列的列名,value_list表示列名对应的数据,且可以同时插入多行

 一、单行数据 + 全列插入

全列插入可以不在表名student后面指定列名,也就是说,如果没有指定列名,就必须进行全列插入,否则报错:

如果表名student后面有指定列名,那么values中的值必须和列名一一对应,否则报错:


二、指定列插入

如新增一条数据,名字为王五:


三、多行插入


二、Retrieve检索

2.1 语法 


2.2 Select

 首先先通过如下SQL语句构造表:

CREATE TABLE exam (id BIGINT,name VARCHAR(20) COMMENT '同学姓名',chinese float COMMENT '语⽂成绩',math float COMMENT '数学成绩',english float COMMENT '英语成绩'
);
-- 插⼊测试数据 
INSERT INTO exam (name, chinese, math, english) VALUES
(1, '唐三藏', 67, 98, 56),
(2, '孙悟空', 87, 78, 77),
(3, '猪悟能', 88, 98, 90),
(4, '曹孟德', 82, 84, 67),
(5, '刘⽞德', 55, 85, 45),
(6, '孙权', 70, 73, 78),
(7, '宋公明', 75, 65, 30);

一、全列查询

语法:

示例:


二、指定列查询

语法:

示例:

如只查询name


二、查询字段为表达式

MySQL返回的表为一个临时表,我们也可以在表中查找一个表达式,如:

接下来,在返回的临时表中,给所有人的语文成绩+10:

接下来,再计算所有学生的语文,数学,英语的总分:


三、为查询结果设置别名

语法:

示例:

将上面的三科总分的字段名设置为总分:

如果别名中有空格就必须用单引号引起来:


四、为查询结果去重

语法:要查询的字段前加上关键字 distinct

示例:

需要注意的是,distinct关键字需要紧跟在select之后,他会查询的所有列去重,不能对单独某一列去重,如:

如果对查询的多个列去重,需要每个列的数值都一样才会被去重,如:

!!!Select总结: 

<1>查询时不加限制会返回表中所有结果,如果数据量过大,会很消耗服务器资源

<2>在生产环境中不要使用不加限制的查询


2.3 where条件查询

语法:

(1)比较运算符:


(2)逻辑运算符

示例:

 一、基本查询:

(1)查询英语不及格的同学及英语成绩 ( < 60 ) :

(2)查询语文成绩高于英语成绩的同学:

(3)查询总分在180分以下的同学:

我们发现,使用别名作为过滤条件会报错

这是因为SQL语句是有执行顺序的:

SQL语句的执行顺序是:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT,别名(Alias)是在SELECT阶段定义的,而WHERE子句的执行在SELECT之前,因此数据库引擎在解析WHERE时无法识别别名

因此,正确的写法为:


二、AND和OR

(1)查询语文成绩大于80分且英语成绩大于80分的同学:

(2)查询语文成绩大于80分或英语成绩大于80分的同学:

(3)and 和 or 的优先级

           and的优先级大于or,如:


三、范围查询

(1)语文成绩在 [80, 90] 分的同学及语文成绩 :

         可以使用and between and 两种方式来实现,如:

(2)数学成绩是 78 或者 79 或者 98 或者 99 分的同学及数学成绩 :

         可以使用 in 也可以使用 or 实现:


四、模糊查询(%匹配任意个字符,_匹配一个字符)

(1)查询所有姓孙的同学(使用%):

(2)查询所有姓孙且名字为两个字的同学(使用_):


五、NULL的查询

(1)查询数学为NULL的记录:

(2)查询数学不为NULL的记录:

(3)NULL与其他值进行运算结果为NULL:

!!!where 总结:
<1> WHERE条件中可以使用表达式,但不能使用别名 
<2>AND的优先级高于OR,在同时使用时,建议使用小括号()包裹优先执行的部分 • 过滤NULL时不要使用等于号(=)与不等于号(!= , <>) 
<3>NULL与任何值运算结果都为NULL 


2.4 order by 排序

语法:

其中,where 必须写在order by之前

示例:

如按语文成绩进行升序排序:

按数学成绩降序排序:

在没有书写排序规则时默认升序排序

依次按数学降序,英语升序,语文升序的方式显示:

查询同学的总分,且由高到底排序:

使用列的别名进行排序

NULL进行排序时,视为比任何值(包括负数)都小

如果查询的值为表达式时,表中数据存在NULL,那么该行数据对应表达式的值为NULL,如:

!!!order by总结:

<1> 查询中没有ORDER BY字句,返回的顺序是未定义的,永远不要依赖这个顺序 
<2>ORDER BY 子句中可以使用列的别名进行排序 
<3>NULL 进行排序时,视为比何值都小,升序出现在最上面,降序出现在最下面 


2.5 分页查询

语法:

通过分页查询可以限制查询结果集的条数,有效减少服务器的压力。

示例:假设一页有两条数据

   查询exam中第一页的数据:(offset从0开始)

  查询exam中的第二页数据:(offset从2开始)

因此,得出结论,第n页的记录s = (当前页号-1)* 每页显示的记录数


三、Update 修改

语法:

示例:

将孙悟空同学的数学成绩改为80分:

将曹孟德的数学成绩改为60,语文成绩改为70:

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分:

将所有同学的语文成绩更新为原来的2倍:

!!!Update注意事项

• 以原值的基础上做变更时,不能使用math += 30这样的语法 
• 不加where条件时,会导致全表数据更新,谨慎操作  


四、Delete 删除

语法:

示例:

 删除孙悟空同学的考试成绩:

删除整张表的数据:

 


http://www.ppmy.cn/devtools/157864.html

相关文章

如何清理浏览器一段时间以前的缓存

浏览器缓存是浏览器为了提高网页加载速度而自动存储的数据&#xff0c;包括图片、脚本、样式表等文件。然而&#xff0c;随着时间的推移&#xff0c;这些缓存数据可能会占用大量磁盘空间&#xff0c;甚至影响浏览器的性能和稳定性。因此&#xff0c;定期清理浏览器缓存是一个良…

《IP-Adapter: 适用于文本到图像扩散模型的文本兼容图像提示适配器》学习笔记

paper:2308.06721 GitHub&#xff1a;tencent-ailab/IP-Adapter: The image prompt adapter is designed to enable a pretrained text-to-image diffusion model to generate images with image prompt. 目录 摘要 1、介绍 2、相关工作 2.1 文本到图像扩散模型 2.2 大模…

【vscode源码】如何编译运行vscode及过程中问题解决

Visual Studio Code&#xff08;VSCode&#xff09;作为一款流行的开源编辑器&#xff0c;市面上很多基于vscode的套壳APP&#xff0c;本文将详细介绍如何编译和运行VSCode的源码&#xff0c;并总结一些常见问题以及解决方案&#xff0c;帮助开发者顺利二次开发。 1. 准备工作(…

node.js使用mysql2对接数据库

一、引言 在现代Web开发中&#xff0c;Node.js作为一种高效、轻量级的JavaScript运行时环境&#xff0c;已经广泛应用于后端服务的开发中。而MySQL&#xff0c;作为一个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;提供了强大的数据存储和查询功能…

安卓基础(Okhttp3)

1️⃣ 添加 OkHttp 依赖 &#x1f4cc; 在 app/build.gradle 添加 OkHttp 依赖 dependencies {implementation com.squareup.okhttp3:okhttp:4.9.3 }2️⃣ 发送 GET 请求 &#x1f4cc; 发送一个 GET 请求 实例化okhttp客户端--->创建请求--->发送请求 import okhtt…

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…

java打印出每个文件夹里的所有文件名

在 Java 中&#xff0c;若要打印出每个文件夹里的所有文件名&#xff0c;可以使用递归方法来遍历文件夹及其子文件夹。下面将分别介绍使用传统的 java.io 包和 Java 7 引入的 java.nio.file 包来实现该功能。 使用 java.io 包实现 import java.io.File;public class PrintFil…

全志T527 音频适配

移植tlv320aic3111音频驱动 1.第一步,修改dts设备树,在设备树中添加有关音频芯片的硬件资源。因为板子跟音频芯片采用的twin连接,tlv320aic31xx节点地址为18,在twi中添加如下信息 tlv320aic31xx: tlv320aic31xx@18 { #sound-dai-cells = <0>; …