【系统全面】常用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(列名, 1, 5) FROM 表名;

查找字符串位置:

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 ALL:

SELECT 列名 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 '用户名'@'主机名';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90464.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring之SSM整合流程详解(Spring+SpringMVC+MyBatis)

Spring之SSM整合流程详解-SpringSpringMVCMyBatis一、SSM整合的核心思路二、环境准备与依赖配置2.1 开发环境2.2 Maven依赖&#xff08;pom.xml&#xff09;三、整合配置文件&#xff08;核心步骤&#xff09;3.1 数据库配置&#xff08;db.properties&#xff09;3.2 Spring核…

C++STL系列之set和map系列

前言 set和map都是关联式容器&#xff0c;stl中树形结构的有四种&#xff0c;set&#xff0c;map&#xff0c;multiset,multimap.本次主要是讲他们的模拟实现和用法。 一、set、map、multiset、multimap set set的中文意思是集合&#xff0c;集合就说明不允许重复的元素 1……

Linux 磁盘挂载,查看uuid

lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT,SIZEsudo ntfsfix /dev/nvme1n1p1sudo mount -o remount,rw /dev/nvme1n1p1 /media/yake/Datasudo ntfsfix /dev/sda2sudo mount -o remount,rw /dev/sda2 /media/yake/MyData

【AJAX】XMLHttpRequest、Promise 与 axios的关系

目录 一、AJAX原理 —— XMLHttpRequest 1.1 使用XMLHttpRequest 二、 XMLHttpRequest - 查询参数 &#xff08;就是往服务器后面拼接要查询的字符串&#xff09; 三、 地区查询 四、 XMLHttpRequest - 数据提交 五、 认识Promise 5.1 为什么 JavaScript 需要异步&#…

C++中的stack和queue

C中的stack和queue 前言 这一节的内容对于stack和queue的使用介绍会比较少&#xff0c;主要是因为stack和queue的使用十分简单&#xff0c;而且他们的功能主要也是在做题的时候才会显现。这一栏目暂时不会写关于做题的内容&#xff0c;后续我会额外开一个做题日记的栏目的。 这…

Spring Bean生命周期七步曲:定义、实例化、初始化、使用、销毁

各位小猿&#xff0c;程序员小猿开发笔记&#xff0c;希望大家共同进步。 引言 1.整体流程图 2.各阶段分析 1️⃣定义阶段 1.1 定位资源 Spring 扫描 Component、Service、Controller 等注解的类或解析 XML/Java Config 中的 Bean 定义 1.2定义 BeanDefinition 解析类信息…

API安全监测工具:数字经济的免疫哨兵

&#x1f4a5; 企业的三重致命威胁 1. 漏洞潜伏的定时炸弹 某支付平台未检测出API的批量数据泄露漏洞&#xff0c;导致230万用户信息被盗&#xff0c;面临GDPR 1.8亿欧元罚单&#xff08;IBM X-Force 2024报告&#xff09;。传统扫描器对逻辑漏洞漏检率超40%&#xff08;OWASP基…

Matplotlib详细教程(基础介绍,参数调整,绘图教程)

目录 一、初识Matploblib 1.1 安装 Matplotlib 1.2、Matplotlib 的两种接口风格 1.3、Figure 和 Axes 的深度理解 1.4 设置画布大小 1.5 设置网格线 1.6 设置坐标轴 1.7 设置刻度和标签 1.8 添加图例和标题 1.9 设置中文显示 1.10 调整子图布局 二、常用绘图教程 2…

Redis高可用架构演进面试笔记

1. 主从复制架构 核心概念Redis单节点并发能力有限&#xff0c;通过主从集群实现读写分离提升性能&#xff1a; Master节点&#xff1a;负责写操作Slave节点&#xff1a;负责读操作&#xff0c;从主节点同步数据 主从同步流程 全量同步&#xff08;首次同步&#xff09;建立连接…

无人机保养指南

定期清洁无人机在使用后容易积累灰尘、沙砾等杂物&#xff0c;需及时清洁。使用软毛刷或压缩空气清除电机、螺旋桨和机身缝隙中的杂质。避免使用湿布直接擦拭电子元件&#xff0c;防止短路。电池维护锂电池是无人机的核心部件&#xff0c;需避免过度放电或充电。长期存放时应保…

vlm MiniCPM 学习部署实战

目录 开源地址&#xff1a; 模型repo下载&#xff1a; 单图片demo&#xff1a; 多图推理demo&#xff1a; 论文学习笔记&#xff1a; 部署完整教程&#xff1a; 微调教程&#xff1a; 部署&#xff0c;微调教程&#xff0c;视频实测 BitCPM4 技术报告 创意&#xff1…

92套毕业相册PPT模版

致青春某大学同学聚会PPT模版&#xff0c;那些年我们一起走过的岁月PPT模版&#xff0c;某学院某班同学联谊会PPT模版&#xff0c;匆匆那年PPT模版&#xff0c;青春的纪念册PPT模版&#xff0c;栀子花开PPT模版&#xff0c;毕业纪念册PPT模版。 92套毕业相册PPT模版&#xff1…

爬虫基础概念

网络爬虫概述 概念 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网络蜘蛛&#xff08;Web Spider&#xff09;或机器人&#xff08;Bot&#xff09;&#xff0c;是一种自动化程序&#xff0c;用于系统地浏览互联网并收集网页信息。它模拟人类浏览器行为&…

java8 stream流操作的flatMap

我们来详细解释一下 Java 8 Stream API 中的 flatMap 操作。理解 flatMap 的关键在于将其与 map 操作进行对比。​​核心概念&#xff1a;​​​​map 操作&#xff1a;​​作用&#xff1a;将一个流中的每个元素​​转换​​为另一个元素&#xff08;类型可以不同&#xff09;…

开源UI生态掘金:从Ant Design二次开发到行业专属组件的技术变现

开源UI生态掘金&#xff1a;从Ant Design二次开发到行业专属组件的技术变现内容摘要在开源UI生态中&#xff0c;Ant Design作为一款广受欢迎的UI框架&#xff0c;为开发者提供了强大的基础组件。然而&#xff0c;面对不同行业的特定需求&#xff0c;仅仅依靠现有的组件往往难以…

Object Sense (OSE):一款从编辑器脚本发展起来的编程语言

引言&#xff1a;从Vim编辑器走出的语言在编程语言的世界里&#xff0c;许多革命性的创新往往源于看似简单的工具。Object Sense&#xff08;简称OSE&#xff09;的诞生&#xff0c;便与一款经典文本编辑器——Vim息息相关。它的前身是Vim的脚本语言VimL&#xff08;Vimscript&…

我考PostgreSQL中级专家证书二三事

1. 为什么选择PGCE&#xff1f;PostgreSQL的开源特性、高性能和高扩展性早已让我心生向往&#xff0c;而PGCE认证不仅是对技术能力的认可&#xff0c;更是一张通往更高职业舞台的“通行证”。官方资料提到&#xff0c;PGCE考试涵盖性能优化、高可用架构、复杂查询处理、内核原理…

Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践

本文详细讲解如何使用 Java 动态导出包含多人员报名表的 Word 文档&#xff0c;每人占据独立一页&#xff0c;并支持动态表格行&#xff08;如个人经历&#xff09;。我们对比了多种实现方案&#xff0c;最终推荐基于 Freemarker XML 模板 或 docx4j 的灵活方式&#xff0c;并…

【element-ui el-table】多选表格勾选时默认勾选了全部,row-key绑定异常问题解决

项目场景&#xff1a; Element-UI的el-table组件row-key使用问题 同一个页面使用了几个table&#xff0c;这几个table都使用了多选&#xff0c;row-key属性&#xff0c;其中row-key的绑定方式都是用的静态绑定&#xff0c;row-key“username”或row-key“id”&#xff0c;可正常…

C#注释技巧与基础编程示例

以下是一个包含基础注释的 C# 程序示例&#xff0c;展示了 C# 中各类注释的使用方法&#xff1a;using System;namespace BasicCSharpProgram {/// <summary>/// Program 类是应用程序的入口点/// 包含 Main 方法作为程序执行的起点/// </summary>public class Pro…