表中列出的一点操作符是冗余的(如&lt,且由 DLL01 或 B卡宴S01 成立的装有产品

第6课 高级数据过滤

图片 1

5.1 组合 WHERE 子句

  第陆课介绍的 WHERE 子句在过滤数据时都以用单一的尺码。

 

5.1.1 AND 操作符

  检索由供应商 DLL01 创造且价格低于等于 4 美元的有着成品的称号和价格:

SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;

图片 2

 

5.1.2 OR 操作符

  检索任二个点名供应商创建的保有成品的名目和价格:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

图片 3

 

5.1.3 求值顺序((
))

  须求列出价格为 10 新币以上,且由 DLL01 或 B中华VS01 创造的有所产品:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
    AND prod_price >= 10;

 图片 4 

 

  观望结果,发现有 4 行价格小于 10 美金的。

  【原因】SQL 在拍卖 ORAV4操作符前,优先处理 AND 操作符

SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
    AND prod_price >= 10;

图片 5

 

  【提醒】在 WHERE
子句中利用圆括号:

    改变优先级;

    鲜明操作顺序,增强可读性。

 

5.2 IN 操作符

  IN 操作符:用来钦定条件限制,范围中的各类条件都得以开始展览匹配。

  检索由供应商 DLL01 和 B昂科拉S01 创制的富有成品:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;

-- 用 IN 完成和 OR 同样的操作
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
ORDER BY prod_name

图片 6

 

  使用 IN 操作符的来由:
    –在有过多合法选项时,IN 的语法更直观;
    –在与其他 AND 和 O途观 组合使用 IN 时,求值顺序简单管理;
    –IN 一般比一组 O福特Explorer 执行得快;
    –最大亮点–能够涵盖别的 SELECT 语句,能动态地建立 WHERE 子句。

 

5.3 NOT 操作符

  用来否认其后所跟的任何条件

  NOT 从不单独行使

  NOT 能够用在要过滤的列前或后

  列出除 DLL01 之外的具备供应商创设的制品:

SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;

--也可以使用<>,结果一样
SELECT prod_name
FROM Products
WHERE vend_id <> 'DLL01'
ORDER BY prod_name;

图片 7

 

5.4 小结

  • AND 和 OR 组合的 WHERE 子句
  • 求值顺序
  • IN 和 NOT

 

续集:

  SQLServer:《SQL必知必会》一书的读书笔记(六)

  SQLServer:《SQL必知必会》一书的读书笔记(四)

1 过滤检索数据(WHERE)

所利用的数据库资料在:数据库资料

1.1 使用WHERE子句

SELECT prod_name, prod_price 
FROM Products
WHERE prod_price = 3.49;

WHERE子句钦点对寻找条件实行过滤。

留意:在同时利用ORubiconDE奥迪Q5 BY和WHERE子句时,应该让OTiguanDER
BY位于WHERE之后,否则会产生错误。

图片 8


 

1.2 WHERE子句操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
!< 不小于
> 大于
>= 大于等于
!> 不大于
BETWEEN 在指定的两个值之间
IS NULL 为NULL值

只顾:表中列出的有个别操作符是冗余的(如<>与!=相同,!<也正是>=),并非全体的DBMS都辅助那些操作符。


其三课:排序检索数据

1.2.1 检查单个值

列出富有价格低于10美金的成品。

SELECT prod_name, prod_price 
FROM Products
WHERE prod_price < 10;

图片 9


3.1 排序数据

1.2.2 不匹配检查

列出全体不是供应商DLL01创制的产品。

SELECT vend_id, prod_name 
FROM Products
WHERE vend_id <> 'DLL01';

SELECT vend_id, prod_name
FROM Products
WHERE vend_id != 'DLL01';

如果将值与字符串类型的列进行相比,就须要限制引号。用来与数值列举办相比较的值不用引号。

!=和<>平日能够交流,但是不用所有DBMS都支持那两种不对等操作符。

图片 10

图片 11


按单列排序

1.2.3 范围值检查

要反省有些范围的值,能够应用BETWEEN操作符。例如:BETWEEN操作符可用来探寻价格在5法郎和10欧元之间的持有产品,或在钦赐的上马日期和竣事日期之间的有着日期。

寻找价格在5新币和10英镑之间的保有成品。

SELECT prod_name, prod_price 
FROM Products
WHERE prod_price BETWEEN 5 AND 10;

在行使BETWEEN时,必须内定多少个值——所需范围的低端值和高端值。那三个值必须用AND关键字分隔,BETWEEN匹配范围中具备的值,包含钦赐的开始值和了结值。

图片 12


假诺不排序,数据一般将以它在底部表中出现的各种展现,那有只怕是数量最初添加到表中的依次。可是,若是数额随后展开过更新或删除,那么顺寻将不再是当时的顺序;

1.2.4 空值检查

在成立表时,表设计职员能够钦定在那之中的列能或不可能不包括值。在贰个列不带有值时,称其含有空值NULL。
NULL:无值(no value),它与字段蕴涵0、空字符串或一味包蕴空格分歧。

SELECT cust_name 
FROM Customers 
WHERE cust_email IS NULL;

透过过滤选拔不含有钦赐值的装有行时,你大概希望回到含NULL值的行。然则做不到,因为未知(unknown)有特殊的意思,数据库不知道它们是或不是合营,所以在展开匹配过滤或非匹配过滤时,不会回到那么些结果。

过滤数据时,一定要表达被过滤列中含NULL的行确实出未来回到的数量中。

图片 13


ORDER BY

2 高级数据过滤(AND、O陆风X8、IN、NOT IN)

取一个或多个列的名字,并开始展览逐一输出

2.1 组合WHERE子句

操作符:用来归并或改变WHERE子句中的子句的根本字,也称为逻辑操作符(logical
operator)。

输入:
SELECT prod_name
FROM Products
ORDER BY prod_name;
输出:
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
Bird bean bag toy
Fish bean bag toy
King doll
Queen doll
Rabbit bean bag toy
Raggedy Ann

2.1.1 AND操作符

要通过持续一个列进行过滤,能够应用AND操作符给WHERE子句附加条件。

SELECT prod_id, prod_price, prod_name 
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;

SELECT prod_id, prod_price, prod_name 
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4
ORDER BY prod_name;

这几个事例只含有贰个AND子句,由此最多有三个过滤条件。能够扩张两个过滤条件,每种条件间都要运用AND关键字。

图片 14

图片 15


以字母顺序排序;且需注意保障ORubiconDER
BY字句,在SELECT语句中在终极一句,不然会出错;

2.1.2 OR操作符

许多DBMS在OTucsonWHERE子句的首先个标准拿到满意的意况下,就不再总括第三个条件了(在第3个条件满意时,不管第二个原则是不是满意,相应的行都将被寻找出来)。

SELECT prod_name, prod_price 
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

图片 16


 

2.1.3 求值顺序(AND、OQX56)

WHERE子句能够分包自由数目标AND和OEnclave操作符,允许两者结合以拓展复杂、高级的过滤。

借使要求列出价格为10法郎及以上,且由DLL01或BTiggoS01创制的享有产品。

SELECT prod_name, prod_price 
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
      AND prod_price >= 10;

相当于:

SELECT prod_name, prod_price 
FROM Products
WHERE vend_id = 'DLL01' OR (vend_id = 'BRS01'
      AND prod_price >= 10);

图片 17

归来的行中有4行价格低于10美元,显明再次来到的行未按预期的展开过滤。为啥会这么吧?原因在于求值的逐条。SQL在处理O牧马人操作符前,优先处理AND操作符。

当SQL看到上述WHERE子句时,它掌握为:由供应商B逍客S01创制的标价为10美金以上的持有成品,以及由供应商DLL01成立的有所产品,而不管其价格怎么着。换句话说,由于AND在求值进程中先期级更高,操作符被错误地组合了。

动用圆括号对操作符进行掌握分组。

SELECT prod_name, prod_price 
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
      AND prod_price >= 10;

那条SELECT语句与前一条的唯一差异是,将前多少个原则用圆括号括了四起。因为圆括号具备比AND或OPAJERO操作符更高的求值顺序,所以DBMS首先过滤圆括号内的OTiguan条件。那时,SQL语句变成了选取由供应商DLL01或BSportageS01创造的且价格在10英镑及以上的保有成品,那多亏大家期望的结果。

图片 18

建议:其它时候利用具有AND和OPRADO操作符的WHERE子句,都应有使用圆括号显明地分组操作符。


3.2  按多少个列排序

2.2 IN操作符

IN操作符用来钦定条件限制,范围中的每一种条件都能够拓展匹配。IN取一组由逗号分隔、括在圆括号中的合法值。

探寻由供应商DLL01和B奥迪Q3S01创建的持有成品。

下边先利用IN操作符:

SELECT prod_name, prod_price 
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;

上面选拔O酷威操作符:

SELECT prod_name, prod_price 
FROM Products
WHERE vend_id = 'DLL01' OR vend_id ='BRS01'
ORDER BY prod_name;

图片 19

图片 20

由上得以看到IN操作符完毕了与O福特Explorer相同的成效。

怎么要动用IN操作符?其亮点如下:

  1. 在有许多法定选项时,IN操作符的语法更领悟,更直观。
  2. 在与别的AND和O奥迪Q7操作符组合使用IN时,求值顺序更易于管理。
  3. IN操作符一般比一组O大切诺基操作符执行得更快(在上头那些合法选项很少的例证中,你看不出来质量差距)。
  4. IN的最大亮点是足以蕴含别的SELECT语句,可以更动态地树立WHERE子句。

要按三个列排序,不难钦命列名,列名之间用逗号分开即可

2.3 NOT操作符

NOT操作符有且只有二个效果,那正是或不是认其后所跟的其它条件。因为NOT从不单独行使(它连接与其余操作符一起行使),所以它的语法与其他操作符有所区别。

NOT关键字能够用在要过滤的列前,而不光是在其后。

列出除DLL01之外的享有供应商成立的产品。

SELECT prod_name 
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;

也可用<>操作符来成功。

SELECT prod_name 
FROM Products
WHERE vend_id <> 'DLL01'
ORDER BY prod_name;

图片 21

图片 22

为啥使用NOT?

对于那里的那种简单的WHERE子句,使用NOT确实尚未什么优势,但在更扑朔迷离的子句中,NOT是十三分实惠的。例如,在与IN操作符联合利用时,NOT能够十一分简单地找出与标准列表不般配的行。


输入:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
输出:
prod_id     prod_price     prod_name
-------     ----------     --------------------
BNBG02      3.4900         Bird bean bag toy
BNBG01      3.4900         Fish bean bag toy
BNBG03      3.4900         Rabbit bean bag toy
RGAN01      4.9900         Raggedy Ann
BR01        5.9900         8 inch teddy bear
BR02        8.9900         12 inch teddy bear
RYL01       9.4900         King doll
RYL02       9.4900         Queen doll
BR03        11.9900        18 inch teddy bear

3 用通配符实行过滤(LIKE、%、_、[])

重庆大学的是知道在按五个列排序时,排序的逐一完全按规定进行。换句话说,对于上述例子中的输出,仅在四个行兼备同等的prod_price值时才对成品按prod_name进行排序。假如prod_price列中保有的值都以唯一的,则不会按prod_name排序。

3.1 LIKE操作符

怎么搜索产品名中带有文本bean
bag的保有成品?用简易的比较操作符肯定不行,必须选拔通配符。

接纳通配符,能够成立相比较一定数据的物色形式。在那些事例中,假诺您想找著名称包含bean
bag的有着成品,能够组织七个通配符搜索格局,找出在产品名的任何职分出现bean
bag的产品。

通配符(wildcard):用来匹配值的一有的的特殊字符。

搜寻方式(search pattern):由字面值、通配符或双边结合构成的检索条件。

通配符本身其实是SQL的WHERE子句中有破例意义的字符,SQL帮助二种通配符。为在搜索子句中应用通配符,必须利用LIKE操作符。

通配符搜索只好用于文书字段(字符串),非文本数据类型字段不能够动用通配符搜索。

 

3.1.1 百分号(%)通配符

在查找串中,%表示别的字符出现任意次数。

找到全数以词Fish初步的制品。

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE 'Fish%';

通配符可在搜索方式中的任何岗位选用,并且能够动用多个通配符。

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE '%bean bag%';

找出以F早先、以y结尾的富有成品。

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE 'F%y';

简单的消除办法是给寻找形式再扩充2个%号:’F%y’还匹配y之后的字符(或空格),更好的章程化解办法是用函数去掉空格。

通配符%看起来像是能够包容任何事物,但有个差异,那正是NULL。子句WHERE
prod_name LIKE ‘%’不会合作产品名称为NULL的行。

图片 23

图片 24

图片 25


3.3     按列地方排序

3.1.2 下划线(_)通配符

_只匹配单个字符,而不是多个字符。

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE '__ inch teddy bear';

SELECT prod_id, prod_name 
FROM Products
WHERE prod_name LIKE '% inch teddy bear';

图片 26

图片 27


上面二种意况都是根据列名进行排序,OCR-VDEQX56 BY 还帮衬按相对列地方举行排序;

3.1.3 方括号([])通配符

方括号([])通配符用来钦命2个字符集,它必须同盟钦命地方(通配符的岗位)的一个字符。

此询问只帮助Access和SQL Server,不协理MySQL数据库。

找出装出名字以J或M开头的联络员。

SELECT cust_contact 
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;

出口结果为:

Jim Jones
John Smith
Michelle Green

例子:

3.2 使用通配符的技艺

  1. 并非过分使用通配符。假若别的操作符能达到同等的目标,应该接纳其余操作符。
  2. 在真正必要选用通配符时,尽量不要把它们用在寻找形式的伊始处。把通配符置于初阶处,搜素起来是最慢的。
  3. 细心留意通配符的职位。若是放错地点,大概不会回来想要的数码。

假若你发现文中有不领悟或许有题指标地点,请在凡间评论区留言,小编会依照你的评论和介绍,更新文中相关内容,多谢!

输入:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
输出:
prod_id     prod_price     prod_name
-------     ----------     --------------------
BNBG02      3.4900         Bird bean bag toy
BNBG01      3.4900         Fish bean bag toy
BNBG03      3.4900         Rabbit bean bag toy
RGAN01      4.9900         Raggedy Ann
BR01        5.9900         8 inch teddy bear
BR02        8.9900         12 inch teddy bear
RYL01       9.4900         King doll
RYL02       9.4900         Queen doll
BR03        11.9900        18 inch teddy bear

分析:

O索罗德DE奥迪Q7 BY 2表示按SELECT清单中的第一个列prod_name举行排序。OSportageDE奥迪Q3 BY
2,3象征先按prod_price,再按prod_name举办排序。

 

3.4   内定排序方向

数量排序不幸免升序排序(从A到Z),那只是私下认可的排序依次。还足以行使O福特ExplorerDER
BY子句举办降序(从Z到A)排序。为了进行降序排序,必须内定DESC关键字。

上边包车型大巴事例以价格降序来排序产品(最贵的排在最前方):

输入
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
输出:
prod_id     prod_price     prod_name
-------     ----------     --------------------
BR03        11.9900        18 inch teddy bear
RYL01       9.4900         King doll
RYL02       9.4900         Queen doll
BR02        8.9900         12 inch teddy bear
BR01        5.9900         8 inch teddy bear
RGAN01      4.9900         Raggedy Ann
BNBG01      3.4900         Fish bean bag toy
BNBG02      3.4900         Bird bean bag toy
BNBG03      3.4900         Rabbit bean bag to

 

借使打算用三个列排序,该怎么做?上边包车型客车例证以降序排序产品(最贵的在最前方),再拉长产品名:

输入:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
输出:
prod_id     prod_price     prod_name
-------     ----------     --------------------
BR03        11.9900        18 inch teddy bear
RYL01       9.4900         King doll
RYL02       9.4900         Queen doll
BR02        8.9900         12 inch teddy bear
BR01        5.9900         8 inch teddy bear
RGAN01      4.9900         Raggedy Ann
BNBG02      3.4900         Bird bean bag toy
BNBG01      3.4900         Fish bean bag toy
BNBG03      3.4900         Rabbit bean bag to

分析▼

DESC关键字只使用到一向放在其近日的列名。在上例中,只对prod_price列指定DESC,对prod_name列不点名。因而,prod_price列以降序排序,而prod_name列(在各样价位内)如故按标准的升序排序。

瞩目:在几个列上降序排序,假如想在五个列上举行降序排序,必须对每一列钦点DESC关键字。

 

第五课:过滤数据

4.1 where 字句

只检索所需数据需要内定搜索条件(search
criteria),搜索条件也称为过滤条件

在SELECT语句中,数据依据WHERE子句中钦定的探寻条件举办过滤。WHERE子句在表名(FROM子句)之后给出,如下所示:

输入:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
输出:
prod_name               prod_price
-------------------     ----------
Fish bean bag toy       3.49
Bird bean bag toy       3.49
Rabbit bean bag toy     3.49

分析:

那条语句从products表中搜寻三个列,但不回来全部行,只回去prod_price值为3.49的行;

注意:WHERE子句的职位

在同时采纳OCRUISERDECRUISER BY和WHERE子句时,应该让OMuranoDER
BY位于WHERE从此,不然将会发出错误

4.1 where 字句操作符

表4-1 WHERE子句操作符

图片 28.png)

