SQL必知必会 第四课 笔记——过滤数据

第4课 过滤数据
       这一课将讲授如何使用SELECT语句的 WHERE子句指定搜索条件
4.1 使用WHERE子句
       通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定 搜索条件(search criteria),搜索条件也称为 过滤条件(filter condition)。WHERE子句在表名(FROM子句)之后给出,如下所示:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
       结果只返回prod_price值为3.49的行
       警告:WHERE子句的位置—— 在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。
4.2 WHERE子句操作符

4.2.2 不匹配检查
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01' ;
       提示:何时使用引号——如果仔细观察上述WHERE子句中的条件,会看到有的值括在单引号内,而有的值未括起来。单引号用来限定字符串。如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。
       警告:是!=还是<>?
       !=和<>通常可以互换。但是,并非所有DBMS都支持这两种不等于操作符。例如,Microsoft Access支持<>而不支持!=。如果有疑问,请参阅相应的DBMS文档。

4.2.3 范围值检查
       要检查某个范围的值,可以使用BETWEEN操作符。
SELECT prod_name, prod_price FROM Products
WHERE prod_price
BETWEEN 5 AND 10;

4.2.4 空值检查
       在一个列不包含值时,称其包含 空值NULL
       确定值是否为NULL,不能简单地检查是否= NULL。SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是 IS NULL子句。其语法如下:
SELECT prod_name
FROM Products
WHERE prod_price IS NULL ;
警告:NULL和非匹配
        通过过滤选择不包含指定值的所有行时,你可能希望返回含NULL值的行。但是这做不到。因为未知(unknown)有特殊的含义,数据库不知道它们是否匹配,所以在进行匹配过滤或非匹配过滤时,不会返回这些结果。
过滤数据时,一定要验证被过滤列中含NULL的行确实出现在返回的数据中。

猜你喜欢

转载自blog.csdn.net/zjhysj/article/details/80482169