IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    请问您见过最惊艳的sql查询语句是什么?

    黑马程序员发表于 2023-08-23 15:58:00
    love 0

    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 数据库操作小技巧有哪些?

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

    为什么MySQL 索引要使用B+树,而不是B树?或者其他树?

    如何提高查询的效率?

    一般在写SQL时需要注意哪些问题,可以提高查询的效率?

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

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



    来源:知乎 www.zhihu.com
    作者:黑马程序员

    【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 点击下载

    此问题还有 51 个回答,查看全部。
    延伸阅读:
    请问怎么写这个sql查询语句?
    一条 SQL 查询语句是如何执行的?


沪ICP备19023445号-2号
友情链接