Mysql 增删改查(二)—— 增(insert)、删(delete)、改(update)

本文详细介绍了MySQL中数据的插入(INSERT,INSERTONDUPLICATEKEYUPDATE,REPLACE),更新(UPDATE)和删除(DELETE,TRUNCATE)操作,包括各种情况下的使用方法和注意事项,如主键冲突处理和全表清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、插入

1、insert

2、replace(插入否则更新)

二、更新(update)

三、删除

1、delete

2、truncate(截断表,慎用)


一、插入

1、insert

(1) 单行 / 多行插入

全列插入:插入时可以省略要插入的字段

-- 插入单行
insert into 表名 values (...)

-- 插入多行(不同行之间使用逗号隔开)
insert into 表名 values (...),(...)

指定列插入:插入时必须明确要插入的字段(插入的字段必须要和对应的值一一对应)

-- 插入单行
insert into 表名 (字段1, 字段2, ...) values (值1, 值2...)

-- 插入多行(不同行之间使用逗号隔开)
insert into 表名 (字段1, 字段2, ...) values (值1, 值2...),(值1, 值2...)

(2) 插入否则更新(on duplicate key update)

如果插入的值和主键或者唯一键冲突时,会导致记录插入失败:

可以在最后加上 on duplicate key update 来补救,当插入的记录和主键或者唯一键冲突时,就直接更新对应的记录,语法格式如下:

-- 插入单行
insert into 表名 (主键, 字段2, ...) values (主键值, 值2...)
on duplicate key update 字段2=值2,...

2、replace(插入否则更新)

replace 和  on duplicate key update 的作用类似,如果主键或者唯一键没有冲突,直接插入;主键或唯一键有冲突,那么删除以后再插入

注意是删除以后插入, on duplicate key update 是在原本的基础上更新。

-- 支持全列/指定列替换
replace into 表名 (字段名) values (字段值)

替换前:

替换后:

 

二、更新(update)

一般update需要搭配 where子句使用,如果没有where子句,更新的是全表某个字段的值,有了where子句,更新的是指定记录对应的字段值。

update 表名 set 字段名=新的字段值 where 筛选条件

在某一个字段原本值的基础上加上一个值

将某一个字段的值改为一个全新的值

三、删除

1、delete

delete的作用是删除某一条记录或者删除整个表,无论是哪种,自动索引都不会重置,而是保留历史最大值。所谓自动索引,指的是下次插入记录的时候,主键自增的值。

(1) 删除某一条记录

一般需要搭配where子句使用,否则删除的是整个表的数据。 

delete from 表名 where 筛选条件

(2) 删除整个表的内容(慎用)

delete from 表名

2、truncate(截断表,慎用)

只能对整表操作,不能像delete那样针对部分数据操作;除了清零,还会重置自动索引。实际上 MySQL 不对数据操作,所以比 delete 更快,但是 truncate 在删除数据的时候,并不经过真正的事物,所以无法回滚。

truncate 表名 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值