SQL 高效排版指北

统一 SQL 排版的相关用法,极大提高编写和维护 SQL 的效率。

注: column = 选取的字段;table = 选取的表名

语句结构

错误

SELECT column1 FROM table1 ORDER BY column1

正确

SELECT

column1

FROM

table1

ORDER BY

column1

解析

SQL 语句在内部执行时会解析成树状展开的结构,SELECT,FROM,WHERE 等关键字定义了结构体,这些关键词统一使用大写并配合缩进来直观的区分内容和结构。

判断条件

错误

SELECT column1 FROM table1 WHERE column1=1 AND column2 = 2

正确

SELECT

column1

FROM

table1

WHERE

column1 = 1

AND column2 = 2

解析

同一级别的语句块保持相等距离的缩进,AND 放置在条件前面。

子查询

错误

SELECT L.column1 FROM (SELECT column1 FROM table1 ) as L

正确

SELECT

L.column1

FROM

(

SELECT

column1

FROM

table1

) as L

解析

子查询会成为一个完整的表嵌入到上层的结构中,子查询的内部又是一个完整的结构体,当然也要使用缩进来定义结构,并且整体要往后缩进一个层次,与上层结构配合。

连接

错误

SELECT table1.column1,table2.column2 FROM table1 LEFT JOIN table2 ON table1.column1 = table2.column1

正确

SELECT

table1.column1

,table2.column2

FROM

table1

LEFT JOIN

table2

ON

table1.column1 = table2.column1

解析

JOIN 后两张表会形成一张新的大表,该大表需要保持缩进来嵌入到上层,同时内部的两种表也要通过缩进维持结构。

逗号

错误

SELECT column1,column2,column3 FROM table1

正确

SELECT

column1

,column2

,column3

FROM

table1

解析

读者刚开始将逗号前置可能会不太习惯,但这样做会显著的带来两个好处,第一:长的SQL语句往往选取的字段长短不一,若将逗号放在后面,当缺失逗号时很难发现,放在前面就很容易排查,第二:调试 SQL 语句时,注释掉最后一个字段,也可以直接运行,减少调试时间。

长函数

错误

SELECT concat(column1,column2,column3) FROM table1

正确

SELECT

concat( column1

,column2

,column3)

FROM

table1

解析

当长的函数十分复杂时,若没有清晰的结构,很容易写完就忘。函数与函数参数也是呈子母对的性质,那么它们也就具有树状的表达结构,通过缩进形式也可以展现出这种树状结构。

举个栗子

错误

SELECT L.column1,R.column2,concat(L.column1,R.column2) FROM (SELECT column1 ,column3FROM table1) AS L LEFT JOIN

(SELECT column2,column3FROM table2) AS R ON L.column3 = R.column3 WHERE L.column1 = 1 AND R.column1 = 2 GROUP

BY L.column1,R.column2 ORDER BY L.column1,R.column2

正确

SELECT

L.column1

,R.column2

,concat(L.column1

,R.column2)

FROM

(

SELECT

column1

,column3

FROM

table1

) AS L

LEFT JOIN

(

SELECT

column2

,column3

FROM

table2

) AS R

ON

L.column3 = R.column3

WHERE

L.column1 = 1

AND R.column1 = 2

GROUP BY

L.column1

,R.column2

ORDER BY

L.column1

,R.column2

解析

再复杂的语句也可以通过这样的方式拆分以增加可读性,在后期调试时也十分方便。

结语

知行合一:这个方法可以加深读者对 SQL 的理解,在练习的过程中仔细体会这种语法的树状结构,假以时日就可以掌握。

怎么学习函数:各种函数看似纷繁多样,其实基础结构十分简单,所有的函数都是围绕数字,文本,日期这三种数据类型,再辅以一些结构和增删查改的过程来展开。运用函数的过程就是逻辑上对这三种类型进行运算,再通过逻辑去搜索函数,最后组合起来达到想要目的的过程。so,学习函数就是掌握(数字,文本,日期)*增删查改 ,这一表达式的过程。

