【MySQL】CRUD

news2025/5/25 20:58:45

CRUD 简介

CRUD是对数据库中的记录进行基本的增删改查操作

  • Create(创建)
  • Retrieve(读取)
  • Update(更新)
  • Delete(删除)

一、新增(Create)

语法:

INSERT [INTO] table_name [(colum [, column] ...)]
VALUES (value_list) [, (value_list)] ...
  • INTO 可以省略但是一般不省略
  • 表名后跟着要增加数据的列名,同时 数据的位置 也要对应 列的位置

示例:

2.1 单行数据 + 全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO EXAM 
VALUES (1,'唐三藏',70,80,90);

INSERT INTO EXAM 
VALUES (2,'孙悟空',90,90,90);

2.2 多行数据 + 指定列插入

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO EXAM(id,name,math) VALUES 
(3,'猪八戒',60),
(4,'沙悟净',70);

二、查询(Retrieve)

语法:

SELECT
    [DISTINCT]
    select_expr [, select_expr] ...
    [FROM table_references]
    [WHERE where_condition]
    [GROUP BY {col_name | expr}, ...]
    [HAVING where_condition]
    [ORDER BY {col_name | expr } [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

示例:

3.1 查询表中所有的列

select * from 表名;
  • select:表示查询的关键字
  • * :所有的列
  • from 表名:要从哪个表中查询数据

3.2 查询指定列

select 列名1 [,列名2] from 表名;

3.3 查询字段为表达式

常量表达式

查询列表中的表达式可以是表中不存在的值或列,如果是字符串常量要写到单引号中

算术表达式

可以通过加上 as 来修改临时列名

所有的 select 操作,都会先从物理表(真实存在的表)中查询对应的值,再计算表达式的值,合并结果后,通过临时表返回。

3.4 去重查询

通过 DISTINCT 关键字来对某列数据进行去重

3.5 条件查询

比较运算符:

逻辑运算符:

  • WHERE条件可以使用表达式,但不能使用别名
  • AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

代码示例:

插入数据:

INSERT INTO EXAM (id,name, chinese, math, english) VALUES
 (1,'唐三藏', 67, 98, 56),
 (2,'孙悟空', 87.5, 78, 77),
 (3,'猪悟能', 88, 98.5, 90),
 (4,'曹孟德', 82, 84, 67),
 (5,'刘玄德', 55.5, 85, 45),
 (6,'孙权', 70, 73, 78.5),
 (7,'宋公明', 75, 65, 30);
-- 查询英语不及格的同学(<60)
SELECT name,english FROM EXAM WHERE english < 60;

-- 查询语文成绩好于英语成绩的同学
SELECT name,chinese,english FROM EXAM WHERE chinese > english;

-- 查询语文成绩大于80分且英语成绩大于80分的同学
SELECT * FROM EXAM WHERE chinese > 80 AND english > 80;

-- 查询语文成绩大于80分或者英语成绩大于80分的同学
SELECT * FROM EXAM WHERE chinese > 80 OR english > 80;

-- 查询语文成绩在 [80,90] 之间的同学
SELECT name,chinese FROM EXAM WHERE chinese BETWEEN 80 AND 90;

-- 也可以使用 AND
SELECT name,chinese FROM EXAM WHERE chinese >= 80 AND chinese <= 90;

-- 查询数学成绩是 58 或 59 的同学
SELECT name,math FROM EXAM WHERE math IN (58,59);

-- 模糊查询
-- %匹配任意多个(包括0个)字符
SELECT name FROM EXAM WHERE name LIKE '孙%'; -- 匹配到孙悟空,孙权
-- _匹配严格的一个任意字符
SELECT name FROM EXAM WHERE name LIKE '孙_'; -- 匹配到孙权

-- 查询数学成绩为空的人的数据
SELECT name,math FROM EXAM WHERE math is NULL;

-- 查询数学成绩不为空的人的数据
SELECT name,math FROM EXAM WHERE math is NOT NULL;

3.6 排序

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | DESC], ... ;
  • 查询中没有 ORDER BY 子句返回的顺序永远是未定义的
  • ORDER BY 子句中可以使用列的别名进行排序
  • NULL 进行排序时,视为比任何值都小

3.7 分页查询

像前面提到的 SELECT * FROM 表名 不能有效限制结果集的大小,是不安全的查询,有可能把服务器的资源耗尽,通过分页查询可以有效减少服务器的压力,同时也有较好的用户体验

-- 起始下标为0,
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s,n;

-- 从 s 开始,筛选 n 条结果,用法比第二种更明确
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

三、修改(Updata)

语法:

Update 表名 set 列名 = 值 [,列名=值]... WHERE 条件;
  • 以原值的基础上做变更时,不能使用 math += 30 这样的语法
  • 不加 WHERE 条件时,会导致全表数据被列新

四、删除(Delete)

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

代码示例:

-- 删除孙悟空同学的考试成绩
DELETE FROM EXAM WHERE name = '孙悟空';

-- 删除整表数据
DELETE FROM EXAM;
  • 不加 WHERE 条件时,会导致全表数据被删除

五、截断表

 让表恢复到最开始创建的状态

语法:

TRUNCATE [TABLE] tbl_name;
  • 只能对整表进行操作,不像 DELETE 一样针对部分数据
  • 不对数据操作所以比 DELETE 更快,TRUNCATE 在删除数据时不经过真正的事务,所以无法回溯
  • 会重置 AUTO_INCREMENT 项

AUTO_INCREMENT 是创建列时添加的关键字,可以让数据库帮我们对这个列的数据进行自增,像 ID 这样,每次插入数据都会自动 + 1

六、插入查询结果

把一个查询获取的值插入到另一个表中

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...
  • 查询出来的列要与插入的列一一对应

当我们需要删除表中的数据,重复的数据只能有一份时,如果每次查询都使用 DISTINCT 进行去重操作会严重影响效率。可以通过创建一个与 要被去重的表 结构相同的表,把去重的记录写到新表中,以后查询都从新表中查,这样真实的数据不丢失,又能保证查询效率。

七、聚合函数

7.1 常用函数

可以通过 COUNT(*) 来获取表中数据的数量,这个是 SQL 语言级别的标准,对于所有的软件都通用。

在 MYISAM 存储引擎中有一个变量记录了表中的记录数,获取记录可以通过这个变量直接读取,效率极高,但是不同数据库读取方式可能不同,要酌情使用

八、Group by 分组查询

 GROUP BY 可以将一个数据集分为若干个小组,方便进行其他数据处理

语法:

SELECT {col_name | expr} ,...,aggregate_function (aggregate_expr) -- 查询列表
    FROM table_references
    GROUP BY {col_name | expr}, ...  -- 分组条件
    [HAVING where_condition]        -- 针对分组之后的结果进行过滤
  • 查询列表中如果要写列名,列必须是group by中的列,或是包含在聚合函数中
  • aggregate_function:聚合函数,比如COUNT(),SUM(),AVG()...

Having 子句

使用 GROUP BY 对结果进行处理之后,对分组的结果进行过滤时,不能使用 WHERE 子句,而要使用 HAVING 子句

Having 与 Where 的区别

  • Having 用于对分组结果的条件过滤
  • Where 用于对表中真实数据的条件过滤

九、内置函数

在现在互联网项目中使用很少,因为可能对数据库的性能造成影响,一般把对数据的处理放在应用中

日期函数:

字符串函数:

数学函数:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2385605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot微服务架构(三):Spring Initializr创建CRM项目

使用Spring Initializr创建CRM项目 一、创建项目前的准备 访问Spring Initializr网站&#xff1a; 打开浏览器访问 https://start.spring.io/或者直接使用IDE&#xff08;如IntelliJ IDEA或Eclipse&#xff09;内置的Spring Initializr功能 项目基本信息配置&#xff1a; Proj…

【笔记】PyCharm 中创建Poetry解释器

#工作记录 在使用 PyCharm 进行 Python 项目开发时&#xff0c;为项目配置合适的 Python 解释器至关重要。Poetry 作为一款强大的依赖管理和打包工具&#xff0c;能帮助我们更便捷地管理项目的依赖项与虚拟环境。下面将详细记录在 PyCharm 中创建 Poetry 解释器的步骤。 前提条…

python中的numpy(数组)

&#xff08;0&#xff09;numpy介绍 NumPy是Python中用于科学计算的基础库&#xff0c;提供高效的多维数组对象ndarray&#xff0c;支持向量化运算&#xff0c;能大幅提高数值计算效率。它集成了大量数学函数&#xff08;如线性代数、傅里叶变换等&#xff09;&#xff0c;可…

rce命令执行原理及靶场实战(详细)

2. 原理 在根源上应用系统从设计上要给用户提供一个指定的远程命令操作的接口。漏洞主要出现在常见的路由器、防火墙、入侵检测等设备的web管理界面上。在管理界面提供了一个ping服务。提交后&#xff0c;系统对该IP进行ping&#xff0c;并且返回结果。如果后台服务器并没有对…

Fuzz 模糊测试篇JS 算法口令隐藏参数盲 Payload未知文件目录

1 、 Fuzz 是一种基于黑盒的自动化软件模糊测试技术 , 简单的说一种懒惰且暴力的技术融合了常见 的以及精心构建的数据文本进行网站、软件安全性测试。 2 、 Fuzz 的核心思想 : 口令 Fuzz( 弱口令 ) 目录 Fuzz( 漏洞点 ) 参数 Fuzz( 利用参数 ) PayloadFuzz(Bypass)…

展示了一个三轴(X, Y, Z)坐标系!

等轴测投影”&#xff08;isometric projection&#xff09;风格的手绘风格三维图&#xff0c;即三条坐标轴&#xff08;x₁, x₂, x₃&#xff09;看起来彼此垂直、等角分布&#xff08;通常是 120 夹角&#xff09;&#xff0c;它是常见于教材和数学书籍的 “假三维”表示法。…

【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter1 初识小程序 - 3项目目录结构4快速上手

3 项目目录结构 3.1 项目目录结构 3.1.1 目录介绍 # 1 项目主配置文件&#xff0c;在项目根路径下&#xff0c;控制整个项目的-app.js # 小程序入口文件&#xff0c;小程序启动&#xff0c;会执行此js-app.json # 小程序全局配置文件&#xff0c;配置小程序导航栏颜色等信息…

LLM Tuning

Lora-Tuning 什么是Lora微调&#xff1f; LoRA&#xff08;Low-Rank Adaptation&#xff09; 是一种参数高效微调方法&#xff08;PEFT, Parameter-Efficient Fine-Tuning&#xff09;&#xff0c;它通过引入低秩矩阵到预训练模型的权重变换中&#xff0c;实现无需大规模修改…

云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)

