2025最新100条常用SQL语句汇总 面试必备SQL语句大全
随着大数据时代的来临,SQL 已成为数据开发、数据分析和数据库运维的核心技能。据智联招聘和拉勾网统计,2025年中国北京、上海、深圳、广州等一线城市的互联网和金融行业,超过80%的数据岗位在面试中都会考察 SQL 能力。无论你身处华北地区的北京CBD,还是华东地区的上海自贸区,掌握一套全面且实用的 SQL 语句库,都是通向高薪数据岗位的“敲门砖”。
本文精心整理了 2025年最新、覆盖 基础查询、聚合分组、数据操作、表管理、索引与视图、连接查询、子查询、日期时间处理、字符串操作、事务管理、存储过程与触发器 等 20+ 大类、共 100 条 最常用 MySQL SQL 语句。不仅适用于数据库开发工程师、数据分析师,还能助力求职者在上海、广州、成都、杭州等城市的面试中脱颖而出。
文章目录
摘要
本文整理了 MySQL 数据库操作中最常用的 100 条 SQL 语句,涵盖基础查询、聚合分组、数据操作、表管理、索引与视图、连接查询、子查询、日期处理、字符串操作、事务管理、存储过程、触发器、系统信息查询、性能优化、错误处理、备份恢复、导入导出、以及常用工具与命令等多个方面。无论是日常开发、数据分析,还是运维管理,都能在此找到快速参考。
一、基本查询
-
查询所有数据
SELECT * FROM 表名; -
查询指定列
SELECT 列1, 列2 FROM 表名; -
条件查询
SELECT * FROM 表名 WHERE 条件; -
模糊查询
SELECT * FROM 表名 WHERE 列名 LIKE '模式%'; -
排序查询
SELECT * FROM 表名 ORDER BY 列名 ASC|DESC; -
限制返回行数
SELECT * FROM 表名 LIMIT 10; -
去重查询
SELECT DISTINCT 列名 FROM 表名;
二、聚合与分组
-
计数
SELECT COUNT(*) FROM 表名; -
分组统计
SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名; -
条件分组
SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 1; -
求和
SELECT SUM(列名) FROM 表名; -
平均值
SELECT AVG(列名) FROM 表名; -
最大值
SELECT MAX(列名) FROM 表名; -
最小值
SELECT MIN(列名) FROM 表名;
三、数据操作
-
插入数据
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); -
批量插入
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4); -
更新数据
UPDATE 表名 SET 列名 = 新值 WHERE 条件; -
删除数据
DELETE FROM 表名 WHERE 条件;
四、表操作
-
创建表
CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型 ); -
删除表
DROP TABLE 表名; -
添加列
ALTER TABLE 表名 ADD 列名 数据类型; -
删除列
ALTER TABLE 表名 DROP COLUMN 列名; -
重命名表
ALTER TABLE 旧表名 RENAME TO 新表名;
五、索引与视图
-
创建索引
CREATE INDEX 索引名 ON 表名 (列名); -
删除索引
DROP INDEX 索引名; -
创建视图
CREATE VIEW 视图名 AS SELECT * FROM 表名; -
删除视图
DROP VIEW 视图名;
六、连接查询
-
内连接
SELECT * FROM 表1
INNER JOIN 表2 ON 表1.列 = 表2.列;
2. **左连接**
```sql
SELECT *
FROM 表1
LEFT JOIN 表2 ON 表1.列 = 表2.列;
-
右连接
SELECT * FROM 表1
RIGHT JOIN 表2 ON 表1.列 = 表2.列;
4. **全连接**
```sql
SELECT *
FROM 表1
FULL OUTER JOIN 表2 ON 表1.列 = 表2.列;
七、子查询与集合
-
子查询
SELECT * FROM 表名 WHERE 列 IN (SELECT 列 FROM 其他表); -
存在性查询
SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 其他表 WHERE 条件); -
联合查询(去重)
SELECT 列 FROM 表1 UNION SELECT 列 FROM 表2;
八、日期与时间
-
当前时间
SELECT NOW(); -
当前日期
SELECT CURDATE(); -
日期加法
SELECT DATE_ADD(日期, INTERVAL 1 DAY); -
日期减法
SELECT DATE_SUB(日期, INTERVAL 1 DAY); -
格式化日期
SELECT DATE_FORMAT(日期, '%Y-%m-%d');
九、字符串处理
-
字符串连接
SELECT CONCAT(列1, 列2) FROM 表名; -
字符串长度
SELECT LENGTH(列名) FROM 表名; -
字符串截取
SELECT SUBSTRING(列名, 1, 5) FROM 表名; -
查找子串位置
SELECT LOCATE('子串', 列名) FROM 表名; -
大小写转换
SELECT UPPER(列名), LOWER(列名) FROM 表名; -
去除空格
SELECT TRIM(列名) FROM 表名;
十、条件与高级函数
-
CASE 表达式
SELECT 列名, CASE WHEN 条件 THEN '值1' ELSE '值2' END FROM 表名; -
IF 函数
SELECT IF(条件, '值1', '值2') FROM 表名; -
COALESCE
SELECT COALESCE(列名, '默认值') FROM 表名; -
NULLIF
SELECT NULLIF(列1, 列2) FROM 表名; -
COUNT DISTINCT
SELECT COUNT(DISTINCT 列名) FROM 表名; -
GROUP_CONCAT
SELECT GROUP_CONCAT(列名) FROM 表名 GROUP BY 其他列;
十一、事务管理
-
开启事务
BEGIN; -
提交事务
COMMIT; -
回滚事务
ROLLBACK;
十二、游标与存储过程
-
声明游标
DECLARE 游标名 CURSOR FOR SELECT 列 FROM 表名; -
打开游标
OPEN 游标名; -
获取游标数据
FETCH 游标名 INTO 变量; -
关闭游标
CLOSE 游标名; -
创建存储过程
CREATE PROCEDURE proc_name() BEGIN -- SQL 语句 END; -
调用存储过程
CALL proc_name();
十三、函数与触发器
-
创建函数
CREATE FUNCTION func_name() RETURNS 数据类型 BEGIN -- 返回表达式 END; -
调用函数
SELECT func_name(); -
创建触发器
CREATE TRIGGER trg_name BEFORE INSERT ON 表名 FOR EACH ROW SET NEW.列 = '值'; -
删除触发器
DROP TRIGGER trg_name;
十四、系统信息查询
-
当前用户
SELECT CURRENT_USER(); -
当前数据库
SELECT DATABASE(); -
表行数与大小
SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名'; -
创建/修改时间
SELECT CREATE_TIME, UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
十五、实用查询技巧
-
LIMIT + ORDER BY
SELECT * FROM 表名 ORDER BY 列名 LIMIT 10; -
查询外键约束
SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '数据库名'; -
查询主键约束
SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '数据库名' AND CONSTRAINT_TYPE = 'PRIMARY KEY'; -
ROLLUP 汇总
SELECT 列, SUM(列2) FROM 表名 GROUP BY 列 WITH ROLLUP; -
前 N 条/后 N 条
-- 前 N 条 SELECT * FROM 表名 LIMIT N; -- 后 N 条 SELECT * FROM 表名 ORDER BY 列 DESC LIMIT N; -
NOT EXISTS / IN / NOT IN
SELECT * FROM 表名 WHERE NOT EXISTS (...); SELECT * FROM 表名 WHERE 列 IN (值1, 值2); SELECT * FROM 表名 WHERE 列 NOT IN (值1, 值2); -
UNION ALL
SELECT 列 FROM 表1 UNION ALL SELECT 列 FROM 表2;
十六、性能优化
-
EXPLAIN 分析
EXPLAIN SELECT * FROM 表名 WHERE 条件; -
创建优化索引
CREATE INDEX idx_name ON 表名 (列名); -
使用临时表
CREATE TEMPORARY TABLE tmp AS SELECT * FROM 表名; -
查看索引
SHOW INDEX FROM 表名; -
查询版本
SELECT VERSION();
十七、错误处理
-
捕获异常
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN -- 错误处理逻辑 END; -
输出错误信息
SELECT ERROR_MESSAGE(); -
事务中处理错误
BEGIN; -- 语句 -- 错误时 ROLLBACK ROLLBACK;
十八、数据备份与恢复
-
备份数据库
mysqldump -u 用户名 -p 数据库名 > 备份.sql -
恢复数据库
mysql -u 用户名 -p 数据库名 < 备份.sql
十九、数据导入与导出
-
导入数据
LOAD DATA INFILE '路径' INTO TABLE 表名; -
导出数据
SELECT * INTO OUTFILE '路径' FROM 表名;
二十、常用工具与命令
-
显示当前数据库
SHOW DATABASES; -
显示所有表
SHOW TABLES; -
表结构
DESCRIBE 表名; -
当前连接
SHOW PROCESSLIST; -
库空间使用
SELECT table_schema AS '数据库', SUM(data_length+index_length)/1024/1024 AS '大小(MB)' FROM information_schema.TABLES GROUP BY table_schema; -
表行数
SELECT COUNT(*) FROM 表名; -
用户权限
SHOW GRANTS FOR '用户名'@'主机';
返回🔙
- 一、基本查询
- 二、聚合与分组
- 三、数据操作
- 四、表操作
- 五、索引与视图
- 六、连接查询
- 七、子查询与集合
- 八、日期与时间
- 九、字符串处理
- 十、条件与高级函数
- 十一、事务管理
- 十二、游标与存储过程
- 十三、函数与触发器
- 十四、系统信息查询
- 十五、实用查询技巧
- 十六、性能优化
- 十七、错误处理
- 十八、数据备份与恢复
- 十九、数据导入与导出
- 二十、常用工具与命令
通过上文 100 条常用 SQL 语句的系统汇总,相信你已经对 MySQL 日常操作和面试高频题型有了全面了解。无论是北京、上海的互联网大厂,还是深圳、成都的初创公司,只要灵活运用这些语句,就能在数据处理、报表生成、性能优化等环节游刃有余。
💡 更多高级技巧和实战案例,欢迎访问 ==> 全栈Bug解决方案专栏
如果你在学习或使用过程中遇到任何问题,欢迎在评论区留言交流。祝你在 2025 年的数据库面试中旗开得胜,早日拿到心仪 offer!
1213

被折叠的 条评论
为什么被折叠?



