Mysql 实用sql语句(一)

本文深入探讨了SQL的六种关键操作:REPLACE用于替换或插入记录,INSERT...ON DUPLICATE KEY UPDATE用于更新或插入记录,INSERT IGNORE用于仅插入新记录,CREATE TABLE与SELECT结合用于创建表快照,INSERT与SELECT结合用于写入查询结果集,以及按天统计消息发送量的方法。

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

(1)如果有,则删除后再insert;如果没有,直接insert。

REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

若id=1的记录不存在,REPLACE语句将插入新记录,否则,当前id=1的记录将被删除,然后再插入新记录。

(2)如果有,就update;如果没有,就insert。

INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;

若id=1的记录不存在,INSERT语句将插入新记录,否则,当前id=1的记录将被更新,更新的字段由UPDATE指定。

(3)如果有,则什么都不干;如果没有,则insert 插入新纪录。

INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

若id=1的记录不存在,INSERT语句将插入新记录,否则,不执行任何操作。

(4)快照:如果想要对一个表进行快照,即复制一份当前表的数据到一个新表,可以结合CREATE TABLE和SELECT。

CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;

对class_id=1的记录进行快照,并存储为新表students_of_class1:新创建的表结构和SELECT使用的表结构完全一致。

(5)写入查询结果集:可以结合INSERT和SELECT,将SELECT语句的结果集直接插入到指定表中,确保INSERT语句的列和SELECT语句的列能一一对应。

INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;

(6)按天统计消息发送量:

Select  DATE(a.send_time),count(1) as sendCount from t_msg a where a.catagoryId=#{cId} group by DATE(a.send_time) ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值