在上篇中&#xff0c;我们围绕存储系统可扩展架构详细探讨了基础技术原理与典型实践。然而&#xff0c;在实际应用场景中&#xff0c;存储系统面临的挑战远不止于此。随着数据规模呈指数级增长&#xff0c;业务需求日益复杂多变&#xff0c;存储系统还需不断优化升级&#xff0…

水利数据采集MCU水资源的智能守护者

水利数据采集仪MCU&#xff0c;堪称水资源的智能守护者&#xff0c;其重要性不言而喻。在水利工程建设和水资源管理领域&#xff0c;MCU数据采集仪扮演着不可或缺的角色。它通过高精度的传感器和先进的微控制器技术&#xff0c;实时监测和采集水流量、水位、水质等关键数据&…

origin绘图之【如何将横坐标/x设置为文字、字母形式】

在使用 Origin 进行科研绘图或数据可视化的过程中&#xff0c;我们常常会遇到这样一种需求&#xff1a;希望将横坐标&#xff08;X轴&#xff09;由默认的数字形式&#xff0c;改为字母&#xff08;如 A、B、C……&#xff09;或中文文字&#xff08;如 一、二、三……&#xf…

工业智能网关建立烤漆设备故障预警及远程诊断系统

一、项目背景 烤漆房是汽车、机械、家具等工业领域广泛应用的设备&#xff0c;主要用于产品的表面涂装。传统的烤漆房控制柜采用本地控制方式&#xff0c;操作人员需在现场进行参数设置和设备控制&#xff0c;且存在设备智能化程度低、数据孤岛、设备维护成本高以及依靠传统人…

