100条常用SQL语句
<h3 id="一基本查询语句">一、基本查询语句</h3><p><strong>查询所有数据</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名;
</code></pre>
<p><strong>查询特定列</strong>:</p>
<pre><code class="language-sql">SELECT 列名1, 列名2 FROM 表名;
</code></pre>
<p><strong>条件查询</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE 条件;
</code></pre>
<p><strong>模糊查询</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE 列名 LIKE '模式%';
</code></pre>
<p><strong>排序查询</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 ORDER BY 列名 ASC|DESC;
</code></pre>
<p><strong>限制返回行数</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 LIMIT 10;
</code></pre>
<p><strong>去重查询</strong>:</p>
<pre><code class="language-sql">SELECT DISTINCT 列名 FROM 表名;
</code></pre>
<h3 id="二聚合与分组">二、聚合与分组</h3>
<p><strong>聚合函数 - 计数</strong>:</p>
<pre><code class="language-sql">SELECT COUNT(*) FROM 表名;
</code></pre>
<p><strong>分组查询</strong>:</p>
<pre><code class="language-sql">SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;
</code></pre>
<p><strong>条件分组</strong>:</p>
<pre><code class="language-sql">SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 1;
</code></pre>
<p><strong>计算总和</strong>:</p>
<pre><code class="language-sql">SELECT SUM(列名) FROM 表名;
</code></pre>
<p><strong>计算平均值</strong>:</p>
<pre><code class="language-sql">SELECT AVG(列名) FROM 表名;
</code></pre>
<p><strong>计算最大值</strong>:</p>
<pre><code class="language-sql">SELECT MAX(列名) FROM 表名;
</code></pre>
<p><strong>计算最小值</strong>:</p>
<pre><code class="language-sql">SELECT MIN(列名) FROM 表名;
</code></pre>
<h3 id="三数据操作">三、数据操作</h3>
<p><strong>插入数据</strong>:</p>
<pre><code class="language-sql">INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2);
</code></pre>
<p><strong>批量插入数据</strong>:</p>
<pre><code class="language-sql">INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2), (值3, 值4);
</code></pre>
<p><strong>更新数据</strong>:</p>
<pre><code class="language-sql">UPDATE 表名 SET 列名 = 新值 WHERE 条件;
</code></pre>
<p><strong>删除数据</strong>:</p>
<pre><code class="language-sql">DELETE FROM 表名 WHERE 条件;
</code></pre>
<h3 id="四表操作">四、表操作</h3>
<p><strong>创建表</strong>:</p>
<pre><code class="language-sql">CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型);
</code></pre>
<p><strong>删除表</strong>:</p>
<pre><code class="language-sql">DROP TABLE 表名;
</code></pre>
<p><strong>修改表结构</strong>:</p>
<pre><code class="language-sql">ALTER TABLE 表名 ADD 列名 数据类型;
</code></pre>
<p><strong>删除表中的列</strong>:</p>
<pre><code class="language-sql">ALTER TABLE 表名 DROP COLUMN 列名;
</code></pre>
<p><strong>重命名表</strong>:</p>
<pre><code class="language-sql">ALTER TABLE 旧表名 RENAME TO 新表名;
</code></pre>
<h3 id="五索引与视图">五、索引与视图</h3>
<p><strong>创建索引</strong>:</p>
<pre><code class="language-sql">CREATE INDEX 索引名 ON 表名 (列名);
</code></pre>
<p><strong>删除索引</strong>:</p>
<pre><code class="language-sql">DROP INDEX 索引名;
</code></pre>
<p><strong>创建视图</strong>:</p>
<pre><code class="language-sql">CREATE VIEW 视图名 AS SELECT * FROM 表名;
</code></pre>
<p><strong>删除视图</strong>:</p>
<pre><code class="language-sql">DROP VIEW 视图名;
</code></pre>
<h3 id="六连接查询">六、连接查询</h3>
<p><strong>内连接</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2.列名;
</code></pre>
<p><strong>左连接</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名;
</code></pre>
<p><strong>右连接</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 = 表2.列名;
</code></pre>
<p><strong>全连接</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.列名 = 表2.列名;
</code></pre>
<h3 id="七子查询与集合">七、子查询与集合</h3>
<p><strong>子查询</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE 列名 IN (SELECT 列名 FROM 其他表名);
</code></pre>
<p><strong>存在查询</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 其他表名 WHERE 条件);
</code></pre>
<p><strong>联合查询</strong>:</p>
<pre><code class="language-sql">SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2;
</code></pre>
<h3 id="八日期与时间">八、日期与时间</h3>
<p><strong>获取当前时间</strong>:</p>
<pre><code class="language-sql">SELECT NOW();
</code></pre>
<p><strong>获取当前日期</strong>:</p>
<pre><code class="language-sql">SELECT CURDATE();
</code></pre>
<p><strong>日期加法</strong>:</p>
<pre><code class="language-sql">SELECT DATE_ADD(日期, INTERVAL 1 DAY);
</code></pre>
<p><strong>日期减法</strong>:</p>
<pre><code class="language-sql">SELECT DATE_SUB(日期, INTERVAL 1 DAY);
</code></pre>
<p><strong>格式化日期</strong>:</p>
<pre><code class="language-sql">SELECT DATE_FORMAT(日期, '%Y-%m-%d');
</code></pre>
<h3 id="九字符串处理">九、字符串处理</h3>
<p><strong>字符串连接</strong>:</p>
<pre><code class="language-sql">SELECT CONCAT(列名1, 列名2) FROM 表名;
</code></pre>
<p><strong>字符串长度</strong>:</p>
<pre><code class="language-sql">SELECT LENGTH(列名) FROM 表名;
</code></pre>
<p><strong>字符串截取</strong>:</p>
<pre><code class="language-sql">SELECT SUBSTRING(列名, 1, 5) FROM 表名;
</code></pre>
<p><strong>查找字符串位置</strong>:</p>
<pre><code class="language-sql">SELECT LOCATE('子串', 列名) FROM 表名;
</code></pre>
<p><strong>大写转换</strong>:</p>
<pre><code class="language-sql">SELECT UPPER(列名) FROM 表名;
</code></pre>
<p><strong>小写转换</strong>:</p>
<pre><code class="language-sql">SELECT LOWER(列名) FROM 表名;
</code></pre>
<p><strong>去除空格</strong>:</p>
<pre><code class="language-sql">SELECT TRIM(列名) FROM 表名;
</code></pre>
<h3 id="十其他高级功能">十、其他高级功能</h3>
<p><strong>使用CASE语句</strong>:</p>
<pre><code class="language-sql">SELECT 列名, CASE WHEN 条件 THEN '值1' ELSE '值2' END FROM 表名;
</code></pre>
<p><strong>使用IF语句</strong>:</p>
<pre><code class="language-sql">SELECT 列名, IF(条件, '值1', '值2') FROM 表名;
</code></pre>
<p><strong>使用COALESCE函数</strong>:</p>
<pre><code class="language-sql">SELECT COALESCE(列名, '默认值') FROM 表名;
</code></pre>
<p><strong>使用NULLIF函数</strong>:</p>
<pre><code class="language-sql">SELECT NULLIF(列名1, 列名2) FROM 表名;
</code></pre>
<p><strong>获取唯一值的数量</strong>:</p>
<pre><code class="language-sql">SELECT COUNT(DISTINCT 列名) FROM 表名;
</code></pre>
<p><strong>使用GROUP_CONCAT</strong>:</p>
<pre><code class="language-sql">SELECT GROUP_CONCAT(列名) FROM 表名 GROUP BY 其他列名;
</code></pre>
<h3 id="十一事务管理">十一、事务管理</h3>
<p><strong>事务开始</strong>:</p>
<pre><code class="language-sql">BEGIN;
</code></pre>
<p><strong>提交事务</strong>:</p>
<pre><code class="language-sql">COMMIT;
</code></pre>
<p><strong>回滚事务</strong>:</p>
<pre><code class="language-sql">ROLLBACK;
</code></pre>
<h3 id="十二游标与存储过程">十二、游标与存储过程</h3>
<p><strong>创建游标</strong>:</p>
<pre><code class="language-sql">DECLARE 游标名 CURSOR FOR SELECT 列名 FROM 表名;
</code></pre>
<p><strong>打开游标</strong>:</p>
<pre><code class="language-sql">OPEN 游标名;
</code></pre>
<p><strong>获取游标数据</strong>:</p>
<pre><code class="language-sql">FETCH 游标名 INTO 变量名;
</code></pre>
<p><strong>关闭游标</strong>:</p>
<pre><code class="language-sql">CLOSE 游标名;
</code></pre>
<p><strong>创建存储过程</strong>:</p>
<pre><code class="language-sql">CREATE PROCEDURE 存储过程名 AS BEGIN ... END;
</code></pre>
<p><strong>调用存储过程</strong>:</p>
<pre><code class="language-sql">CALL 存储过程名();
</code></pre>
<h3 id="十三函数与触发器">十三、函数与触发器</h3>
<p><strong>创建函数</strong>:</p>
<pre><code class="language-sql">CREATE FUNCTION 函数名() RETURNS 数据类型 AS BEGIN ... END;
</code></pre>
<p><strong>调用函数</strong>:</p>
<pre><code class="language-sql">SELECT 函数名();
</code></pre>
<p><strong>创建触发器</strong>:</p>
<pre><code class="language-sql">CREATE TRIGGER 触发器名 BEFORE INSERT ON 表名 FOR EACH ROW SET 新列 = '值';
</code></pre>
<p><strong>删除触发器</strong>:</p>
<pre><code class="language-sql">DROP TRIGGER 触发器名;
</code></pre>
<h3 id="十四系统信息查询">十四、系统信息查询</h3>
<p><strong>查询当前用户</strong>:</p>
<pre><code class="language-sql">SELECT CURRENT_USER();
</code></pre>
<p><strong>查询当前数据库</strong>:</p>
<pre><code class="language-sql">SELECT DATABASE();
</code></pre>
<p><strong>查询表的行数和大小</strong>:</p>
<pre><code class="language-sql">SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
</code></pre>
<p><strong>获取表的创建时间</strong>:</p>
<pre><code class="language-sql">SELECT CREATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
</code></pre>
<p><strong>获取表的修改时间</strong>:</p>
<pre><code class="language-sql">SELECT UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';
</code></pre>
<h3 id="十五其他实用查询">十五、其他实用查询</h3>
<p><strong>使用LIMIT与ORDER BY结合</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 ORDER BY 列名 LIMIT 10;
</code></pre>
<p><strong>查询表的外键约束</strong>:</p>
<pre><code class="language-sql">SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '数据库名';
</code></pre>
<p><strong>查询表的主键约束</strong>:</p>
<pre><code class="language-sql">SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '数据库名' AND CONSTRAINT_TYPE = 'PRIMARY KEY';
</code></pre>
<p><strong>使用ROLLUP进行分组汇总</strong>:</p>
<pre><code class="language-sql">SELECT 列名, SUM(列名2) FROM 表名 GROUP BY 列名 WITH ROLLUP;
</code></pre>
<p><strong>获取前N条记录</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 LIMIT N;
</code></pre>
<p><strong>获取最后N条记录</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT N;
</code></pre>
<p><strong>使用NOT EXISTS进行条件判断</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE NOT EXISTS (SELECT 1 FROM 其他表名 WHERE 条件);
</code></pre>
<p><strong>使用IN进行条件判断</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE 列名 IN (值1, 值2);
</code></pre>
<p><strong>使用NOT IN进行条件判断</strong>:</p>
<pre><code class="language-sql">SELECT * FROM 表名 WHERE 列名 NOT IN (值1, 值2);
</code></pre>
<p><strong>使用UNION ALL</strong>:</p>
<pre><code class="language-sql">SELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2;
</code></pre>
<h3 id="十六性能优化">十六、性能优化</h3>
<p><strong>使用EXPLAIN分析查询</strong>:</p>
<pre><code class="language-sql">EXPLAIN SELECT * FROM 表名 WHERE 条件;
</code></pre>
<p><strong>优化索引</strong>:</p>
<pre><code class="language-sql">CREATE INDEX 索引名 ON 表名 (列名);
</code></pre>
<p><strong>使用临时表</strong>:</p>
<pre><code class="language-sql">CREATE TEMPORARY TABLE 临时表名 AS SELECT * FROM 表名;
</code></pre>
<p><strong>查询表的索引</strong>:</p>
<pre><code class="language-sql">SHOW INDEX FROM 表名;
</code></pre>
<p><strong>查询数据库版本</strong>:</p>
<pre><code class="language-sql">SELECT VERSION();
</code></pre>
<h3 id="十七常见错误处理">十七、常见错误处理</h3>
<p><strong>捕获错误</strong>:</p>
<pre><code class="language-sql">DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END;
</code></pre>
<p><strong>输出错误信息</strong>:</p>
<pre><code class="language-sql">SELECT ERROR_MESSAGE();
</code></pre>
<p><strong>使用事务处理错误</strong>:</p>
<pre><code class="language-sql">BEGIN; -- 开始事务
-- 执行SQL语句
-- 如果有错误,ROLLBACK
</code></pre>
<h3 id="十八数据备份与恢复">十八、数据备份与恢复</h3>
<p><strong>备份数据库</strong>:</p>
<pre><code class="language-sql">mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
</code></pre>
<p><strong>恢复数据库</strong>:</p>
<pre><code class="language-sql">mysql -u 用户名 -p 数据库名 < 备份文件.sql
</code></pre>
<h3 id="十九数据导入与导出">十九、数据导入与导出</h3>
<p><strong>导入数据</strong>:</p>
<pre><code class="language-sql">LOAD DATA INFILE '文件路径' INTO TABLE 表名;
</code></pre>
<p><strong>导出数据</strong>:</p>
<pre><code class="language-sql">SELECT * INTO OUTFILE '文件路径' FROM 表名;
</code></pre>
<h3 id="二十常用工具与命令">二十、常用工具与命令</h3>
<p><strong>显示当前数据库</strong>:</p>
<pre><code class="language-sql">SELECT DATABASE();
</code></pre>
<p><strong>显示所有数据库</strong>:</p>
<pre><code class="language-sql">SHOW DATABASES;
</code></pre>
<p><strong>显示所有表</strong>:</p>
<pre><code class="language-sql">SHOW TABLES;
</code></pre>
<p><strong>显示表结构</strong>:</p>
<pre><code class="language-sql">DESCRIBE 表名;
</code></pre>
<p><strong>显示当前连接信息</strong>:</p>
<pre><code class="language-sql">SHOW PROCESSLIST;
</code></pre>
<p><strong>显示数据库使用情况</strong>:</p>
<pre><code class="language-sql">SELECT table_schema AS '数据库', SUM(data_length + index_length) / 1024 / 1024 AS '大小(MB)' FROM information_schema.TABLES GROUP BY table_schema;
</code></pre>
<p><strong>显示表的行数</strong>:</p>
<pre><code class="language-sql">SELECT COUNT(*) FROM 表名;
</code></pre>
<p><strong>显示用户权限</strong>:</p>
<pre><code class="language-sql">SHOW GRANTS FOR '用户名'@'主机名';
</code></pre>
<p>以上就是本期全部内容</p>
<p>我是晓凡,再小的帆也能远航</p>
<p>希望对你有所帮助</p>
<p>我们下期再见 ヾ(•ω•`)o (●'◡'●)</p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:程序员晓凡,转载请注明原文链接:https://www.cnblogs.com/xiezhr/p/18960805</p><br><br>
来源:https://www.cnblogs.com/xiezhr/p/18960805
頁:
[1]