找回密码
 立即注册
首页 业界区 安全 100条常用SQL语句

100条常用SQL语句

党新苗 6 天前
一、基本查询语句

查询所有数据
  1. SELECT * FROM 表名;
复制代码
查询特定列
  1. SELECT 列名1, 列名2 FROM 表名;
复制代码
条件查询
  1. SELECT * FROM 表名 WHERE 条件;
复制代码
模糊查询
  1. SELECT * FROM 表名 WHERE 列名 LIKE '模式%';
复制代码
排序查询
  1. SELECT * FROM 表名 ORDER BY 列名 ASC|DESC;
复制代码
限制返回行数
  1. SELECT * FROM 表名 LIMIT 10;
复制代码
去重查询
  1. SELECT DISTINCT 列名 FROM 表名;
复制代码
二、聚合与分组

聚合函数 - 计数
  1. SELECT COUNT(*) FROM 表名;
复制代码
分组查询
  1. SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;
复制代码
条件分组
  1. SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 1;
复制代码
计算总和
  1. SELECT SUM(列名) FROM 表名;
复制代码
计算平均值
  1. SELECT AVG(列名) FROM 表名;
复制代码
计算最大值
  1. SELECT MAX(列名) FROM 表名;
复制代码
计算最小值
  1. SELECT MIN(列名) FROM 表名;
复制代码
三、数据操作

插入数据
  1. INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2);
复制代码
批量插入数据
  1. INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2), (值3, 值4);
复制代码
更新数据
  1. UPDATE 表名 SET 列名 = 新值 WHERE 条件;
复制代码
删除数据
  1. DELETE FROM 表名 WHERE 条件;
复制代码
四、表操作

创建表
  1. CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型);
复制代码
删除表
  1. DROP TABLE 表名;
复制代码
修改表结构
  1. ALTER TABLE 表名 ADD 列名 数据类型;
复制代码
删除表中的列
  1. ALTER TABLE 表名 DROP COLUMN 列名;
复制代码
重命名表
  1. ALTER TABLE 旧表名 RENAME TO 新表名;
复制代码
五、索引与视图

创建索引
  1. CREATE INDEX 索引名 ON 表名 (列名);
复制代码
删除索引
  1. DROP INDEX 索引名;
复制代码
创建视图
  1. CREATE VIEW 视图名 AS SELECT * FROM 表名;
复制代码
删除视图
  1. DROP VIEW 视图名;
复制代码
六、连接查询

内连接
  1. SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2.列名;
复制代码
左连接
  1. SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名;
复制代码
右连接
  1. SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 = 表2.列名;
复制代码
全连接
  1. SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.列名 = 表2.列名;
复制代码
七、子查询与集合

子查询
  1. SELECT * FROM 表名 WHERE 列名 IN (SELECT 列名 FROM 其他表名);
复制代码
存在查询
  1. SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 其他表名 WHERE 条件);
复制代码
联合查询
  1. SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2;
复制代码
八、日期与时间

获取当前时间
  1. SELECT NOW();
复制代码
获取当前日期
  1. SELECT CURDATE();
复制代码
日期加法
  1. SELECT DATE_ADD(日期, INTERVAL 1 DAY);
复制代码
日期减法
  1. SELECT DATE_SUB(日期, INTERVAL 1 DAY);
复制代码
格式化日期
  1. SELECT DATE_FORMAT(日期, '%Y-%m-%d');
复制代码
九、字符串处理

字符串连接
  1. SELECT CONCAT(列名1, 列名2) FROM 表名;
复制代码
字符串长度
  1. SELECT LENGTH(列名) FROM 表名;
复制代码
字符串截取
  1. SELECT SUBSTRING(列名, 1, 5) FROM 表名;
复制代码
查找字符串位置
  1. SELECT LOCATE('子串', 列名) FROM 表名;
复制代码
大写转换
  1. SELECT UPPER(列名) FROM 表名;
复制代码
小写转换
  1. SELECT LOWER(列名) FROM 表名;
复制代码
去除空格
  1. SELECT TRIM(列名) FROM 表名;
复制代码
十、其他高级功能

使用CASE语句
  1. SELECT 列名, CASE WHEN 条件 THEN '值1' ELSE '值2' END FROM 表名;
复制代码
使用IF语句
  1. SELECT 列名, IF(条件, '值1', '值2') FROM 表名;
复制代码
使用COALESCE函数
  1. SELECT COALESCE(列名, '默认值') FROM 表名;
复制代码
使用NULLIF函数
  1. SELECT NULLIF(列名1, 列名2) FROM 表名;
复制代码
获取唯一值的数量
  1. SELECT COUNT(DISTINCT 列名) FROM 表名;
复制代码
使用GROUP_CONCAT
  1. SELECT GROUP_CONCAT(列名) FROM 表名 GROUP BY 其他列名;
复制代码
十一、事务管理