Kafka Streams 和 Apache Flink 的无状态流处理与有状态流处理

Kafka Streams 和 Apache Flink 与数据库和数据湖相比的无状态和有状态流处理的概念和优势。 在数据驱动的应用中&#xff0c;流处理的兴起改变了我们处理和操作数据的方式。虽然传统数据库、数据湖和数据仓库对于许多基于批处理的用例来说非常有效&#xff0c;但在要求低延迟…

LM-BFF——语言模型微调新范式

gpt3&#xff08;GPT3——少样本示例推动下的通用语言模型雏形)结合提示词和少样本示例后&#xff0c;展示出了强大性能。但大语言模型的训练门槛太高&#xff0c;普通研究人员无力&#xff0c;LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…

NVMe高速传输之摆脱XDMA设计2

NVMe IP放弃XDMA原因 选用XDMA做NVMe IP的关键传输模块&#xff0c;可以加速IP的设计&#xff0c;但是XDMA对于开发者来说&#xff0c;还是不方便&#xff0c;原因是它就象一个黑匣子&#xff0c;调试也非一番周折&#xff0c;尤其是后面PCIe4.0升级。 因此决定直接采用PCIe设…

pycharm无需科学上网工具下载插件的解决方案

以下是两种无需科学上网即可下载 PyCharm 插件的解决思路&#xff1a; 方法 1&#xff1a;设置 PyCharm 代理 打开 PyCharm选择菜单&#xff1a;File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理设置中进行如下配置&#xff1a; 代理地…

