HONGJIN2为此苦苦挣扎的你呈现SQL的优美!

来源: HONGJIN2为此苦苦挣扎的你呈现SQL的优美!

  很多程序员红警爱好者认为SQL是一头难以驯服的野兽。它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式、命令式语言、 面向对象语言甚至函数式编程语言(虽然有些人觉得SQL 还是有些类似功能)。
  我每天都写SQL,我的开源软件JOOQ中也包含SQL。因此我觉得有必要为还在为此苦苦挣扎的你呈现SQL的优美!下面的教程面向于:

  • 已经使用过但没有完全理解SQL的读者
  • 已经差不多了解SQL但从未真正考虑过它的语法的读者
  • 想要指导他人学习SQL的读者

  本教程将重点介绍SELECT 语句。其他 DML 语句将在另一个教程中在做介绍。接下来就是…
  1、SQL是声明性语言
  首先你需要思考的是,声明性。你唯一需要做的只是声明你想获得结果的性质,而不需要考虑你的计算机怎么算出这些结果的。
SELECT first_name, last_name FROM employees WHERE salary > 100000
  这很容易理解,你无须关心员工的身份记录从哪来,你只需要知道谁有着不错的薪水。
  从中我们学到了什么呢?
  那么如果它是这样的简单,会出现什么问题吗?问题就是我们大多数人会直观地认为这是命令式编程。如:“机器,做这,再做那,但在这之前,如果这和那都发生错误,那么会运行一个检测”。这包括在变量中存储临时的编写循环、迭代、调用函数,等等结果。
  把那些都忘了吧,想想怎么去声明,而不是怎么告诉机器去计算。
  2、SQL语法不是“有序的”
  常见的混乱源于一个简单的事实,SQL语法元素并不会按照它们的执行方式排序。语法顺序如下:

  • SELECT [DISTINCT]
  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • UNION
  • ORDER BY

  为简单起见,并没有列出所有SQL语句。这个语法顺序与逻辑顺序基本上不同,执行顺序如下:

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • DISTINCT
  • UNION
  • ORDER BY

你可能感兴趣的:(面向对象,switch,计算机,开源软件,个人云)