你的浏览器不支持canvas

Enjoy life!

数据库-SQL(三)过滤数据

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

  • 参考资料
    • 《MySQL必知必会(文字版)》

1、过滤数据

1.1 使用WHERE子句

  • 只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。
  • SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。
  • WHERE 子句在表名(FROM子句)之后给出。

sql

1.2 WHERE子句操作符

sql

1.3 不匹配检查

  • 操作符:!=<>

sql

sql

1.4 空值检查

  • 在创建表时,表设计人员可以指定其中的列是否可以不包含值。
  • 在一个列不包含值时,称其为包含空值 NULL
    • NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。
  • 特殊的 WHERE 子句:IS NULL子句,用来检查具有NULL值得列

sql

2、数据过滤

2.1 AND操作符

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

sql

2.2 OR 操作符

  • OR 操作符:指示 MySQL 检索匹配任一条件的行

sql

2.3 计算次序

  • WHERE 可包含任意数目的 ANDOR操作符。允许两者结合以进行复杂和高级的过滤。
  • SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。
  • 可使用圆括号明确地分组相应的操作符【因为圆括号具有较 ANDOR 操作符高的计算次序,DBMS首先过滤圆括号内的OR条件】

sql

2.4 IN操作符

  • 为什么要使用IN操作符?其优点具体如下。
    •  在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。
    •  在使用 IN 时,计算的次序更容易管理(因为使用的操作符更少)。
    •  IN操作符一般比 OR 操作符清单执行更快。
    • IN 的最大优点是可以包含其他 SELECT语句,使得能够更动态地建立WHERE子句。

sql

2.5 NOT 操作符

  • WHERE 子句中的 NOT 操作符有且只有一个功能,那就是否定它之后所跟的任何条件。
    • MySQL 支持使用 NOTINBETWEENEXISTS 子句取反

sql

3、用通配符进行过滤

3.1 LIKE操作符

  • 通配符(wildcard) 用来匹配值的一部分的特殊字符。
  • 搜索模式(search pattern)由字面值、通配符或两者组合构成的搜索条件。
  • LIKE 指示 MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。

3.2 百分号(%)通配符

  • 在搜索串中,% 表示任何字符出现任意次数。
  • %不可匹配NULL
  • 尾空格可能会干扰通配符匹配。
    • 例如,在保存词 anvil 时,如果它后面有一个或多个空格,则子句WHERE prod_name LIKE '%anvil'将不会匹配它们,因为在最后的l后有多余的字符。

  • jet%:检索任意以 jet 起头的词。
    • %告诉 MySQL 接受 jet 之后的任意字符,不管它有多少字符。】
  • &anvil%:表示匹配任何位置包含文本 anvil的值,而不论它之前或之后出现什么字符。

sql

3.3 下划线(_)通配符

  • 下划线只匹配单个字符而不是多个字符

sql


对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。