【MySQL】DML数据处理之增删改

news/2025/1/18 7:02:09/

闲话

前段时间在准备考华子的od,然后也小小的偷了一下懒,估计是过不去了,还是老老实实回来更新博客吧,继续学习~

一、添加数据

1、准备工作

首先我们创建一张表 t_decade_book_new

DROP TABLE IF EXISTS `t_decade_book_new`;
CREATE TABLE `t_decade_book_new`  (`book_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '书id',`book_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书名',`book_count` int(10) DEFAULT NULL COMMENT '数量',`detail` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',PRIMARY KEY (`book_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2、一条一条的插入数据

  • 方式一:没有指明添加的字段,注意使用此方式时需要按照声明字段的先后顺序进行插入
INSERT INTO t_decade_book_new
VALUES(5,'活着',5000,'余华作者,写的是关于福贵一家的故事');

如果不按照字段声明顺序进行插入,就会出错,比如下面这个SQL

INSERT INTO t_decade_book_new
VALUES('活着',5,'余华作者,写的是关于福贵一家的故事',5000);
  • 方式二:指明要添加的字段,推荐使用这种方式
INSERT INTO t_decade_book_new
(book_id, book_name, book_count, detail)
VALUES(6, '孔乙己', 7000, '作者鲁迅,讲的是孔乙己的落魄生活');

如果只指明某些字段,那么在符合约束条件的情况下,未指明的字段将会填入null值

INSERT INTO t_decade_book_new
(book_id, book_name, detail)
VALUES(7, '三体', '作者刘慈欣,讲的是我还没看完~');
  • 同时插入多条记录
INSERT INTO t_decade_book_new
(book_id,book_name,book_count,detail)
VALUES(8,'鬼吹灯',4000,'作者天下霸唱,讲的是一个摸金校尉的盗墓故事'),
(9,'安徒生童话',8000,'我猜作者是叫安徒生');

3、将查询结果插入到表中

注意,查询的字段顺序需要和插入字段的顺序一一对应
另外,还需要注意查询出来的字段是否在类型长度上都与插入表的对应字段匹配上

INSERT INTO t_decade_book_new
(book_id,book_name,book_count,detail)
SELECT book_id,book_name,book_count,detail
FROM t_decade_book
WHERE t_decade_book.book_id IN (1,2,3,4);

二、更新数据

1、更新数据的语法如下

执行时如果不带上WHERE条件语句,就会全量更新数据

UPDATE table_name
SET column1 = value1,colunm2 = value2
(WHERE条件语句);

注意:修改数据时,可能会由于约束的存在导致修改不成功(后面会详细介绍什么是约束)

三、删除数据

1、删除数据的语法如下

执行时如果不带上WHERE条件语句,就会全量删除数据

DELETE FROM table_name
WHERE...;

注意:删除数据时,也可能会由于约束的存在导致删除不成功

DML操作在默认情况下,执行完以后会自动提交数据
如果希望执行完之后不自动提交数据,则需要在执行前设置SET autocommit = FALSE;

四、MySQL8新特性:计算列

简单来说,计算列就是某一列的值是通过别的列计算来的
在MySQL8.0中,我们可以通过CREATE TABLE和ALTER TABLE来新增计算列

CREATE TABLE t_test_table
(
a INT(10),
b INT(10),
res_column INT GENERATED ALWAYS AS (a+b) VIRTUAL
);# 插入一条数据
INSERT INTO t_test_table(a, b)
VALUES(10, 20);# 查询出来结果a为10,b为20,res_column为30
SELECT * FROM t_test_table;# 更新一下a的值
UPDATE t_test_table
SET a = 20;# 查询出来结果a为20,b为20,res_column为40
SELECT * FROM t_test_table;

结合上面的结果发现,计算列会随着相关列的更新而更新,这样就节省了很多计算的操作,但是会不会有其他隐患呢?这是一个值得思考的问题

如有错误,欢迎指正!!!


http://www.ppmy.cn/news/911608.html

相关文章

g726转pcm

g726转pcm 1077协议,别人的设备,没参数,获取音频包,解析得知是g726编码 刚开始找的是adpcm解码的,下面这个链接的https://blog.csdn.net/forfuture3513/article/details/51764814 测试发现都是电流兹兹声,…

三菱m60系统波特率怎么设置_三菱 M60 三菱-M60 M60S series 操作 手册

资料介绍: efer to the following documents. MELDAS 60/60S Series Alarm / Parameter Manual ............................................... BNP-B2201 MELDAS 60/60S Series MELDASMAGIC64 Programming Manual (M TYPE)...... BNP-B2182 MELDAS 60/60S Serie…

NVIDIA M60基本说明

在生成环境中使用到NVIDIA M60显卡,因为也是第一次接触M60显卡,在这里我把实施中了解到的M60显卡记录一下,方便学习和掌握。 第一章:简单了解M60和M60显卡的安装。 第二章:显卡驱动的下载和安装。 第三章:显…

2.5 vim的使用

2.5 Vim的使用 介绍 Vim是一款强大的文本编辑器,常用于在终端环境下编辑文本文件。本文将介绍Vim的基本概念、常用操作和一些实用技巧,帮助您更高效地使用Vim进行文本编辑。 Vim的基本模式 Vim具有多种模式,其中最常用的三种模式是&#…

行锁导致的SQL阻塞问题分析处理

行锁导致的SQL阻塞问题分析处理 行锁分析处理流程锁与SQL阻塞分析脚本 行锁分析处理流程 查看表上是否有锁: select inst_id,object_id,session_id sid,oracle_username, decode(locked_mode,0,None,2,Row Share Lock,3,Row Exclusive Table Lock, 4,Share Tabl…

token的验证流程

前端 后台 1.1 登录接口(携带账号和密码(MD5)) -->到后台 需要: 验证(账号密码)生成Token(包含id昵称,不敏感的数据) 1.2 后台需要解析,-->然后在前端显示 解析(解析出前端需要显示的数据)把token放到某一个位置…

简单版本视频播放服务器V2

简单版本视频播放服务器V2 一直想做个家用版本的家庭影院,通过这个服务器可以给电脑,平板,手机等设备提供直接播放电影的作用,通过浏览器就是可以访问电脑里面的视频,实现简单的家庭版本服务了。 备注注意 &#xff1a…

让ShearPoint 2010在线广播PPT演示文稿

前几天,有一位老师要做在线视频培训,条件是要对方同步看到PPT演示文稿,并且,鉴于他的这项研究比较前沿,演示文稿还不能复制给大家,还有一个条件,就是在培训的时间点,有一位正在出差的…