MYSQL:实用的sql语句编写

前言

        干货,长期更新,有异议评论区交流。

        注意:所有的sql示例均为虚假的例子,具体语句需要自己根据项目实况编写!!!

SQL

        1、某一天或几天的数据查询

        在 MySQL 中,可以使用 DATE() 函数来提取日期部分,或者使用范围查询来表示某一天。

# 20.751s -> 220367条
select did,ctime from boiler_guolu where DATE(ctime) = '2024-08-15'

# 20.385s -> 220367条
select did,ctime from boiler_guolu where ctime >= '2024-08-15' and ctime < '2024-08-16'

# 26.615s -> 220367条
select did,ctime from boiler_guolu where DATE_FORMAT(ctime, '%Y-%m-%d') = '2024-08-15'

# 结论: DATE和>=|<两种查询方式速度相当,DATE_FORMAT效果最差
# 查询 某一天或不固定的几天,建议使用DATE
# 查询 连续的时间范围,建议使用>=和< 方案

        2、分页查询

        对于大数据集,使用 LIMIT 和 OFFSET 来分页查询数据,避免一次性加载所有数据。

SELECT * 
FROM table_name
ORDER BY column_name
LIMIT 10 OFFSET 20;  -- 从第21行开始,取10行数据

        3、使用 IN 代替多个 OR

        当需要查询多个值时,使用 IN 代替多个 OR 条件,这样可以提高查询性能。

SELECT * 
FROM table_name
WHERE column_name IN ('value1', 'value2', 'value3');

        4、 检查是否有符合条件的记录

        对于大型表,避免使用 COUNT(*) 来计算行数。如果只需要检查是否有记录,可以使用 EXISTS。 

-- 检查是否有记录
SELECT EXISTS (SELECT 1 FROM table_name WHERE column = 'value');

-- 使用 COUNT(*) 获取行数(不推荐)
SELECT COUNT(*) FROM table_name WHERE column = 'value';

         5、重复行处理

         查询重复行

SELECT name, email, COUNT(*)
FROM employees
GROUP BY name, email
HAVING COUNT(*) > 1;

        如果你只想查询唯一的行,你可以使用 DISTINCT 关键字来选择表中的唯一行。

SELECT DISTINCT column_name FROM your_table;

         为了删除新索引下的重复行,你可以使用 DELETE 语句并利用键进行排序

# 在这个例子中,将只保留最小id的重复行。
# 如果想保留最大,则使用max(id)进行筛选。
# 删除操作需谨慎,请严格做好备份工作!
DELETE FROM your_table
WHERE id NOT IN (SELECT MIN(id) FROM your_table GROUP BY column_name);

         6、模糊查询

        LIKE 关键字允许你使用通配符来进行模糊匹配。常见的通配符包括:

        %:表示零个或多个字符
        _:表示一个单独的字符

# 查找名字中包含 “John” 的记录
SELECT * FROM employees
WHERE name LIKE '%John%';

# 匹配以 “John” 开头的名字
SELECT * FROM employees
WHERE name LIKE 'John%';

# 匹配以 “John” 结尾的名字
SELECT * FROM employees
WHERE name LIKE '%John';

# 名字中第二个字符是 ‘a’ 的记录
SELECT * FROM employees
WHERE name LIKE '_a%';

         REGEXP 关键字允许你使用正则表达式进行更复杂的模糊查询。它比 LIKE 更强大,但也更复杂。

# 假设你想查找名字中包含 “John” 或 “Jane” 的记录
SELECT * FROM employees
WHERE name REGEXP 'John|Jane';

# 如果你想查找名字中包含字母 ‘a’ 和 ‘e’ 的记录
SELECT * FROM employees
WHERE name REGEXP 'a.*e';

# 查找包含两个 “John” 的记录
SELECT * FROM employees
WHERE name REGEXP 'John.*John';

        7、一些函数

# 聚合函数

# COUNT():计算指定列或行的数量。
SELECT COUNT(column_name) FROM table_name;

# SUM():计算指定列的总和。
SELECT SUM(column_name) FROM table_name;

# AVG():计算指定列的平均值。
SELECT AVG(column_name) FROM table_name;

# MIN():返回指定列的最小值。
SELECT MIN(column_name) FROM table_name;

# MAX():返回指定列的最大值。
SELECT MAX(column_name) FROM table_name;
# 字符串函数

