实用技术:MYSQL特别实用的几种SQL语句送给大家,让你的SQL高大上

实用技术:MYSQL特别实用的几种SQL语句送给大家,让你的SQL高大上
最新回答
爱情的模样

2026-05-19 06:20:37

MySQL中几种实用的SQL语句,能够简化程序逻辑、减少数据库交互次数,并提升数据库的高可用性。

  • 插入或替换:使用REPLACE INTO语句,在记录存在时先删除再插入,不存在时直接插入。这基于唯一索引或主键判断记录是否存在。
REPLACE INTO last_transaction (transId, username, amount, trans_time, remark)VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值');
  • 插入或更新:使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...语句,在记录存在时更新指定字段,不存在时插入新记录。
INSERT INTO total_transaction (t_transId, username, total_amount, last_transTime, last_remark)VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '充会员')ON DUPLICATE KEY UPDATE total_amount = total_amount + 30, last_transTime = '2020-06-11 20:00:20', last_remark = '充会员';
  • 插入或忽略:使用INSERT IGNORE INTO ...语句,在记录存在时忽略操作,不存在时插入新记录。
INSERT IGNORE INTO users_info (id, username, sex, age, balance, create_time)VALUES (null, 'chenhaha', '男', 12, 0, '2020-06-11 20:00:20');
  • SQL中的if-else判断:使用CASE WHEN ... THEN ... ELSE ... END语句,在SQL中实现条件判断。
UPDATE users_info uSET u.balance = CASE WHEN u.sex = '女' AND u.age > 18 THEN u.balance + 10 ELSE u.balance + 5 ENDWHERE u.create_time >= '2020-01-01';
  • 指定数据快照或备份:使用CREATE TABLE ... SELECT ...语句,复制表数据到新表。
CREATE TABLE students_of_class1 SELECT * FROM student WHERE class_id = 1;
  • 写入查询结果集:使用INSERT ... SELECT ...语句,将查询结果直接插入到指定表中。
INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;
  • 强制使用指定索引:使用FORCE INDEX强制查询使用指定的索引。
SELECT * FROM students FORCE INDEX (idx_class_id) WHERE class_id = 1 ORDER BY id DESC;

这些SQL语句技巧能够简化程序逻辑、减少数据库交互次数,并提升数据库的高可用性。