【MySQL】CRUD

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_referencesGROUP 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.pswp.cn/news/906770.shtml

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

相关文章

【数据架构04】数据湖架构篇

✅ 10张高质量数据治理架构图 无论你是数据架构师、治理专家&#xff0c;还是数字化转型负责人&#xff0c;这份资料库都能为你提供体系化参考&#xff0c;高效解决“架构设计难、流程不清、平台搭建慢”的痛点&#xff01; &#x1f31f;限时推荐&#xff0c;速速收藏&#…

【Java Web】3.SpringBootWeb请求响应

&#x1f4d8;博客主页&#xff1a;程序员葵安 &#x1faf6;感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 文章目录 一、请求 1.1 postman 1.2 简单参数 1.3 实体参数 1.4 数组集合参数 1.5 日期参数 1.6 JSON参数 1.7 路径参数 二、响应 2…

竞争性学习:无监督世界的智能聚类引擎

一、竞争性学习&#xff1a;无监督聚类的生物启发范式 1.1 核心原理&#xff1a;神经元的 “适者生存” 竞争性学习模拟生物神经网络的竞争机制&#xff1a;多个神经元对输入数据 “竞争响应”&#xff0c;获胜神经元&#xff08;与输入最匹配&#xff09;更新权重&#xff0…

docker面试题(5)

Docker安全么 Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离&#xff0c;并且通过签名机制来对镜像进行 验证。大量生产环境的部署证明&#xff0c;Docker 虽然隔离性无法与虚拟机相比&#xff0c;但仍然具有极高的安全性。 如何清理后台停止的容器 可以使用…

同为科技 智能PDU产品选型介绍 EN10/I801CI

智能PDU是一种利用信息技术手段&#xff0c;优化电力的分配和使用。随着数据中心进行虚拟化部署和为提高计算效率而整合设备&#xff0c;平均机架功率密度在持续增长&#xff0c;几年前&#xff0c;一个普通机柜需要3-4千瓦电力&#xff0c;而现今9-15千瓦甚至更高电力的机柜则…

Aciviti工作流

1. springBoot和activiti整合 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

golang 对象池sync.Pool的实现

Go语言中sync.Pool通过多级缓存机制实现高效对象复用&#xff0c;其核心设计结合了GMP调度模型特性。以下是实现要点分析&#xff1a; P o o l ∑ p 0 G O M A X P R O C S ( l o c a l P o o l p ) v i c t i m C a c h e Pool \sum_{p0}^{GOMAXPROCS}(localPool_p) vict…

Docker run命令-p参数详解

端口映射基础语法 docker run -p <宿主机端口>:<容器端口> 操作示例 docker run -d --restartalways --namespug -p 5000:80 registry.aliyuncs.com/openspug/spug参数解析 -d&#xff1a;后台运行容器--restartalways&#xff1a;设置容器自动重启--namespug&…

《2.1.4 C语言中的整数类型及类型转换|精讲篇》

后面作者会在2025.5.25 00:00前整理出笔记和思维导图大家放心&#xff0c;主页还有其他文章 请先移步欢迎参考 收藏文章 关注博主 高效学习 好了&#xff0c;这小节我们要探讨一个相对来说简单的问题&#xff0c;就是C语言里边的那些定点整数是如何进行强制类型转换的。好来看这…

采用多维计算策略(分子动力学模拟+机器学习),显著提升 α-半乳糖苷酶热稳定性

字数 978&#xff0c;阅读大约需 5 分钟 在工业应用领域&#xff0c;α-半乳糖苷酶在食品加工、动物营养及医疗等方面发挥着重要作用。然而&#xff0c;微生物来源的该酶往往存在热稳定性不足的问题&#xff0c;限制了其在工业场景中的高效应用。近日&#xff0c;来自江南大学的…

Jetpack Compose预览调试技巧

Jetpack Compose 预览(Preview)不显示是一个常见问题,可能由多种原因导致。以下是系统的调试技巧和解决方案: 1. 检查基础配置 Compose 版本兼容性 确保 compose-compiler、compose-ui 等依赖版本一致且与 Kotlin 版本兼容。检查 build.gradle: android {compileOptions {…

使用 Go 语言实现完整且轻量级高性能的 MQTT Broker

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息传输协议。但是目前虽然mqtt的客户端很多&#xff0c;但是服务端着实不多&#xff0c;常见的服务端如mosquitto或emqx。但是golang语言的实现几乎找不到。golang的轻量级部署和高并…

uv sync --frozen卡住不动

今天受邀帮同事调试uv卡住不动的问题&#xff0c;同样的代码已经在别的服务器跑起来了&#xff0c;换了一台服务器之后&#xff0c;执行uv sync --frozen没有按预期创建虚拟环境和安装依赖。 1. 镜像源是已经配置好的&#xff0c;pip install也能很快安装包。 2. 查看了uv.lo…

Spring Boot中如何对密码等敏感信息进行脱敏处理

以下是常见的脱敏方法及实现步骤&#xff0c;涵盖配置、日志和API响应等多个层面&#xff1a; ​1. 配置文件敏感信息脱敏​ (1) 使用加密库&#xff08;如Jasypt&#xff09; ​步骤​&#xff1a; 添加依赖&#xff1a; <dependency><groupId>com.github.ulise…

springboot中redis的事务的研究

redis的事务类似于队列操作&#xff0c;执行过程分为三步&#xff1a; 开启事务入队操作执行事务 使用到的几个命令如下&#xff1a; 命令说明multi开启一个事务exec事务提交discard事务回滚watch监听key(s)&#xff1a;当监听一个key(s)时&#xff0c;如果在本次事务提交之…

python打卡day35@浙大疏锦行

知识点回顾&#xff1a; 三种不同的模型可视化方法&#xff1a;推荐torchinfo打印summary权重分布可视化进度条功能&#xff1a;手动和自动写法&#xff0c;让打印结果更加美观推理的写法&#xff1a;评估模式 作业&#xff1a;调整模型定义时的超参数&#xff0c;对比下效果。…

Python爬虫实战:研究Crawley 框架相关技术

1. Crawley 框架相关定义 1.1 网络爬虫定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它通过 HTTP 协议与 Web 服务器进行交互,获取网页内容并进行解析处理,是数据采集和信息检索的重要工具。 1.2 Crawley 框架定义 Crawley 是一个基于 Pytho…

tvalid寄存器的理解

if(!out_axis_tvalid_reg || m_axis_tready ) beginend m_axis_tready 是上拍下一级给的ready信号 out_axis_tvalid_reg是上一拍&#xff0c;本级给下级的valid信号 一共有四种组合&#xff0c;然后可以通过这个if语句&#xff0c;在接下来的begin ... end中&#xff0c;用来…

【AI实战】从“苦AI”到“爽AI”:Magentic-UI 把“人类-多智能体协作”玩明白了!

Hello&#xff0c;亲爱的小伙伴们&#xff01;你是否曾经在深夜里&#xff0c;为了自动化点外卖、筛机票、抓网页数据焦头烂额&#xff1f;有没有幻想过哪天能出个“贴心AI管家”&#xff0c;一键点菜、搞定事务、自动操作网页&#xff0c;比你还懂你&#xff1f;更关键——还让…

【东枫科技】usrp rfnoc 开发环境搭建

作者 太原市东枫电子科技有限公司 &#xff0c;代理销售 USRP&#xff0c;Nvidia&#xff0c;等产品与技术支持&#xff0c;培训服务。 环境 Ubuntu 20.04 依赖包 sudo apt-get updatesudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils …