数据库入门:MySQL必知必会(七)数据过滤

七、数据过滤

    • 01. 组合WHERE子句
    • 02. IN操作符
    • 03. NOT操作符
    • 04.下一篇:[用通配符进行过滤](https://blog.csdn.net/qq_34114121/article/details/90711668)

组合WHERE子句以建立功能更强的更高级的搜索条件

01. 组合WHERE子句

为了进行更强的过滤控制,MySQL允许给出多个WHERE子句,这些子句可以两种方式使用:以AND子句的方式OR子句的方式使用。
操作符(operator): 用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符(logical operator)

  1. AND操作符: 为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加条件;
    AND输入
    1.1 此SQL语句检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格;
    数据库入门:MySQL必知必会(七)数据过滤_第1张图片
    1.2 这条SELECT语句中的WHERE子句包含两个条件,并且用AND关键字联结它们,AND指示DBMS 只返回满足所有给定条件的行
  2. OR操作符: OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行
    OR输入
    2.1 此SQL语句检索由任一个指定供应商制造的所有产品的产品名和价格;
    数据库入门:MySQL必知必会(七)数据过滤_第2张图片
    2.2 OR操作符告诉DBMS 匹配任一条件而不是同时匹配两个条件
  3. 计算次序: 由于AND在计算次序中优先级更高,需要使用圆括号明确地分组相应的操作符;
    3.1 假如需要列出价格为10美元(含)以上且由1002或1003制造的所有产品:
    数据库入门:MySQL必知必会(七)数据过滤_第3张图片
    3.2 返回的行中有两行价格小于10美元,显然,返回的行未按预期的进行过滤;
    3.3 SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符
    3.4 当SQL看到上述WHERE子句时,它理解为由供应商1003制造的任何价格为10美元(含)以上的产品或者由供应商1002制造的任何产品,而不管其价格如何
    3.5 此问题的解决方法是使用圆括号明确地分组相应的操作符:
    计算次序输入
    数据库入门:MySQL必知必会(七)数据过滤_第4张图片
    3.6 圆括号具有较AND或OR操作符高的计算次序,DBMS首先过滤圆括号内的OR条件;
    3.7 ,SQL语句变成了选择由供应商1002或1003制造的且价格都在10美元(含)以上的任何产品
    3.8 任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符

02. IN操作符

圆括号在WHERE子句中还有另外一种用法:IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取合法值的由逗号分隔的清单,全都括在圆括号中。

  1. 检索供应商1002和1003制造的所有产品:
    数据库入门:MySQL必知必会(七)数据过滤_第5张图片
  2. IN操作符完成与OR相同的功能:
    数据库入门:MySQL必知必会(七)数据过滤_第6张图片
  3. 为什么要使用IN操作符?其优点具体如下:
    3.1 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观
    3.2 在使用IN时,计算的次序更容易管理(因为使用的操作符更少);
    3.3 IN操作符一般比OR操作符清单执行更快
    3.4 IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。

03. NOT操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

  1. 列出除1002和1003之外的所有供应商制造的产品:
    数据库入门:MySQL必知必会(七)数据过滤_第7张图片
  2. NOT否定跟在它之后的条件,因此,MySQL不是匹配1002和1003 的vend_id,而是匹配1002 和1003 之外供应商的vend_id;
  3. 对于简单的WHERE子句,使用NOT确实没有什么优势,但在更复杂的子句中,NOT是非常有用的
  4. 与IN操作符联合使用时,NOT使找出与条件列表不匹配的行非常简单;
  5. MySQL支持使用NOT 对IN 、BETWEEN 和EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。

04.下一篇:用通配符进行过滤

你可能感兴趣的:(MySQL数据库,MySQL数据库学习)