1、使用WHERE子句

数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件。

SELECT *
FROM demo
WHERE gender = '0'

分析:这条语句以gender列等于0作为过滤条件,只有gender等于0时,数据才会被检索出来。

2、WHERE子句操作符

操作符

说明

=

等于

<>

不等于

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN

在指定的两个值之间

注意:如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。

SELECT *
FROM demo
WHERE id = 0

3、空值检查

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

SELECT *
FROM demo
WHERE nickname IS NULL

分析:词条语句会返回nickname列为NULL的行。相反,如果需要返回不为NULL的行,可以使用IS NOT NULL,具体可以自行测试。

4、组合WHERE子句

前面介绍的所有WHERE子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。

4.1 AND操作符
SELECT *
FROM demo
WHERE gender = '0' AND id > 4

分析:这条sql表示查询出gender列为0并且id大于4的行。AND需要两边条件都满足才能被返回。

4.2 OR操作符
SELECT *
FROM demo
WHERE gender = '0' or id < 4

分析:这条sql表示查询出gender列为0或者id小于4的行。OR只需要满足任意一边的条件即可被返回。需要注意的是,如果WHERE子句中有AND,也有OR组合在一起时,AND在计算次序中优先级更高。

5、IN操作符

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

SELECT *
FROM demo
WHERE id IN (1,2,3)

分析:此条sql会查询出id为1、2、3的行。

6、NOT操作符

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

SELECT *
FROM demo
WHERE id  NOT IN (1,2,3)

分析:此条sql与上面那条sql相反,它会查询出id不为1、2、3的行。