# CONCAT():连接两个或多个字符串。
SELECT CONCAT(column1, column2) FROM table_name;

# SUBSTRING():从字符串中提取子字符串。
SELECT SUBSTRING(column_name, start_position, length) FROM table_name;

# LENGTH():返回字符串的长度。
SELECT LENGTH(column_name) FROM table_name;

# REPLACE():替换字符串中的某个子字符串。
SELECT REPLACE(column_name, 'old_value', 'new_value') FROM table_name;

# UPPER():将字符串转换为大写。
SELECT UPPER(column_name) FROM table_name;

# LOWER():将字符串转换为小写。
SELECT LOWER(column_name) FROM table_name;

# TRIM():删除字符串两端的空白字符。
SELECT TRIM(column_name) FROM table_name;
# 日期和时间函数

# 将时间转换为字符串输出
select date_format(create_time, '%Y-%m-%d %H:%i:%s') from table_name

# NOW():返回当前日期和时间。
SELECT NOW();

# CURDATE():返回当前日期。
SELECT CURDATE();

# CURTIME():返回当前时间。
SELECT CURTIME();

# DATE_ADD():在日期上增加指定的时间间隔。
SELECT DATE_ADD(date_column, INTERVAL 1 DAY) FROM table_name;

# DATE_SUB():从日期中减去指定的时间间隔。
SELECT DATE_SUB(date_column, INTERVAL 1 MONTH) FROM table_name;

# DATEDIFF():计算两个日期之间的差异(以天为单位)。
SELECT DATEDIFF(date1, date2) FROM table_name;
# 数学函数

# ROUND():对数值进行四舍五入。
SELECT ROUND(column_name, decimal_places) FROM table_name;

# FLOOR():向下取整。
SELECT FLOOR(column_name) FROM table_name;

# CEIL():向上取整。
SELECT CEIL(column_name) FROM table_name;

# ABS():返回绝对值。
SELECT ABS(column_name) FROM table_name;

        8、联表查询 

# INNER JOIN:返回两个表中满足条件的记录。
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;

# LEFT JOIN:返回左表所有记录和右表中匹配的记录。
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;

# RIGHT JOIN:返回右表所有记录和左表中匹配的记录。
SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id;

# FULL JOIN:返回两个表中所有记录,匹配的记录合并。
SELECT * FROM table1 FULL JOIN table2 ON table1.id = table2.id;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

API容易被攻击,如何做好API安全

随着互联网技术的飞速发展和普及&#xff0c;网络安全问题日益严峻&#xff0c;API&#xff08;应用程序接口&#xff09;已成为网络攻击的常见载体之一。API作为不同系统之间数据传输的桥梁&#xff0c;其安全性直接影响到整个系统的稳定性和数据的安全性。 根据Imperva发布的…

【区块链+商贸零售】消费券 2.0 应用方案 | FISCO BCOS应用案例

方案基于FISCO BCOS区块链技术与中间件平台WeBASE&#xff0c;实现新一代消费券安全精准高效发放&#xff0c;实现消费激励&#xff0c; 促进消费循环。同时&#xff0c;方案将用户消费数据上链&#xff0c;实现账本记录与管理&#xff0c;同时加密机制保证了数据安全性。

【解决】Python | ModuleNotFoundError: No module named codecs

【解决】Python | ModuleNotFoundError: No module named codecs 在Python开发中&#xff0c;ModuleNotFoundError: No module named codecs 是一个相对罕见的错误&#xff0c;因为 codecs 是Python标准库中的一个模块&#xff0c;通常应该总是可用的。然而&#xff0c;当你遇到…

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置 ConfigMap保存的是不需要加密配置的信息 ConfigMap 功能在 Kubernetes1.2 版本中引入&#xff0c;许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制&#xff0c;ConfigMap 可以被…

avue-crud 自定义搜索项 插槽

加上 -search 就可以自定义查询项了

43.x86游戏实战-XXX寻找吸怪坐标

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

如何在 FastReport .NET 中构建和安装 Postgres 插件

FastReport .NET 是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案。 功能非常丰富&#xff0c;功能广泛。今天我们将介绍如何使用报表设计器的 FastReport 插件连接数据库。 FastReport .NET 是适用于.NET Core 3&#xff0c;ASP.NET&#xff0c;MVC和Windows窗体…

SQL注入(cookie、base64、dnslog外带、搜索型注入)

