MySQL必知必会 读书笔记四:数据过滤

过滤数据

WHERE

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

SELECT col_1,col_2,col_3 FROM database WHERE col_1=xx;

SQL的SELECT语句为客户机应用检索出超过实际所需的数据,然后客户机代码对返回数据进行循环,以提取出需要的行。

WHERE子句操作符

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

其中<> 与!=是等价的,没什么区别

在使用BETWEEN时,必须指定两个值——所需范围的低端值和高端值。这两个值必须用AND关键字分隔。 BETWEEN匹配范围中所有的值,包括指定的开始值和结束值

空值检查

NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。

SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。

SELECT col_1,col_2,col_3 FROM database WHERE col_1 IS NULL;

数据过滤

为了进行更强的过滤控制, MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。

AND操作符

为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加
条件。

SELECT col_1,col_2,col_3 FROM database WHERE col_1=xx AND col_2=yy;

可以添加多个过滤条件,每添加一条就要使用一个AND。

OR操作符

OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行。

SELECT col_1,col_2,col_3 FROM database WHERE col_1=xx OR col_2=yy;

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。若要先进行OR,可以使用圆括号明确地分组相应的操作符。

使用圆括号能消除歧义。

IN操作符

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

SELECT col_1,col_2,col_3 FROM database WHERE col_1 IN (xx1,xx2);

IN操作符完成与OR相同的功能

使用IN操作符的优点:

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

NOT操作符

否定它之后所跟的任何条件

在与IN操作符联合使用时, NOT使找出与条件列表不匹配的行非常简单。

SELECT col_1,col_2,col_3 FROM database WHERE col_1 NOT IN (xx1,xx2);
posted @ 2019-03-31 23:51  LenCoder  阅读(248)  评论(0编辑  收藏  举报