Halcon计算点到平面的距离没有那么简单

Halcon计算点到平面距离 1. 一些基本概念2. 浅谈有无符号的距离2.1 无符号距离的用武之地2.2 有符号距离的必要性 3. 无符号距离怎么算3.1 创建一个无限延展的基准平面&#xff0c;对距离有什么影响&#xff1f;Halcon代码图示 3.2 创建一个小小小的基准平面&#xff0c;对距离…

数据中台如何设计?中台开发技术方案,数据治理方案,大数据建设方案合集

中台的价值与核心理念 中台的核心在于“企业级能力复用”&#xff0c;其价值体现在四大维度&#xff1a; 能力整合&#xff1a;将分散的数字化能力&#xff08;如营销、供应链&#xff09;集中管理&#xff0c;形成核心竞争力&#xff1b; 业务创新&#xff1a;通过跨领域融合…

Adminer 连接mssql sqlserver

第一步 docker-compose.yml adminer部分&#xff1a; version: 3.8 services: adminer: image: adminer:latest container_name: adminer restart: unless-stopped volumes: - ./freetds/freetds.conf:/etc/freetds.conf:rw # 确保 :rw 可读写 co…

C++系统IO

C系统IO 头文件的使用 1.使用系统IO必须包含相应的头文件&#xff0c;通常使用#include预处理指令。 2.头文件中包含了若干变量的声明&#xff0c;用于实现系统IO。 3.头文件的引用方式有双引号和尖括号两种&#xff0c;区别在于查找路径的不同。 4.C标准库提供的头文件通常没…