目录 COOKIE注入 BASE64注入 DNSLOG注入—注入判断 什么是泛解析&#xff1f; UNC路径 网上邻居 LOAD_FILE函数 搜索型注入—注入判断 本文所使用的sql注入靶场为sqli-labs-master&#xff0c;靶场资源文件已上传&#xff0c;如有需要请前往主页或以下链接下载 信安必备…

视频直播平台选择服务器需要注意什么?

在当今数字化时代&#xff0c;直播平台已成为连接内容创作者与广大观众的重要桥梁。为了确保直播的流畅性、稳定性和安全性&#xff0c;服务器的选择与配置显得尤为重要。以下是搭建直播平台时&#xff0c;服务器所需具备的关键因素。 一、高性能与可扩展性 直播平台需要处理大…

C++第十二弹 -- STL之list模拟实现

文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…

详解语义安全(semantically secure)

目录 一. 引入 二. 密文与明文 2.1 通俗性理解 2.2 定理 2.3 定理理解 三. 语义安全的第一个版本 3.1 基本理解 3.2 定理 3.3 定理理解 四. 语义安全的第二个版本 4.1 直观解释 4.2 小结 一. 引入 密码学中安全加密要求&#xff1a;敌手&#xff08;adversary&…

Git使用方法(三)---简洁版上传git代码

1 默认已经装了sshWindows下安装SSH详细介绍-CSDN博客 2 配置链接github的SSH秘钥 1 我的.ssh路径 2 进入路径cd .ssh 文件 3 生成密钥对 ssh-keygen -t rsa -b 4096 (-t 秘钥类型 -b 生成大小) 输入完会出现 Enter file in which to save the key (/c/Users/Administrator/…

【Android】adb devices 出现devices offline的问题

1 问题 adb devices 出现devices offline 2 解决方法 adb kill-serveradb start-server 然后&#xff0c;adb devices查看。 adb devices 问题解决啦。。。&#x1f49b; &#x1f499; &#x1f49c; ❤️ &#x1f49a; &#x1f49b; &#x1f499; &#x1f49c; ❤️…

雨云美国二区E5v2服务器测评(非广告)

注&#xff1a;本文非广告&#xff0c;非推广 本文长期更新地址&#xff1a; 雨云美国二区E5v2服务器测评&#xff08;非广告&#xff09;-星零岁的博客https://blog.0xwl.com/13594.html 今天来测评一下雨云美国二区v2服务器。我测试的这台配置是4-8&#xff0c; 35 M上传&a…

《机器学习》周志华-CH1(绪论)

1.1引言 机器学习&#xff08;Matchine-Learning&#xff09;所研究的主要内容是关于在计算机上从数据中产生“模型”&#xff08;model&#xff09;的算法&#xff0c;即“学习算法”&#xff08;learning algorithm&#xff09;。可以说机器学习&#xff08;Matchine-Learni…

智能菜谱推荐系统_ct3p7

TOC springboot575智能菜谱推荐系统_ct3p7--论文 第一章 概述 1.1 研究背景 近些年&#xff0c;随着中国经济发展&#xff0c;人民的生活质量逐渐提高&#xff0c;对网络的依赖性越来越高&#xff0c;通过网络处理的事务越来越多。随着智能菜谱推荐管理的常态化&#xff0c…

PYQT实现上传图片,保存图片

代码如下 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sysclass MyWindow(QMainWindow):def __init__(self):super(MyWindow, self).__init__()self.setWindowTitle("图片处理")self.setGeometry(200, 200, 500, …

最全海外广告库大合集,建议收藏!

在当今数字营销的世界中&#xff0c;广告投放的精准性和创意性变得越来越重要。而“海外广告库”作为一种强大的工具&#xff0c;正在被越来越多的广告主和营销专家所使用。本文将深入探讨几大主流的海外广告库&#xff0c;并探讨如何利用它们来提升广告效果。 什么是海外广告…

推荐一个开源的kafka可视化客户端GUI工具(Kafka King)

大佬的博客地址&#xff1a; https://blog.ysboke.cn/posts/tools/kafka-king Github地址&#xff1a; https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表&#xff08;完成&#xff09;支持PLAINTEXT、SASL PLAINTEXT用户名密码认证&#xff08;完…

[C语言]-基础知识点梳理-文件管理

前言 各位师傅们好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解文件管理的相关知识&#xff0c;也就是常见的 读取&#xff0c;删除一类的操作 文件 为什么要使用文件&#xff1f; 程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&…