当前位置: 首页 > news >正文

【MySQL】数据操作

数据操作

  • 一、INSERT
    • 1、介绍
    • 2、语法
    • 3、语法介绍
    • 4、注意事项
    • 5、示例
  • 二、插入否则更新
    • 1、介绍
    • 2、语法
    • 3、语法介绍
    • 4、示例
  • 三、ROW_COUNT
    • 1、介绍
    • 2、示例
  • 四、REPLACE
    • 1、介绍
    • 2、语法
    • 3、示例
  • 五、UPDATE
    • 1、介绍
    • 2、语法
    • 3、示例
  • 六、DELETE
    • 1、介绍
    • 2、语法
    • 3、语法介绍
  • 七、TRUNCATE
    • 1、介绍
    • 2、语法
    • 3、注意事项
    • 4、与DELETE的比较

一、INSERT

1、介绍

  • 在MySQL中,INSERT语句用于向表中添加新记录。它是SQL(结构化查询语言)中用于数据插入的基本命令之一。通过INSERT语句,你可以将单行或多行数据插入到指定的表中。

2、语法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1_1, value2_1, value3_1, ...)[,(value1_2, value2_2, value3_2, ...),...];

3、语法介绍

  • table_name:要插入数据的表的名称。
  • (column1, column2, column3, …):希望插入数据的列的名称,列的顺序应与VALUES子句中的值顺序相匹配。
  • (value1, value2, value3, …):与列对应的值。
  • 当插入多行数据时,插入的每行数据用逗号分隔。上方语法中[]部分。
  • 当插入所有列的数据时,如果列的顺序与表定义中的顺序一致,可以省略列名(column部分可以省略)。但需要为表中的所有列提供值,并且值的顺序必须与表中列的顺序一致。

4、注意事项

  • 如果表中有AUTO_INCREMENT列(例如,主键列),可以在INSERT语句中省略该列,MySQL会自动为该列生成一个唯一的值。
  • 如果表中有NOT NULL约束的列,并且这些列没有默认值,必须在INSERT语句中为这些列提供值。
  • 如果列允许NULL值,并且希望在插入时将这些列设置为NULL,可以在VALUES子句中显式地指定NULL。
  • 对于字符串和日期类型的值,应该将它们用单引号括起来。

5、示例

create table students(
id int unsigned primary key auto_increment,
sn int unique key not null comment '学号',
name varchar(20) not null
);insert into students values(1, 1234, '雪龙');
insert into students (sn, name) values(4567, '林黛玉'), (88994, '贾宝玉');select * from students;

在这里插入图片描述

二、插入否则更新

1、介绍

  • 当想要向表中插入新记录,但如果记录已经存在(基于某些唯一性约束,如主键或唯一索引),则希望更新该记录时,可以使用INSERT … ON DUPLICATE KEY UPDATE语句。这个语句允许在尝试插入新记录时,如果发生主键或唯一索引冲突,则执行更新操作而不是插入。
  • ON DUPLICATE KEY UPDATE仅当发生主键或唯一索引冲突时才会触发。即它是基于主键或唯一索引的。如果表中没有主键或唯一索引,则此语句将始终执行插入操作,即使记录已经存在。
  • 可以更新多个列,只需在ON DUPLICATE KEY UPDATE子句中为每个要更新的列指定新值。
  • 如果不希望更新某些列,可以省略它们。如果尝试更新的列有NOT NULL约束且没有提供非NULL值,则更新操作将失败。
  • 如果表中有触发器(Triggers),则ON DUPLICATE KEY UPDATE可能会触发这些触发器。

2、语法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...)
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2),
...;

3、语法介绍

  • ON DUPLICATE KEY UPDATE:当发生主键或唯一索引冲突时要执行的更新操作。
  • column1 = VALUES(column1):将冲突行的列更新为尝试插入的值。VALUES函数用于引用INSERT语句中提供的值。

4、示例

在这里插入图片描述

  • 上方的前两条语句的执行结果分别是插入、更新操作,最后的语句因为要更新的值和插入的值(重复值)相同,不做修改。

