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

MYSQL——数据更新

一、插入数据

1.插入完整的数据记录

在MYSQL中,使用SQL语句INSERT插入一条完整的记录,语法如下:

INSERT INTO 表名 [(字段名1[,...字段名n])]

VALUES (值1[...,值n]);

表名——用于指定要插入的数据的表名

字段名——用于指定需要插入数据的字段名。若插入的是一条完整的记录,且VALUES子句后各数值的顺序与表中列的定义顺序一致,则字段名表可以省略,直接采用INSERT表名VALUES(...)

VALUES子句——用于指定所要插入的数值。数值表中各数据的顺序要和字段名列表中各列的顺序相对应。

2.插入非完整的数据记录

在MYSQL中,使用SQL语句INSERT插入一条非完整的记录,语法如下:

INSERT INTO 表名 (字段名1[,...字段名n])

VALUES (值1[...,值n]);

字段名——用于指定需要插入数据的列名,若插入的是一条非完整的记录,字段名列表不能省略。

VALUES子句——用于指定所要插入的数值。数值表中各数据的顺序要和字段名列表中各列的顺序相对应。

插入的记录在未指定的字段上取空值。

3.插入多条数据记录

在MYSQL中,使用SQL语句INSERT插入多条数据记录,语法如下:

INSERT INTO 表名 [(字段名1[,...字段名n])] VALUES (值表1),

...

(值表n);

字段名——用于指定需要插入数据的字段名。若插入的是一条完整的记录,且VALUES子句后各数值的顺序与表中列的定义顺序一致,则字段名可以省略,直接采用INSERT表名VALUES即可,若插入的是非完整记录,字段不可以省略。

数值表中各数据的顺序要和字段名列表中各列的顺序相对应。

4.插入查询结果

在MYSQL中,使用SQL语句通过INSERT语句将一个表中查询的结果插入表中,从而实现表记录的复制功能。语法如下:

INSERT INTO 目标表名 [(字段名1[,...字段名n])]

SELECT (字段名1[,...字段名n])

FROM 源表名

[WHERE 条件表达式]

SELECT子句——返回的是一个从源表查询到满足指定条件(条件省略时,表示查询源表中所有记录)的结果集。

INSERT语句——表示将这个结果集插入目标表中。

目标表的字段名列表与SELECT子句字段名列表的字段个数必须相同,且对应的字段的数据类型应保持一致。

如果插入的是完整的记录,目标表的字段名列表可以省略。

结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。

5.采用REPACE语句插入数据记录

使用REPACE语句插入数据记录,有3种语法格式

语法格式1:

REPACE INTO 表名[(字段名1[,...字段名n])]

VALUES(值1[...,值n]);

语法格式2:

REPACE INTO 目标表名[(字段名1[,...字段名n])]

SELECT (字段名1[,...字段名n])

FROM 源表名

[WHERE 条件表达式]

语法格式3:

REPACE INTO 表名

SET 字段名1 = 数值1,...,字段名n = 值n;

使用REPACE语句向表插入新记录时,如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则需先删除已有记录(注意:已有记录删除时也不能违背外码约束条件),再插入新记录。

使用REPACE的优势在于可以将DELETE和INSERT合二为一,形成一个原子操作,因此无须将DELET操作与INSERT操作置于事务中。

二、修改数据

1.修改特定数据记录

修改特定数据记录使用SQL语句UPDATE来实现,语法如下:

UPDATE 表名

SET 字段名1 = 值1 [,...字段名n = 值n]

WHERE 条件表达式;

表名——用于指定待修改数据的表名

SET子句——用于指定表中要修改的列名及其列值。列值可以是表达式

WHERE子句——用于修改满足条件

修改一行数据的多个列值时,set子句中每个字段值的修改使用逗号分开。

修改表记录时,需要注意表中的主码约束、外码约束以及唯一性等约束,修改的数据只有满足表定义中所以约束,才能修改成功。

2.修改所有数据记录

修改所有数据记录同样使用SQL语句UPDATE来实现,语法如下:

