2021年7月29日星期四

SQL 入门教程:组合 WHERE 子句

目录
  • 一、AND 操作符
  • 二、OR 操作符
  • 三、求值顺序
  • 请参阅

目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程

使用 WHERE 子句 中介绍的所有 WHERE 子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,SQL 允许给出多个 WHERE 子句。这些子句有两种使用方式,即以 AND 子句或 OR 子句的方式使用。

操作符(operator)

用来联结或改变 WHERE 子句中的子句的关键字,也称为逻辑操作符(logical operator)。

一、AND 操作符

要通过不止一个列进行过滤,可以使用 AND 操作符给 WHERE 子句附加条件。下面的代码给出了一个例子:

输入▼

SELECT prod_id, prod_price, prod_nameFROM ProductsWHERE vend_id = 'DLL01' AND prod_price <= 4;

分析▼

此 SQL 语句检索由供应商 DLL01 制造且价格小于等于 4 美元的所有产品的名称和价格。这条 SELECT 语句中的 WHERE 子句包含两个条件,用 AND 关键字联结在一起。AND 指示 DBMS 只返回满足所有给定条件的行。如果某个产品由供应商 DLL01 制造,但价格高于 4 美元,则不检索它。类似地,如果产品价格小于 4 美元,但不是由指定供应商制造的也不被检索。这条 SQL 语句产生的输出如下:

输出▼

prod_id  prod_price  prod_name-------  ----------  --------------------BNBG02  3.4900   Bird bean bag toyBNBG01  3.4900   Fish bean bag toyBNBG03  3.4900   Rabbit bean bag toy

AND

用在 WHERE 子句中的关键字,用来指示检索满足所有给定条件的行。

这个例子只包含一个 AND 子句,因此只有两个过滤条件。可以增加多个过滤条件,每个条件间都要使用 AND 关键字。

说明:没有 ORDER BY 子句

为了节省空间,也为了减少你的输入,我在很多例子里省略了 ORDER BY 子句。因此,你的输出完全有可能与教程中的输出不一致。虽然返回行的数量总是对的,但它们的顺序可能不同。当然,如果你愿意也可以加上一个 ORDER BY 子句,它应该放在 WHERE 子句之后。

二、OR 操作符

OR 操作符与 AND 操作符正好相反,它指示 DBMS 检索匹配任一条件的行。事实上,许多 DBMS 在 OR WHERE 子句的第一个条件得到满足的情况下,就不再计算第二个条件了(在第一个条件满足时,不管第二个条件是否满足,相应的行都将被检索出来)。

请看如下的 SELECT 语句:

输入▼

SELECT prod_id, prod_price, prod_nameFROM ProductsWHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

分析▼

此 SQL 语句检索由任一个指定供应商制造的所有产品的产品名和价格。OR 操作符告诉 DBMS 匹配任一条件而不是同时匹配两个条件。如果这里使用的是 AND 操作符,则没有数据返回(因为会创建没有匹配行的 WHERE 子句)。这条 SQL 语句产生的输出如下:

输出▼

prod_name    prod_price-------------------  ----------Fish bean bag toy  3.4900Bird bean bag toy  3.4900Rabbit bean bag toy  3.49008 inch teddy bear  5.990012 inch teddy bear  8.990018 inch teddy bear  11.9900Raggedy Ann    4.9900

OR

WHERE 子句中使用的关键字,用来表示检索匹配任一给定条件的行。

三、求值顺序

WHERE 子句可以包含任意数目的 ANDOR 操作符。允许两者结合以进行复杂、高级的过滤。

但是,组合 ANDOR 会带来了一个有趣的问题。为了说明这个问题,来看一个例子。假如需要列出价格为 10 美元及以上,且由 DLL01 或 BRS01 制造的所有产品。下面的 SELECT 语句使用组合的 ANDOR 操作符建立了一个 WHERE 子句:

输入▼

SELECT prod_name, prod_priceFROM ProductsWHERE vend_id = 'DLL01' OR vend_id = 'BRS01'  AND prod_price >= 10;

输出▼

prod_name    prod_price-------------------  ----------Fish bean bag toy  3.4900Bird bean bag toy  3.4900Rabbit bean bag toy  3.490018 inch teddy bear  11.9900Raggedy Ann    4.9900

分析▼

请看上面的结果。返回的行中有 4 行价格小于 10 美元,显然,返回的行未按预期的进行过滤。为什么会这样呢?原因在于求值的顺序。SQL(像多数语言一样)在处理 OR 操作符前,优先处理 AN......

原文转载:http://www.shaoqun.com/a/892257.html

跨境电商:https://www.ikjzd.com/

kkr:https://www.ikjzd.com/w/1340

垂直电商:https://www.ikjzd.com/w/1450

bol:https://www.ikjzd.com/w/291


目录一、AND操作符二、OR操作符三、求值顺序请参阅目录汇总:SQL入门教程:面向萌新小白的零基础入门教程使用WHERE子句中介绍的所有WHERE子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,SQL允许给出多个WHERE子句。这些子句有两种使用方式,即以AND子句或OR子句的方式使用。操作符(operator)用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符(logi
四川省文化和旅游厅定点帮扶叙永2021年度联席会在叙永召开:http://www.30bags.com/a/434496.html
四川省文化和旅游厅艺术顾问座谈会在京召开:http://www.30bags.com/a/433930.html
四川省文化和旅游厅召开2021年全省非遗保护工作会议:http://www.30bags.com/a/434637.html
四川省文化和旅游厅召开智游天府建设动员会:http://www.30bags.com/a/433826.html
我与寡妇疯狂作爱草丛 那次寡妇被折腾的死去活来:http://lady.shaoqun.com/a/247593.html
宝宝我们来做床上运动 宝宝坐上来自己动:http://lady.shaoqun.com/a/247688.html
扒开老师双腿猛进入 挺进老师的紧窄小肉:http://lady.shaoqun.com/m/a/247512.html
男友按着我让别的男人做 女友被粗大的猛烈进出:http://lady.shaoqun.com/m/a/247430.html
招生在高校旁边开酒店的推广方式有争议:http://lady.shaoqun.com/a/428527.html
为什么大学附近有那么多小旅馆?大学生不都住校园吗?:http://lady.shaoqun.com/a/428528.html
大学周边的酒店往往供不应求。他们在里面做什么?你有过难忘的经历吗?:http://lady.shaoqun.com/a/428529.html
女人给你这四个暗示是因为想和你发生关系!:http://lady.shaoqun.com/a/428530.html

没有评论:

发表评论