三、ROW_COUNT

1、介绍

  • ROW_COUNT是一个函数,用于返回最近执行的 SQL 语句所影响的行数。这个函数在需要获取受影响的行数时非常有用,比如在插入、更新或删除操作后,可以使用它来确认有多少行被影响。
  • ROW_COUNT返回的是当前会话中最近一次执行的 DML(数据操作语言)语句所影响的行数。如果在不同的会话中执行语句,那么每个会话的 ROW_COUNT将只反映该会话中的操作。
  • 在事务中,ROW_COUNT仍然有效,但在回滚事务后,之前的 ROW_COUNT结果将不再反映实际影响行数。
  • 在存储过程和触发器中,ROW_COUNT也可以用来获取受影响的行数,有助于控制逻辑流。

2、示例

  • 下方示例是在上方示例执行后执行的。

在这里插入图片描述

四、REPLACE

1、介绍

  • REPLACE语句与INSERT语句的语法非常相似,但在功能上有所不同。REPLACE语句会尝试将一条新记录插入到表中,但如果表中已经存在具有相同唯一键或主键的记录,则会先删除旧记录,再插入新记录。
  • REPLACE语句会改变表中的自增长ID值,并可能影响关联表的数据一致性(如果存在外键约束)。因此,在使用时需要谨慎考虑数据完整性和性能问题。

2、语法

REPLACE INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);REPLACE INTO table_name
SET column1 = value1, column2 = value2, ...;

3、示例

在这里插入图片描述

  • 第一次为表中没有冲突数据,数据被插入。第二次为表中有冲突数据,删除后重新插入。

五、UPDATE

1、介绍

  • UPDATE 语句用于修改已存在的表中的数据。通过使用 UPDATE 语句,可以根据指定的条件(通常是通过 WHERE 子句)来更新一行或多行的数据。如果未使用 WHERE 子句,则会更新表中的所有行,但这通常是不希望发生的情况。
  • 在执行大规模更新操作之前,最好备份数据,以防操作错误导致数据丢失。确保 WHERE 子句正确无误,以防止意外更新大量数据。
  • 如果涉及多条更新语句,可以考虑使用事务管理,以确保数据的一致性。

2、语法

UPDATE 表名
SET1 =1,2 =2, ...
WHERE 条件;

3、示例

  • 本次以及下面的示例中,所用的exam_result表以及数据参见【MySQL】基本查询。因为本文与该文章拆分,所以本文示例所用的数据在该文中定义。

将贾政同学的语文成绩变更为80分

update exam_result set chinese=80 where name='贾政';
select name, chinese from exam_result where name = '贾政';

在这里插入图片描述
将总成绩倒数前三的 3 位同学的数学成绩加上 30分

select name, chinese+math+english total, math from exam_result order by total limit 3;

在这里插入图片描述

update exam_result set math=math+30 order by chinese+math+english limit 3;
select * from exam_result;

在这里插入图片描述

六、DELETE

1、介绍

  • DELETE语句用于从数据库表中删除记录。在执行删除操作之前,最好先备份数据库,以防误删重要数据。确保WHERE子句正确无误,以防止意外删除大量数据。确保删除操作不会导致数据不一致或违反业务规则。
  • 删除大量数据时,应考虑索引的使用和锁定机制的影响。对于大批量删除操作,可以考虑将删除分批进行,每批删除后手动提交事务,避免长时间锁表。

2、语法

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM table_name [WHERE condition] [ORDER BY ...] [LIMIT row_count];

3、语法介绍

  • LOW_PRIORITY:如果指定了LOW_PRIORITY选项,那么DELETE操作会被推迟,直到没有其他客户端正在从该表中读取数据为止。
  • QUICK:仅适用于MyISAM存储引擎,删除操作不会合并删除表的索引端节点,从而加快删除速度。
  • IGNORE:如果指定了IGNORE选项,那么在遇到错误时(如外键约束冲突),DELETE操作不会中断,而是会发出警告。
  • table_name:要删除记录的表的名称。
  • WHERE condition:可选的,用来指定应该删除哪些行。如果没有WHERE子句,那么表中的所有行都会被删除。
  • ORDER BY …:可选的,用来指定删除行的顺序。
  • LIMIT row_count:可选的,用来限制最多删除多少行。