单引号的应用

事例列出装有不是供应商DLL01制造的产品:

输入:
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01'
输出:
vend_id        prod_name
----------     ------------------
BRS01          8 inch teddy bear
BRS01          12 inch teddy bear
BRS01          18 inch teddy bear
FNG01          King doll
FNG01          Queen doll

注意:

几时使用引号;单引号用来界定字符串。如若将值与字符串类型的列实行相比,就要求限制引号。用来与数值列举行比较的值不用引号。

4.2 范围检查

能够选拔BETWEEN操作符,BETWEEN操作符可用来搜寻价格在5美元和10法郎之间的有着成品,或在钦定的初阶日期和终结日期之间的装有日期。

下边包车型大巴例证表明什么行使BETWEEN操作符,它寻找价格在5英镑和10英镑之间的享有产品:

输入:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
输出:
prod_name               prod_price
-------------------     ----------
8 inch teddy bear       5.99
12 inch teddy bear      8.99
King doll               9.49
Queen doll              9.49

分析:

从那几个事例可以看来,在行使BETWEEN时,必须钦定四个值——所需范围的低端值和高端值。那八个值必须用AND关键字分隔。BETWEEN匹配范围中兼有的值,包括钦命的开端值和结束值。

 

 

第4课:高级过滤数据(AND,ORubicon)

