你见过最惊艳的sql查询语句是什么?

GitHub上有很多有意思的sql查询语句和项目。

  1. SQL Murder Mystery: 一个有趣的交互式游戏,通过解决 SQL 查询谜题来解决一个虚构的凶杀案。
  2. SQL Style Guide: 一个关于 SQL 编码风格和最佳实践的指南,其中包含一些有趣的示例和案例研究。
  3. SQL-Interview-Preparation: 这个存储库收集了一些常见的 SQL 面试问题和解答,可以帮助你准备 SQL 面试。
  4. SQL Advent Calendar: 这个存储库收集了每年 12 月期间发布的有趣的 SQL 相关的博客文章和示例代码,涵盖了各种主题。
  5. SQL Queries for Data Analysis: 一个收集了用于数据分析的 SQL 查询示例的存储库,包含了从简单到复杂的查询示例。

还有一些展示了高级和复杂SQL技巧,可以让我们在查询和处理方面更加灵活的语句

使用自连接查询找出同一表中具有相同值的记录:

SELECT A.column_name, B.column_name
FROM table_name A, table_name B
WHERE A.column_name = B.column_name
AND A.id <> B.id;

在查询结果中使用 CASE 表达式进行条件判断和转换:

SELECT name, age,
CASE
    WHEN age < 18 THEN '未成年'
    WHEN age >= 18 AND age < 65 THEN '成年'
    ELSE '老年'
END AS age_group
FROM customers;

使用窗口函数计算累积和(Cumulative Sum):

SELECT date, revenue,
SUM(revenue) OVER (ORDER BY date) AS cumulative_sum
FROM sales;

利用交叉连接(CROSS JOIN)生成所有可能的组合:

SELECT A.column_name, B.column_name
FROM table_A A
CROSS JOIN table_B B;

使用递归查询处理树状结构数据:

WITH RECURSIVE tree_path AS (
    SELECT id, name, CAST(name AS VARCHAR(255)) AS path
    FROM categories
    WHERE parent_id IS NULL
    UNION ALL
    SELECT c.id, c.name, CONCAT(tp.path, ' > ', c.name)
    FROM categories c
    INNER JOIN tree_path tp ON c.parent_id = tp.id
)
SELECT id, name, path
FROM tree_path;

SQL语句如何优化?

要遵循一些最佳实践,一张图就可以知道高质量SQL是怎么写的:

我们根据图片总结一下所有需要注意的事项

保持简洁:

  • 编写简洁明了的SQL语句。
  • 避免使用过于复杂的逻辑。
  • 尽量减少嵌套子查询,使用连接(JOIN)或窗口函数等方法简化查询。

使用正确的数据类型:

  • 选择与数据内容匹配的数据类型。
  • 根据数据特性选择合适的数据类型,如整数、小数、日期和时间、字符串和布尔值

格式化:

  • 使用一致的缩进、空格和换行。
  • 保持代码整洁、易读。

为表和列取有意义的名称:

  • 使用描述性的表和列名。
  • 遵循团队或组织的命名规范。

使用别名:

  • 为表和列使用简短的别名,使代码更简洁。
  • 别名应该简洁且具有描述性。

注释:

  • 保持注释简洁明了。
  • 解释代码的目的和功能。
  • 使用标准的注释格式。
  • 更新注释以反映代码的变化。

避免使用 SELECT *:

  • 明确列出所需查询的列名
  • 减少不必要的数据传输和性能损失。

优化查询性能:

  • 关注潜在的性能问题,如全表扫描、缺乏索引等。
  • 合理地使用索引,以提高查询性能。

使用事务:

  • 在处理多个相关操作时,使用事务来保证数据的一致性。
  • 注意事务的隔离级别和锁定策略。

测试和审查:

  • SQL语句编写测试用例
  • 验证查询结果的正确性和性能。
  • 邀请同事或团队成员审查代码。
  • 关注可读性、性能和功能正确性。

更多内容分享

分享MySQL 28个小技巧(干货,收藏!)

MySQL 数据库操作小技巧有哪些?0 赞同 · 0 评论回答icon-default.png?t=N4P3https://www.zhihu.com/question/590312429/answer/2944396477

为什么MySQL 索引要使用B+树

为什么MySQL 索引要使用B+树,而不是B树?或者其他树?3 赞同 · 0 评论回答icon-default.png?t=N4P3https://www.zhihu.com/question/483689690/answer/2880990344

如何提高查询的效率?

一般在写SQL时需要注意哪些问题,可以提高查询的效率?2 赞同 · 0 评论回答正在上传…重新上传取消icon-default.png?t=N4P3https://www.zhihu.com/question/29619558/answer/2830786420

千万级的大表要怎么优化?

MySQL 对于千万级的大表要怎么优化?icon-default.png?t=N4P3https://www.zhihu.com/question/19719997/answer/2827095423

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值