七、TRUNCATE

1、介绍

  • TRUNCATE语句是一种用于快速删除表中所有数据的SQL命令。它通过释放表的存储空间来快速删除所有数据,而不会逐行删除数据。这使得TRUNCATE在处理大型表时比DELETE语句更快。
  • 使用TRUNCATE语句删除数据后,表结构、索引、约束等都会保持不变。删除的数据无法恢复,因为它不会记录每行的删除操作在事务日志中。因此,在执行TRUNCATE操作之前需要谨慎。
  • 如果表中有自增字段,TRUNCATE会将自增字段重置为初始值。

2、语法

TRUNCATE TABLE table_name;

3、注意事项

  • 外键约束:如果表有外键引用,TRUNCATE可能会失败,除非删除引用的外键关系。在某些情况下,如果外键约束被定义为级联删除,则TRUNCATE可能会成功删除所有相关表的数据。但通常建议在外键约束存在的情况下谨慎使用TRUNCATE。
  • 事务处理:TRUNCATE语句是一个DDL(Data Definition Language)语句,它会自动提交事务,并且无法回滚。

4、与DELETE的比较

  • 速度:TRUNCATE通常比DELETE更快,因为它不会记录每行的删除操作在事务日志中。
  • 恢复性:TRUNCATE删除的数据无法恢复,而DELETE可以通过日志进行回滚操作恢复数据。
  • 触发器:TRUNCATE不会触发DELETE触发器,而DELETE会。
  • 自增字段:TRUNCATE会重置自增列的表的标识符,而DELETE不会。

本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
本文只是在学习过程中所做的总结,不会涉及过深的概念
创作不易,如果觉得博主写得不错,请点赞、收藏加关注支持一下💕💕💕

相关文章:

【MySQL】数据操作

数据操作 一、INSERT1、介绍2、语法3、语法介绍4、注意事项5、示例 二、插入否则更新1、介绍2、语法3、语法介绍4、示例 三、ROW_COUNT1、介绍2、示例 四、REPLACE1、介绍2、语法3、示例 五、UPDATE1、介绍2、语法3、示例 六、DELETE1、介绍2、语法3、语法介绍 七、TRUNCATE1、…...

python数据分析:使用pandas库读取和编辑Excel表

使用 Pandas,我们可以轻松地读取和写入Excel 文件,之前文章我们介绍了其他多种方法。 使用前确保已经安装pandas和 openpyxl库(默认使用该库处理Excel文件)。没有安装的可以使用pip命令安装: pip install pandas ope…...

开源轻量级文件分享服务Go File本地Docker部署与远程访问

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

异步背后的奥秘:事件循环

异步背后的奥秘:事件循环 复习环节 JavaScript运行时 我们都知道,JavaScript本身是一个单线程的,那JavaScript是如何处理同时发生的多个任务的呢? 首先JavaScript引擎运行在一个容器中,这个容器可能是浏览器或者nod…...

Springboot使用RabbitMQ实现关闭超时订单的一个简单示例

1.maven中引入rabbitmq的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置&#xff1a; # rabbit…...

小程序基础 —— 07 创建小程序项目

创建小程序项目 打开微信开发者工具&#xff0c;左侧选择小程序&#xff0c;点击 号即可新建项目&#xff1a; 在弹出的新页面&#xff0c;填写项目信息&#xff08;后端服务选择不使用云服务&#xff0c;开发模式为小程序&#xff0c;模板选择为不使用模板&#xff09;&…...

