6.MySQL必知必会之数据过滤-WHERE组合子句

数据过滤-WHERE组合子句

本章讲授如何组合WHERE子句以创建功能更强的更高级的搜索条件。 咱们还将学习如何使用NOT和IN操做符。学习

1.组合WHERE子句

上一章介绍的WHERE子句在过滤数据时使用的都是单一条件过滤。事实上为了数据的准确性咱们还可使用多个条件进行过滤,可使用AND子句或者OR子句的方式来完成。ui

📖 操做符(operator)spa

用来联结或改变WHERE子句中的子句的关键字。也称为逻辑运算符。3d

1.1 AND操做符

下面的这个例子是使用AND操做符来给WHERE子句附加条件。code

输入 :blog

SELECT  uid, week, minute 
FROM    products
WHERE  week = 1  AND  minute = 22

输出: image产品

分析:此SQL语句检索week为1而且minute为22数据。搜索

📖 AND 用在WHERE子句中的关键字,用来指示检索知足全部给定的条件的行。语法

上述例子中使用了只包含一个关键字AND的语句,把两个过滤条件组合在一块儿。==还能够添加多个过滤条件,每添加一条就要使用一个AND.==方法

1.2 OR操做符

OR操做符和AND操做符不一样,他指示MSQL检索匹配任一条件的行。 输入:

SELECT  uid, week, minute 
FROM    products
WHERE  week = 1  OR  minute = 22

分析:检索week为1或者minute为22的数据。知足一个条件便可。

1.3 计算次序

SQL在处理OR操做前优先处理AND操做符。 解决方法就是使用()

输入:

SELECR prod_name,pro_price
FROM producets
WHERE wend_id = 1002 OR vand_id = 1003 AND prod_price >= 10;

改为:

SELECR prod_name,pro_price
FROM producets
WHERE (wend_id = 1002 OR vand_id = 1003) AND prod_price >= 10;

分析:

这条SELECT 语句 与前条的惟一差异是,这条语句中,前两个条件用圆括号括起来。由于圆括号具备较AND或OR操做符高的计算次序,DBMS首先过滤圆括号内的OR条件。

在WHERE子句中使用圆括号

任什么时候候使用具备AND和OR操做符的WHERE语句,都应该使用过圆括号明确的分组操做操做符。不要过度依赖默认计算次序,即便它确实是你想要的东西也是如此

1.4 IN操做符

IN操做符用来指定条件范围,范围中的每一个条件均可以进行匹配。IN取合法值的由逗号分隔的清单,所有在圆括号中。

输入:

SELECT prod_name , prod_price
 FROM products
 WHERE vend_id IN (1002,1003)
 ORDER BY prod_name

输出:

image

分析:

此SELECT语句检索供应商1002和1003制造的全部产品。IN操做符后跟又逗号分隔的合法值清单,整个清单必须扩在圆括号内。

⭐️ IN操做符和OR功能相同,但IN操做符比OR操做符执行更快

OR写法:

SELECT prod_name , prod_price
 FROM products
 WHERE vend_id = 1002  OR vend_id =1003
 ORDER BY prod_name
IN操做符优势:
  1. 在使用长的合法选项清单的时,IN操做符的语法更清楚且更直观。

  2. 在使用 IN时,计算的次序更容易管理(由于使用的操做符更少)。

  3. IN 操做符通常比OR操做符清单执行更快。

  4. IN 的最大的优势是能够包含其余SEKECT语句,使的可以更动态的创建 WHERE 语句。

1.5 NOT操做符

NOT操做符有且只有一个功能,那就是否认它以后所跟的任何条件。

📖 NOT WHERE子句中用来否认后跟条件的关键字。

使用:

列出除1002和1003以外的全部供应商制造的产品。

输入:

SELECT prod_name , prod_price
FROM products
WHERE vend_id  NOT  IN  (1002,1003)
ORDER BY prod_name;

分析: 这里的NOT 否认跟在它以后的条件,所以,MySQL不是匹配1002和1003 的vendi_id,而是匹配 1002和1003 以外供应商的vend_id.

✏️ MySQL 中的NOT

MySQL支持使用 NOT 对 IN 、 BETWEEN 和 EXISTS 子句取反,这与多数其余DBMS容许使用NOT对各类条件取反有很大的差异。

小结

本章讲授如何用AND和OR操做符组合成WHERE子句,并且还讲授了如 何明确地管理计算的次序,如何使用IN和NOT操做符。

相关文章
相关标签/搜索