UPDATE 表名

SET 字段名1 = 值1 [,...字段名n = 值n]

[WHERE 条件表达式];

WHERE 条件表达式为可选项,用于限定表中要修改的记录。若要修改的是所有记录则不用指定。

三、删除数据

1.删除特定数据记录

删除特定数据记录使用SQL语句DELETE FROM来实现,语法如下:

DELETE FROM 表名

WHERE 条件表达式;

表名——用于指定要删除的表名

WHERE子句——用于指定满足条件的特定记录,为可选项

2.删除所有数据记录

删除所有数据记录同样使用SQL语句DELETE FROM来实现,语法如下:

DELETE FROM 表名

[WHERE 条件表达式];

WHERE 条件表达式为可选项,用于删除表中要特定的记录。若要删除的是所有记录则不用指定。

  • DELETE操作是可以在一个事务中回滚的,即如果执行过程中发生错误或用户选择回滚,已删除的记录可以恢复。
  • DELETE操作会激活表上的触发器。
  • DELETE不会影响自增列的计数器,除非删除的记录中包含了自增列的最大值,并且该值在后续操作中不再被使用。
  • 逐行删除数据,因此操作较慢,特别是当表中记录很多时。

3.采用TRUNCATE语句清除数据记录

在MYSQL中,删除数据除使用DELETE外,还可以使用TRUNCATE语句清空表中的数据记录,语法如下:

TRUNCATE [TABLE] 表名

TABLE关键字——可以省略。

TRUNCATE语句——用于快速删除一个表中的所有记录,但不会删除表本身及其结构。

无WHERE语句,原因在于TRUNCATE语句是清空表中所有记录,不能指定特定数据记录,所以不需要WHERE语句指定特定记录,

  • 在大多数数据库系统中,TRUNCATE操作不能在一个事务中进行回滚(即一旦执行,此操作立即生效且不可撤销,除非在特定的事务管理配置下)。
  • TRUNCATE通常不激活表上的触发器。
  • 执行TRUNCATE后,自增列(如果有的话)的计数器会被重置。
  • 不会逐行删除数据,而是直接删除数据页,并重新初始化该表的存储空间。这使得TRUNCATE操作比DELETE更快。

http://www.lryc.cn/news/487736.html

相关文章:

  • Vite 基础理解及应用
  • [JAVA]用MyBatis框架实现一个简单的数据查询操作
  • CSS 样式的优先级?
  • Linux驱动开发快速入门——字符设备驱动(直接操作寄存器设备树版)
  • 数据结构《栈和队列》
  • C# 超链接控件LinkLabel无法触发Alt快捷键
  • JVM类加载过程-Loading
  • 2024年11月19日Github流行趋势
  • 详细描述一下Elasticsearch索引文档的过程?
  • 基于css的Grid布局和vue实现点击左移右移轮播过渡动画效果
  • HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)习惯推荐方案概述
  • 【AtCoder】Beginner Contest 380-F.Exchange Game
  • 30. 并发编程
  • 【包教包会】CocosCreator3.x框架——带翻页特效的场景切换
  • k8s上面的Redis集群链接不上master的解决办法
  • <项目代码>YOLOv8 瞳孔识别<目标检测>
  • 网络编程-002-UDP通信
  • MySQL更换瀚高语法更换
  • Object.prototype.hasOwnProperty.call(item, key) 作用与用途
  • DNS的10种资源记录
  • 【数据分享】1981-2024年我国逐日最低气温栅格数据(免费获取)
  • Kafka进阶_1.生产消息
  • 百度世界2024:智能体引领AI应用新纪元
  • NIST 发布后量子密码学转型战略草案
  • 同向双指针
  • 小鹏汽车大数据面试题及参考答案
  • 华为再掀技术革新!超薄膜天线设计路由器首发!
  • CREO TOOLKIT二次开发学习之字符转换
  • vmware虚拟机安装Windows11提示电脑不符合要求?
  • 【金融风控项目-08】:特征构造