在本教程中将学习如何使用Oracle WHERE
子句来指定过滤的条件返回符合查询条件的行记录。
WHERE
子句指定SELECT
语句返回符合搜索条件的行记录。下面说明了WHERE
子句的语法:
SELECT column_1, column_2, ... FROM table_name WHERE search_condition ORDER BY column_1, column_2;
WHERE
子句出现在FROM
子句之后但在ORDER BY子句之前。在WHERE关键字之后是search_condition
- 它定义了返回行记录必须满足的条件。
除了SELECT
语句之外,还可以使用DELETE或UPDATE语句中的WHERE
子句来指定要更新或删除的行记录。
请参阅示例数据库中的以下产品(products
)表,其表结构如下 -
以下示例仅返回名称为“Kingston”
的产品:
SELECT product_name, description, list_price, category_id FROM products WHERE product_name = 'Kingston';
执行上面示例中的查询语句,得到以下结果 -
在这个例子中,Oracle按以下顺序评估子句:FROM WHERE
和SELECT
FROM
子句指定查询数据的表。WHERE
子句基于条件(例如product_name ='Kingston'
过滤行记录)。SELECT
子句选择了应该返回的列。除了等于(=
)运算符之外,Oracle还提供了下表中所示的许多其他比较运算符:
编号 | 运算符 | 描述 |
---|---|---|
1 | = |
等于 |
2 | != ,<> |
不等于 |
3 | > |
大于 |
4 | < |
小于 |
5 | >= |
大于或等于 |
6 | <= |
小于或等于 |
7 | IN | 等于值列表中的任何值 |
8 | ANY/SOME/ALL | 将值与列表或子查询进行比较。它必须以另一个运算符(例如:= ,> ,< )作为前缀。 |
9 | NOT IN | 不等于值列表中的任何值 |
10 | [NOT] BETWEEN n AND m | 相当于[Not] >= n 且 <= y 。 |
11 | [NOT] EXISTS | 如果子查询返回至少一行,则返回true |
12 | IS [NOT] NULL |
测试NULL 的值 |
例如,要获取标价大于500
的产品,请使用以下语句:
SELECT product_name, list_price FROM products WHERE list_price > 500;
执行上面查询语句,得到以下结果 -
例如,要获取属于类别编号是4
且标价大于500
的所有主板,请使用以下语句:
SELECT product_name, list_price FROM products WHERE list_price > 500 AND category_id = 4;
执行上面示例代码,得到以下结果 -
要查找具有两个值之间的值的行,请在WHERE
子句中使用BETWEEN
运算符。
例如,要获取标价在650
到680
之间(650 <= list_price <= 680
)的产品,请使用以下语句:
SELECT product_name, list_price FROM products WHERE list_price BETWEEN 650 AND 680 ORDER BY list_price;
执行上面查询语句,得到以下结果 -
请注意,以下表达式是等效的:
SELECT product_name, list_price FROM products WHERE list_price >= 650 AND list_price <= 680 ORDER BY list_price;
要查询值列表中的行记录,可以使用IN运算符,如下所示:
SELECT product_name, category_id FROM products WHERE category_id IN(1, 4) ORDER BY product_name;
执行上面查询语句,得到以下结果 -
表达方式:
category_id IN (1, 4)
等效于 -
category_id = 1 OR category_id = 4
以下语句检索名称以Asus
开头的产品:
SELECT product_name, list_price FROM products WHERE product_name LIKE 'Asus%' ORDER BY list_price;
在这个例子中,我们使用LIKE运算符来根据指定的模式来匹配行记录。
在本教程中,您已学习如何使用Oracle WHERE
子句为查询返回指定搜索条件的数据记录。