常用SQL语句

常用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.列名;
左连接:SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名;

右连接:SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 = 表2.列名;

全连接: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(列名, 15FROM 表名;
查找字符串位置:SELECT LOCATE('子串', 列名) FROM 表名;
大写转换:SELECT UPPER(列名) FROM 表名;
小写转换:SELECT 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 表名;
获取唯一值的数量: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 存储过程名 AS BEGIN ... END;
调用存储过程:CALL 存储过程名();
十三、函数与触发器创建函数:CREATE FUNCTION 函数名() RETURNS 数据类型 AS BEGIN ... END;
调用函数:SELECT 函数名();
创建触发器:CREATE TRIGGER 触发器名 BEFORE INSERT ON 表名 FOR EACH ROW SET 新列 = '';
删除触发器:DROP TRIGGER 触发器名;
十四、系统信息查询查询当前用户:SELECT CURRENT_USER();
查询当前数据库:SELECT DATABASE();
查询表的行数和大小:SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
获取表的创建时间:SELECT CREATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
获取表的修改时间:SELECT 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条记录:SELECT * FROM 表名 LIMIT N;
获取最后N条记录:SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT N;
使用NOT EXISTS进行条件判断:SELECT * FROM 表名 WHERE NOT EXISTS (SELECT 1 FROM 其他表名 WHERE 条件);
使用IN进行条件判断:SELECT * FROM 表名 WHERE 列名 IN (值1, 值2);
使用NOT IN进行条件判断:SELECT * FROM 表名 WHERE 列名 NOT IN (值1, 值2);
使用UNION ALLSELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2;
十六、性能优化使用EXPLAIN分析查询:EXPLAIN SELECT * FROM 表名 WHERE 条件;
优化索引:CREATE INDEX 索引名 ON 表名 (列名);
使用临时表:CREATE TEMPORARY TABLE 临时表名 AS SELECT * FROM 表名;
查询表的索引:SHOW INDEX FROM 表名;
查询数据库版本:SELECT VERSION();
十七、常见错误处理捕获错误:DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END;
输出错误信息:SELECT ERROR_MESSAGE();
使用事务处理错误:BEGIN-- 开始事务
-- 执行SQL语句
-- 如果有错误,ROLLBACK
十八、数据备份与恢复备份数据库:mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
恢复数据库:mysql -u 用户名 -p 数据库名 < 备份文件.sql
十九、数据导入与导出导入数据:LOAD DATA INFILE '文件路径' INTO TABLE 表名;
导出数据:SELECT * INTO OUTFILE '文件路径' FROM 表名;
二十、常用工具与命令显示当前数据库:SELECT DATABASE();
显示所有数据库: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 '用户名'@'主机名';
posted @ 2025-07-28 10:51  Rukh  阅读(45)  评论(0)    收藏  举报