「这是我参与11月更文挑战的第 5 天,活动详情查看:2021最后一次更文挑战」
表记录管理
先准备好测试表
1 | sql复制代码create table test( |
插入
指定字段单条插入
1 | sql复制代码insert into test(uname) values('b'); |
我们可以选择对我们关注的字段做赋值操作,以及对必填非空字段做赋值操,表内其余未指定的字段,统一使用默认值。 默认值没有声明时,值为 null
不指定字段单条插入
在上一种插入方法的基础上,我们可以省略 sql 语句中插入的字段
1 | sql复制代码insert into test values(default, 'a', default) |
如图,我们没有显示的指定插入的数据中,哪个值对应哪个列,mysql 就会根据表当前的列顺序来依次解析,所以我们需要按顺序为全部字段赋予一个值进行占位。如果字段允许,我们可以设置为 null
,或者是用 default
表示我们希望使用列定义时的默认值
批量插入
与单条插入类似,可以选择指定字段、亦或不指定然后按顺序全字段数据录入
mysql 有一个特殊的插入操作,即支持一次性插入多条记录,格式如下
1 | sql复制代码insert into table (c1, c2, ..) values (a1, b1, ..), (a2, b2, ...), ... |
需要插入的多条记录之间,使用 ,
隔开即可
删除
常规删除
我们日常使用 id
作为删除的依据
1 | sql复制代码DELETE from test where id=1 |
批量删除
在我们的应用中,有时候需要支持一次性删除多条记录,如果遍历 id 的集合然后执行单条的删除 sql,1000 次操作性能会有明显的延迟
推荐的优化方案就是,修改删除的条件为 in
1 | sql复制代码DELETE |
或者,根据我们实际的业务,我们可以修改删除语句中 where
后面跟随的条件,这里可以理解为,mysql 会为我们删除满足条件的全部记录
本文转载自: 掘金