【Golang 面试题】每日 3 题(十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Docker命令(用法说明详解)

一、常见Docker容器命令 #根据image创建一个新容器并运行&#xff08;即使该image已经存在容器&#xff0c;也会再创建一个新容器&#xff09; docker run IMAGE_NAME #根据image创建一个新容器并运行。 #选项-d&#xff1a;指定容器为后台运行&#xff0c;--name自定义该容器…...

leetcode 热题100(131. 分割回文串)c++

链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff…...

vs2022编译opencv 4.10.0

参考&#xff1a;Windosw下Visual Studio2022编译OpenCV与参考区别在于&#xff0c;没有用cmake GUI&#xff0c;也没有创建build目录&#xff0c;直接用vs2022打开了C:\code\opencv目录&#xff0c;即CMakeLists.txt所在根目录。没有修改默认下载地址&#xff0c;采用手动下载…...

Bash 中的 2>1 | tee 命令详解

Bash 中的 2>&1 | tee 命令详解 在 Linux 和 Unix 系统中&#xff0c;命令行提供了强大的输出控制功能&#xff0c;能够灵活地处理标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误&#xff08;stderr&#xff09;。本文将详…...

MySQL数据库的日志

一、概论 日志&#xff08;log&#xff09;是一种记录系统运行时各种状态和事件的文件。 它通常用于系统监控、故障排查、安全审计和性能分析。日志文件可以记录用户操作、系统错误、应用程序行为等信息。日志文件通常包含时间戳、事件类型、事件描述等关键信息&#xff0c;以…...

DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级

尊敬的 DataCap 用户&#xff1a; DataCap 2024.4.1 版本现已正式发布。本次更新包含多项重要功能升级和性能优化&#xff0c;现将主要更新内容公布如下&#xff1a; 核心功能升级 数据库功能增强 (实现功能) 新增数据库管理功能&#xff1a;支持创建、删除和切换数据库完善表…...

二十三种设计模式-单例模式

单例模式&#xff08;Singleton&#xff09;&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 单例模式两种实现方法&#xff1a;懒汉式和饿汉式。 懒汉式&#xff08;Lazy Initialization&#xff09; 懒汉式单例模式在第一次被使用时才创建实例&…...

【微服务】SpringBoot 国际化适配方案使用详解

目录 一、前言 二、国际化概述 2.1 微服务中的国际化是什么 2.1.1 国际化概念 2.1.2 为什么需要国际化 2.2 微服务中常用的国际化方法 2.2.1 资源文件分离 2.2.2 使用国际化框架 2.2.3 使用动态模板 2.2.4 使用数据库存储 2.2.5 API设计结合配置中心 三、SpringBoot…...

太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片

太阳能电池板缺陷识别数据集&#xff0c;使用yolo&#xff0c;coco json&#xff0c;pasical voc xml格式标注&#xff0c;可识别旁路二极管,电池故障,热点,2234张原始图片 以下是该项目的一些用例&#xff1a; 太阳能发电厂监控&#xff1a;该模型可用于自动化检查和识别大型…...

客户案例:基于慧集通平台集成打通小满CRM+金蝶云星空+钉钉

一、引言 本案例原型公司是一家生物科技公司&#xff0c;公司自开创以来专注于体外诊断生物活性原材料的研究、生产、销售和服务&#xff0c;致力于为全球体外诊断试剂生产企业提供领先且具有竞争力的核心原料和相关辅助产品服务。公司以卓越的产品和优质的服务赢得了客户的广…...

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中&#xff0c;您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的&#xff0c;这意味着在系统重启后这些配置会丢失。为了将这些配置持久化&#xff0c;您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由&#xff0c;您可以将这些配…...

Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本&#xff1a;Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对&#xff0c;也可以自己在客户端或者服务器上生成&#xff0c; 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa&#xff0c;可以在交互中指定路径&#xff0c;也可…...

K8S详解(5万字详细教程)

目录 ​编辑 一、集群管理命令 二、命名空间 1. 获取命名空间列表 2. 创建命名空间 3. 删除命名空间 4. 查看命名空间详情 三、Pod 1. Pod概述 2. Pod相位状态 3. 管理命令 3.1 获取命名空间下容器(pod)列表 3.2 查看pod的详细信息 3.3 创建 && 运行 3.4 …...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...