这一课教学如何构成WHERE子句以树立功效更强、更尖端的寻找条件。我们还将学习怎么行使NOT和IN操作符。

行使逻辑操作符来统一或变更where字句中的句子,使得条件越来越高档;

5.1.1     AND操作符

输入:
SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
输出:
prod_id     prod_price     prod_name
-------     ----------     --------------------
BNBG02      3.4900         Bird bean bag toy
BNBG01      3.4900         Fish bean bag toy
BNBG03      3.4900         Rabbit bean bag toy

分析:

此SQL语句检索由供应商DLL01成立且价格低于等于4英镑的持有成品的名目和价格。那条SELECT语句中的WHERE子句包蕴五个标准,用AND关键字联结在联合署名。

其一例子只含有3个AND子句,由此最多有三个过滤条件。能够扩张八个过滤条件,各类条件间都要运用AND关键字。

 

5.1.2    OR操作符

OTiguan操作符与AND操作符正好相反,它提醒DBMS检索匹配任一条件的行。事实上,许多DBMS在O兰德酷路泽WHERE子句的率先个标准得到满意的情形下,就不再计算第四个规范了(在首先个条件满意时,不管第二个条件是还是不是满意,相应的行都将被寻找出来)。

输入:
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’;
输出:
prod_name               prod_price
-------------------     ----------
Fish bean bag toy       3.4900
Bird bean bag toy       3.4900
Rabbit bean bag toy     3.4900
8 inch teddy bear       5.9900
12 inch teddy bear      8.9900
18 inch teddy bear      11.990

