Mysql 温故知新系列「表记录」「批量增」「批量删」

「这是我参与11月更文挑战的第 5 天,活动详情查看:2021最后一次更文挑战

表记录管理

先准备好测试表

1
2
3
4
5
sql复制代码create table test(
id int PRIMARY key auto_increment,
uname VARCHAR(20),
sex TINYINT default 1
)

插入

指定字段单条插入

1
sql复制代码insert into test(uname) values('b');

image.png

我们可以选择对我们关注的字段做赋值操作,以及对必填非空字段做赋值操,表内其余未指定的字段,统一使用默认值。 默认值没有声明时,值为 null

不指定字段单条插入

在上一种插入方法的基础上,我们可以省略 sql 语句中插入的字段

1
sql复制代码insert into test values(default, 'a', default)

image.png

如图,我们没有显示的指定插入的数据中,哪个值对应哪个列,mysql 就会根据表当前的列顺序来依次解析,所以我们需要按顺序为全部字段赋予一个值进行占位。如果字段允许,我们可以设置为 null,或者是用 default 表示我们希望使用列定义时的默认值

批量插入

与单条插入类似,可以选择指定字段、亦或不指定然后按顺序全字段数据录入

mysql 有一个特殊的插入操作,即支持一次性插入多条记录,格式如下

1
sql复制代码insert into table (c1, c2, ..) values (a1, b1, ..), (a2, b2, ...), ...

image.png

需要插入的多条记录之间,使用 , 隔开即可

删除

常规删除

我们日常使用 id 作为删除的依据

1
sql复制代码DELETE from test where id=1

image.png

批量删除

在我们的应用中,有时候需要支持一次性删除多条记录,如果遍历 id 的集合然后执行单条的删除 sql,1000 次操作性能会有明显的延迟

推荐的优化方案就是,修改删除的条件为 in

1
2
3
4
5
sql复制代码DELETE
FROM
test
WHERE
id IN (2, 3, 4);

image.png

或者,根据我们实际的业务,我们可以修改删除语句中 where 后面跟随的条件,这里可以理解为,mysql 会为我们删除满足条件的全部记录

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%