如何融会贯通:随着练习的深入,读者可以感受到写 SQL 就像折纸一样,它们面向的对象都是矩阵,而所有的数据产品:Excel,Hive,Tableau等等都是在处理矩阵对象,只是表达方式和面对的场景不同才有所差异,本质上殊途同归。当读者对矩阵概念有比较清晰的概念时就可以达到一通百通的层次。

mysql 排版 指令_Mysql语句排版相关推荐

  1. mysql kill 指令_MySQL kill指令使用指南

    KILL [CONNECTION | QUERY] processlist_id 在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终 ...

  2. mysql desc指令_MySQL Desc指令相关

    MySQL Desc指令相关 2011-08-09 11:25:50|  分类: my基本命令 |举报 |字号 订阅 1.desc tablename; 例如 :mysql> desc jos_ ...

  3. mysql execute指令_MYSQL简单命令

    常用 mysql 操作指令: 连接:mysql -u用户名 -p密码 退出:mysql>exit; 建数据库:mysql>create database ???; 显示数据库:mysql& ...

  4. mysql激活指令_MySQL命令大全

    1 /* SQL编程 */ ------------------2 --// 局部变量 ----------3 -- 变量声明4 declare var_name[,...] type [defaul ...

  5. mysql sql测试_MySQL语句测试——数据查询

    MySQL语句测试--数据查询 3.4 数据查询 一.单表查询 /*1.选择表中的若干列,各个列的先后顺序和语句中列名从左到右的顺序一致 select 目标表达式 from 表名; */ /*(1)s ...

  6. mysql 去除括号_MySQL语句批量去除括号及内容

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  7. mysql or优化_MySQL 语句优化

    官方文档放这里,有什么代码先到官方文档查询: MySQL 8.0 Reference Manual :: 8 Optimization​dev.mysql.com 优化涉及多个级别的配置,调整和测量性 ...

  8. mysql net 指令_MySQL命令

    1.MySQL数据库服务器的开启与关闭: net start mysql net stop mysql 2.退出命令行客户端: quit 3.创建数据库 CREATE DATABASE 数据库名称; ...

  9. mysql删除指令_mysql怎么用命令删除数据?

    在mysql中,可以使用"DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]"命令删除单个表中的数据:也可以使用"TRUNCA ...

最新文章

  1. opencv隔点采样(下采样)
  2. tp5获取mysql版本_TP5 + MySQL 应用地址选择
  3. 形似棺材的“抗震救生床”,你会要吗?
  4. jQuery Mobile 教程
  5. python中运算的英文_[lemon]Python中的运算符,LemonPython
  6. Redis都有哪些监控指标,看完你就懂了!
  7. java中日期计算时间差,java中依据,两个日期,计算时间差
  8. 图片裁剪:CropZoom插件的应用
  9. 1.12 深层循环神经网络
  10. mysql获取一行中多列的最大值_SQL 获取一行中多个字段的最大值
  11. 几行Java解决图片提取文字功能
  12. 下载和安装Visual C ++ 2008 Express Edition的说明
  13. maya导入abc动画_UE4 Alembic 动画资产流程的整理
  14. c语言库函数总结----ctype.h库
  15. OpenGL学习(七)通过assimp库读取多种格式的模型
  16. windows7如何安装python_windows7系统下如何安装python
  17. oracle查看视图属于哪个用户,oracle查询视图归属于哪个用户
  18. 安卓各国语言对应缩写和时区查询
  19. fme使用workspacerunner批量处理数据
  20. 车间生产管理系统严格管控生产全过程?7大步骤分享

热门文章

  1. vue-property-decorator 提供 OO 的风格 Vue Component 方便类型声明
  2. 20162329 张旭升 2017 - 2018 《程序设计与数据结构》第五周总结
  3. nodejs中require的路径是一个文件夹时发生了什么
  4. 红帽436——HA高可用集群之概念篇
  5. [转]打造自己的LINQ Provider(上):Expression Tree揭秘
  6. 外刊评终极平板电脑十大功能:防眩目屏幕在列
  7. Aspx页面javascript的几个trick
  8. 小程序 国际化_在国际化您的应用程序时忘记的一件事
  9. VMware文件共享
  10. leetcode 941. 有效的山脉数组