5.1.3   求值顺序

AND  O酷路泽 优先级难点

设若须要列出价格为10法郎及以上,且由DLL01或BTiguanS01制造的拥有产品。下边的SELECT语句使用组合的AND和OHaval操作符建立了三个WHERE子句:

输入:
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’
AND prod_price >= 10;
输出:
prod_name               prod_price
-------------------     ----------
Fish bean bag toy       3.4900
Bird bean bag toy       3.4900
Rabbit bean bag toy     3.4900
18 inch teddy bear      11.9900
Raggedy Ann             4.9900

分析:

请看下面的结果。再次回到的行中有4行价格小于10日元,鲜明,重返的行未按预想的进展过滤。为何会如此啊?原因在于求值的逐一。SQL(像多数语言同样)在处理O揽胜极光操作符前,优先处理AND操作符。当SQL看到上述WHERE子句时,它掌握为:由供应商BPRADOS01创设的价位为10卢比以上的享有产品,以及由供应商DLL01成立的富有成品,而不管其标价怎么。换句话说,由于AND在求值进程中先期级更高,操作符被破绽百出地结合了。

搞定方法只需在改成 WHERE (vend_id = ‘DLL01’ OR vend_id = ‘BRS01’)  
AND   prod_price >=10

累加了四个优先级更高的 小括号就可以了;

 

