在大多数情况下,不需要接收所有记录,而只需接收那些满足特定条件的记录。 这就是为什么SQL中有一个特殊的运算符WHERE来进行采样过滤。
例如,让我们从表中选择仅与特定产品相关的记录。 为此,我们指定一个附加选择参数,该参数将按“产品”列过滤值。
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
正如您所看到的,选择条件用单引号引起来,这是过滤文本值时必需的。 过滤数值时不需要引号。
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
在此示例中,我们选择了销售收入超过 40,000 美元的记录,并按“金额”字段对所有记录进行升序排序。
下表列出了 SQL 支持的条件语句:
操作标志 | 价值 |
---|---|
= | 等于 |
<> | 不等于 |
< | 较少的 |
<= | 小于或等于 |
> | 更多的 |
>= | 大于或等于 |
BETWEEN | 两个值之间 |
IS NULL | 没有记录 |
运算符BETWEEN用于选择位于特定范围内的数据。在下一个查询中,“金额”字段中介于 1,000 美元和 2,000 美元(含)之间的所有值都将被选中。
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
排序顺序将取决于请求中字段的顺序。也就是说,在我们的例子中,数据将首先按 Amount 列排序,然后按 City 排序。
在 SQL 中,有一个特殊的运算符用于选择空记录(称为 NULL)。空条目是表中未输入字符的任何单元格。如果单元格中输入0或空格,则认为该字段已填充。
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
在上面的示例中,我们故意删除了 Amount 字段中的两个值来演示 NULL 运算符。
SQL 语言不限于按一种条件进行过滤,出于您自己的目的,您可以使用相当复杂的结构来按多种条件同时选择数据。 为此,SQL 有额外的运算符来扩展 WHERE 运算符的功能。 这些运算符是:AND、OR、IN、NOT。 我们将举几个例子来说明这些运算符的操作。
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
让我们组合 AND 和 OR 运算符。 为此,我们将精选 3 月份出售的自行车(Bikes)和溜冰鞋(Skates)。
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
我们可以看到我们的样本中包含了很多值(除了三月,还有一月、二月和四月)。 是什么原因? 事实上,SQL 具有命令执行优先级。 也就是说,AND 运算符的优先级高于 OR 运算符,因此首先选择 3 月份售出的溜冰鞋的记录,然后选择所有与自行车相关的记录。
因此,为了获得正确的采样,我们需要更改命令执行优先级。 为此,我们将使用括号,就像数学中一样。 然后,将首先处理括号中的运算符,然后再处理其余的运算符。
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
IN 运算符执行与 OR 相同的功能,但有几个优点:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
关键字NOT允许您从样本中删除不必要的值。 另外,它的特点是放在参与过滤的列名之前,而不是之后。