事务开始
  1. BEGIN;
复制代码
提交事务
  1. COMMIT;
复制代码
回滚事务
  1. ROLLBACK;
复制代码
十二、游标与存储过程

创建游标
  1. DECLARE 游标名 CURSOR FOR SELECT 列名 FROM 表名;
复制代码
打开游标
  1. OPEN 游标名;
复制代码
获取游标数据
  1. FETCH 游标名 INTO 变量名;
复制代码
关闭游标
  1. CLOSE 游标名;
复制代码
创建存储过程
  1. CREATE PROCEDURE 存储过程名 AS BEGIN ... END;
复制代码
调用存储过程
  1. CALL 存储过程名();
复制代码
十三、函数与触发器

创建函数
  1. CREATE FUNCTION 函数名() RETURNS 数据类型 AS BEGIN ... END;
复制代码
调用函数
  1. SELECT 函数名();
复制代码
创建触发器
  1. CREATE TRIGGER 触发器名 BEFORE INSERT ON 表名 FOR EACH ROW SET 新列 = '值';
复制代码
删除触发器
  1. DROP TRIGGER 触发器名;
复制代码
十四、系统信息查询

查询当前用户
  1. SELECT CURRENT_USER();
复制代码
查询当前数据库
  1. SELECT DATABASE();
复制代码
查询表的行数和大小
  1. SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
复制代码
获取表的创建时间
  1. SELECT CREATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
复制代码
获取表的修改时间
  1. SELECT UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
复制代码
十五、其他实用查询

使用LIMIT与ORDER BY结合
  1. SELECT * FROM 表名 ORDER BY 列名 LIMIT 10;
复制代码
查询表的外键约束
  1. SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '数据库名';
复制代码
查询表的主键约束
  1. SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '数据库名' AND CONSTRAINT_TYPE = 'PRIMARY KEY';
复制代码
使用ROLLUP进行分组汇总
  1. SELECT 列名, SUM(列名2) FROM 表名 GROUP BY 列名 WITH ROLLUP;
复制代码
获取前N条记录
  1. SELECT * FROM 表名 LIMIT N;
复制代码
获取最后N条记录
  1. SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT N;
复制代码
使用NOT EXISTS进行条件判断
  1. SELECT * FROM 表名 WHERE NOT EXISTS (SELECT 1 FROM 其他表名 WHERE 条件);
复制代码
使用IN进行条件判断
  1. SELECT * FROM 表名 WHERE 列名 IN (值1, 值2);
复制代码
使用NOT IN进行条件判断
  1. SELECT * FROM 表名 WHERE 列名 NOT IN (值1, 值2);
复制代码
使用UNION ALL
  1. SELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2;
复制代码
十六、性能优化

使用EXPLAIN分析查询
  1. EXPLAIN SELECT * FROM 表名 WHERE 条件;
复制代码
优化索引
  1. CREATE INDEX 索引名 ON 表名 (列名);
复制代码
使用临时表
  1. CREATE TEMPORARY TABLE 临时表名 AS SELECT * FROM 表名;
复制代码
查询表的索引
  1. SHOW INDEX FROM 表名;
复制代码
查询数据库版本
  1. SELECT VERSION();
复制代码
十七、常见错误处理

捕获错误
  1. DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END;
复制代码
输出错误信息
  1. SELECT ERROR_MESSAGE();
复制代码
使用事务处理错误
  1. BEGIN; -- 开始事务
  2. -- 执行SQL语句
  3. -- 如果有错误,ROLLBACK
复制代码
十八、数据备份与恢复

备份数据库
  1. mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
复制代码
恢复数据库
  1. mysql -u 用户名 -p 数据库名 < 备份文件.sql
复制代码
十九、数据导入与导出

导入数据
  1. LOAD DATA INFILE '文件路径' INTO TABLE 表名;
复制代码
导出数据
  1. SELECT * INTO OUTFILE '文件路径' FROM 表名;
复制代码
二十、常用工具与命令

显示当前数据库
  1. SELECT DATABASE();
复制代码
显示所有数据库
  1. SHOW DATABASES;
复制代码
显示所有表
  1. SHOW TABLES;
复制代码
显示表结构
  1. DESCRIBE 表名;
复制代码
显示当前连接信息
  1. SHOW PROCESSLIST;
复制代码
显示数据库使用情况
  1. SELECT table_schema AS '数据库', SUM(data_length + index_length) / 1024 / 1024 AS '大小(MB)' FROM information_schema.TABLES GROUP BY table_schema;
复制代码
显示表的行数
  1. SELECT COUNT(*) FROM 表名;
复制代码
显示用户权限
  1. SHOW GRANTS FOR '用户名'@'主机名';
复制代码
以上就是本期全部内容
我是晓凡,再小的帆也能远航
希望对你有所帮助
我们下期再见 ヾ(•ω•`)o (●'◡'●)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册