5.2     IN操作符

IN操作符用来钦点条件限制,范围中的每一种条件都能够开始展览匹配。IN取一组由逗号分隔、括在圆括号中的合法值。下边包车型客车例证表达了这一个操作符:

输入:
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;
输出:
prod_name               prod_price
-------------------     ----------
12 inch teddy bear      8.9900
18 inch teddy bear      11.9900
8 inch teddy bear       5.9900
Bird bean bag toy       3.4900
Fish bean bag toy       3.4900
Rabbit bean bag toy     3.4900
Raggedy Ann             4.9900

分析:

此SELECT语句检索由供应商DLL01和B安德拉S01创设的享有产品。IN操作符后跟由逗号分隔的官方值,那么些值必须括在圆括号中。实际上IN操作符完结了与O牧马人相同的成效。

怎么要动用IN操作符?其独到之处为:

  • 在有无数法定选项时,IN操作符的语法更掌握,更直观。
  • 在与其余AND和O卡宴操作符组合使用IN时,求值顺序更便于管理。
  • IN操作符一般比一组O揽胜操作符执行得更快
  • IN的最大亮点是足以蕴含别的SELECT语句,能够更动态地创建WHERE子句

 

5.2     NOT操作符

WHERE子句中的NOT操作符有且只有三个职能,那正是还是不是认其后所跟的其余条件。因为NOT从不单独选用(它连接与任何操作符一起行使),所以它的语法与别的操作符有所差异。NOT关键字能够用在要过滤的列前,而不仅仅是在其后。

为了列出除DLL01之外的具有供应商创建的制品,可编写制定如下的代码:

输入:
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;
输出:
prod_name
------------------
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
King doll
Queen dol

分析:

NOT
仿佛也足以用<>替代,的确在上面的事例中是足以。但在更复杂的子句中,NOT是不行实惠的。例如,在与IN操作符联合利用时,NOT能够万分简单地找出与标准列表不般配的行。

相关文章