02 SQL 规则和命令 初步 基本操作

2018-04-01  本文已影响15人  夏威夷的芒果

规定查询格式

大写

你可能已经注意到,我们大写了 SELECT 和 FROM,而将表和列名称小写。这是一个常见的格式惯例。大写命令(SELECT、FROM),小写查询中的其他内容是常见做法。这使得查询更容易读取,这在编写更复杂的查询时更为重要。准备编写查询时,这是一个很好的习惯。

表和变量名中不需要空格

通常在列名中使用下划线,避免使用空格。 在 SQL 中使用空格有点麻烦。 在 Postgres 中,如果列或表名称中有空格,就需要使用双引号括住这些列/表名称(例如:FROM \"Table Name\",而不是 FROM table_name)。在其他环境中,可能会使用方括号(例如:FROM [Table Name])。

在查询中使用空格

SQL 查询忽略空格,因此可以根据需要在代码之间添加尽可能多的空格和空行,并且查询结果是相同的。

我们来看下面这个查询:

SELECT account_id FROM orders

等价于:

SELECT account_id
FROM orders

和这个(但是永远不要这样写):

SELECT              account_id

FROM               orders

SQL 不区分大小写。
如果你已经使用过其他语言编程,那么可能会熟悉编程语言,如果没有区分大小写键入正确的字符,那么会非常麻烦。 SQL 不区分大小写。 我们来看看下面的查询:

SELECT account_id
FROM orders

和这个相同:

select account_id
from orders

也和这个相同:

SeLeCt AcCoUnt_id
FrOm oRdErS

但是,再次提醒,遵循上面讲述的完全大写命令的惯例,而将其他代码片段小写。

分号

根据 SQL 环境,查询结尾可能需要一个执行的分号。 这个"要求"在其他环境中比较灵活。
在每个语句的末尾添加一个分号是最好的做法,如果环境能够一次显示多个结果,那么这样做还可以一次运行多个命令。

最好的做法:

SELECT account_id
FROM orders;

既然,我们这里的环境不需要分号,我们来看看没有分号的解决方案:

SELECT account_id
FROM orders

规则太多了。

LIMIT命令

许多查询的目的是打开表格看看里面的数据什么样? 扫一扫前面几行,大概了解自己关心哪些字段,想对字段做什么操作。

如果想要查看表的前几行时,LIMIT 语句就能派上用场。这可比加载整个数据集要快得多。

LIMIT 命令始终是查询的最后一部分。下面的例子仅显示订单表的前 10 行和所有列:

SELECT *
FROM orders
LIMIT 10;

我们也可以通过将 10 更改为任何其他数字来更改行数。


LIMIT练习

ORDER BY (01)

ORDER BY 语句可使我们按任意行排序表。如果熟悉 Excel,这与使用过滤器进行排序相似。

ORDER BY 语句始终在 SELECT 和 FROM 语句之后,但位于 LIMIT 语句之前。 学习其他命令时,这些语句的顺序将更为重要。 如果使用 LIMIT 语句,它将始终显示在最后。

提示

记住可以在 ORDER BY 语句中的列之后添加 DESC,然后按降序排序,因为默认是按升序排序的。"

答案:

SELECT id,occurred_at,total_amt_usd
FROM orders
ORDER BY occurred_at
LIMIT 10;
SELECT id,account_id,total_amt_usd
FROM orders
ORDER BY total_amt_usd DESC
LIMIT 5;
SELECT id,account_id,total
FROM orders
ORDER BY total
LIMIT 20;

ORDER BY (02) 多维排序

可以一次 ORDER BY 多列。这个语句可以按照从左至右列出的列进行排序。 我们也可以翻过来使用 DESC。

练习

答案

评: 以这种方式对日期进行比较并没有多大意义,因为这两种日期与这种粒度是一样的。

WHERE语句

可以使用 WHERE 语句来为表格创建子集。WHERE 语句中使用的常用符号包括:

>(大于)
<(小于)
>=(大于或等于)
<=(小于或等于)
=(等于)
!=(不等于)


WHERE的位置

练习

练习

没有加分号的非标准答案

答案

使用这些 WHERE 语句时,不需要 ORDER BY,除非要实际整理数据。不必对数据进行排序,仍可继续执行条件。

WHERE 语句也可以与非数字数据一起使用。可以使用 = 和 != 运算符。 还需要确保在文本数据中使用引号(单引号或双引号都可以 - 另外如果原始文本中有引号,就更要注意)。

通常将 WHERE 与非数字数据字段一起使用时,我们会使用 LIKE、NOT 或 IN 运算符。

WHERE与文本一起使用

练习

使用WHERE进行筛选

派生列

我们将现有的列组合,生成的新列称为 派生 列。

常见运算包括:
*(乘法)
+(加法)
-(减法)
/(除法)


示例:SELECT 语句中 使用 AS 和 新变量名nonstandard_qty 接收派生列

练习

练习 答案

逻辑运算符简介
我们将在接下来的概念中学习 逻辑运算符。逻辑运算符包括:

LIKE
可用于进行类似于使用 WHERE 和 = 的运算,但是这用于你可能 不 知道自己想准确查找哪些内容的情况。

IN
用于执行类似于使用 WHERE 和 = 的运算,但用于多个条件的情况。

NOT
这与 IN 和 LIKE 一起使用,用于选择 NOT LIKE 或 NOT IN 某个条件的所有行。

AND & BETWEEN
可用于组合所有组合条件必须为真的运算。

OR
可用于组合至少一个组合条件必须为真的运算。

上一篇下一篇

猜你喜欢

热点阅读