卡码笔记
首页
计算机基础
C++
Java
面经
笔记广场 (opens new window)
代码随想录 (opens new window)
首页
计算机基础
C++
Java
面经
笔记广场 (opens new window)
代码随想录 (opens new window)
  • 操作系统

  • 网络

  • 数据库

    • SQL

      • 基本SQL语句
        • 一、数据查询(SELECT)
        • 二、多表操作(连接与子查询)
        • 三、聚合与分组
        • 四、数据更新与写入
        • 五、索引与性能优化相关
        • 六、事务与锁操作
        • Bonus:面试高频场景题
      • 一条SQL查询语句是如何执行的?
    • 索引

    • 锁与MVCC

    • 事务

    • 进阶

# MySQL 常考语句分类整理

# 一、数据查询(SELECT)

类型 示例
基础查询 SELECT * FROM users;
指定列 SELECT id, name FROM users;
条件查询 SELECT * FROM users WHERE age > 25;
排序 SELECT * FROM users ORDER BY age DESC;
去重 SELECT DISTINCT city FROM users;
分页 SELECT * FROM users LIMIT 10 OFFSET 20;
别名 SELECT name AS username FROM users;
模糊匹配 SELECT * FROM users WHERE name LIKE 'A%';
范围查询 SELECT * FROM users WHERE age BETWEEN 20 AND 30;
多条件 SELECT * FROM users WHERE age > 20 AND city = 'Beijing';

# 二、多表操作(连接与子查询)

类型 示例
内连接 SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id;
左连接 SELECT u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id;
右连接 SELECT u.name, o.amount FROM users u RIGHT JOIN orders o ON u.id = o.user_id;
子查询(WHERE中) SELECT name FROM users WHERE id IN (SELECT user_id FROM orders);
子查询(FROM中) SELECT t.user_id, COUNT(*) FROM (SELECT * FROM orders WHERE amount > 100) t GROUP BY t.user_id;

# 三、聚合与分组

类型 示例
总数 SELECT COUNT(*) FROM users;
求和 SELECT SUM(amount) FROM orders;
平均值 SELECT AVG(age) FROM users;
最大/最小值 SELECT MAX(age), MIN(age) FROM users;
分组统计 SELECT city, COUNT(*) FROM users GROUP BY city;
分组条件 SELECT city, COUNT(*) FROM users GROUP BY city HAVING COUNT(*) > 10;

# 四、数据更新与写入

类型 示例
插入 INSERT INTO users(name, age) VALUES('Alice', 30);
批量插入 INSERT INTO users(name, age) VALUES ('Bob', 25), ('Cathy', 22);
插入或更新 INSERT INTO users(id, name) VALUES (1, 'Tom') ON DUPLICATE KEY UPDATE name='Tom';
更新数据 UPDATE users SET age = 28 WHERE id = 1;
删除数据 DELETE FROM users WHERE age < 18;

# 五、索引与性能优化相关

类型 示例
查看索引 SHOW INDEX FROM users;
创建索引 CREATE INDEX idx_age ON users(age);
删除索引 DROP INDEX idx_age ON users;
使用执行计划 EXPLAIN SELECT * FROM users WHERE age > 30;
查看慢查询日志 SHOW VARIABLES LIKE 'slow_query_log%';
强制使用索引 SELECT * FROM users FORCE INDEX (idx_age) WHERE age > 25;

# 六、事务与锁操作

类型 示例
开启事务 START TRANSACTION; 或 BEGIN;
提交事务 COMMIT;
回滚事务 ROLLBACK;
设置隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
查看当前隔离级别 SELECT @@tx_isolation;
悲观锁 SELECT * FROM users WHERE id = 1 FOR UPDATE;
乐观锁 UPDATE users SET age = 26, version = version + 1 WHERE id = 1 AND version = 2;

# Bonus:面试高频场景题

问题 示例
查询每个用户的最后一笔订单 使用 GROUP BY + MAX(order_time) 或 子查询 + JOIN
查询重复数据 SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) > 1;
查询某字段为空 SELECT * FROM users WHERE phone IS NULL;
查询某天注册的用户 SELECT * FROM users WHERE DATE(register_time) = '2024-01-01';
分页优化 SELECT * FROM users WHERE id > ? LIMIT 10; 替代 OFFSET
Last Updated: 3/16/2026, 3:11:27 PM

← 从输入URL到页面展示发生了什么 一条SQL查询语句是如何执行的? →

评论

验证登录状态...

侧边栏
夜间
卡码简历
代码随想录
卡码投递表🔥
2026群
添加客服微信 PS:通过微信后,请发送姓名-学校-年级-2026实习/校招
支持卡码笔记
鼓励/支持/赞赏Carl
1. 如果感觉本站对你很有帮助,也可以请Carl喝杯奶茶,金额大小不重要,心意已经收下
2. 希望大家都能梦想成真,有好的前程,加油💪