mysql 学习笔记-插入、更新、删除

本文介绍了SQL中插入、更新和删除数据的各种方法,包括如何安全地忽略不必要的列,如何使用INSERT LOW_PRIORITY减少对SELECT语句的影响,以及如何通过TRUNCATE TABLE快速清空表等内容。

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

依赖次序,安不安全,不能应付改变

INSERT INTO table_name VALUES(val_1,val_2,......);

安全,更繁琐的方法,这样即使表的结构改变这条语句任然可以继续工作,同时还可以忽略不用处理的列

被省略的列必须是 列定义允许为null或者表定义中给出默认值

INSERT INTO table_name(col_1,col_2,......) 
VALUES(val_1,val_2,......);

/*
insert 操作可能比较耗时,特别是在很多索引需要更新的时候,而且它可能降低等待处理的
select 语句的性能。提高整体性能的方案如下:
*/

INSERT LOW_PRIORITY 
INTO table_name(col_1,col_2,......) 
VALUES(val_1,val_2,......);

一次插入多行,比分散的多条 insert 快

INSERT INTO table_name(col_1,col_2,col_3,....)
VALUES(val_1,val_2,val_3,.....),
(val_1,val_2,val_3,.....),
(val_1,val_2,val_3,.....),
(val_1,val_2,val_3,.....);

插入查询得到的数据 insert select 语句的用法

INSERT INTO db_alishop.`copy_user`
(user_name,user_birth)
SELECT reg_email,user_birth
FROM db_alishop.`user`;

更新和删除数据

小心不要省略where过滤条件,这样会导致更新所有的行对应的列

UPDATE table_name
SET col_name = val_1
WHERE ...;

更新多列

UPDATE table_name
SET col_1 = val_1,
    col_2 = val_2
WHERE ...;

在 update 语句中使用 select 子查询检索出来的数据更新列数据。

ignore 关键字,默认发生更新作用在多个行,如果有一个或多个失败,

整个 update 语句产生的改变会被撤销,使用 ignore 可以忽略错误,

 保留其他成功的更新。

UPDATE IGNORE table_name
SET col_name = val_1
WHERE ...;

用 update 删除某列的值,允许为 null 的情况下

UPDATE table_name
SET col_name = NULL
WHERE ...;

注意:如果不使用 where 过滤,默认删除所有的行,删除表的所有内容,而不删除表本身

DELETE FROM table_name
WHERE ...;

如果仅仅想删除表中的所有记录,不要使用 delete 用 truncate table

语句效率更好,先删除原表,然后创建一个新表,而不是逐行删除

TRUNCATE copy_user;

更新和删除的指导原则

使用强制实施引用完整性的数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值