WHERE 子句用于提取那些满足指定条件的记录。
下面的运算符可以在 WHERE 子句中使用:
SELECT column_name1,column_name2 FROM table_name WHERE column_name operator value;
运算符 | 描述 |
= | 等于 |
<>或!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between and | 在某个范围内 |
LIKE | 模糊查询,匹配相似值 |
IN | 指定针对某个列的多个可能值 |
exists | 指定子查询以测试行的存在 |
and | 逻辑与 同时满足两个条件的值 |
or | 逻辑或 满足其中一个条件的值 |
not | 逻辑非 满足不包含该条件的值 |
is null | 空值判断 |
1、=/<>/>/=/<=运算符
=/<>/>/</>=/<= 运算符直接用于值得比较。这些值可以是数值、文本或者日期。以下是 =/<>/>/</>=/<= 运算符的语法:
select * from Person where name = 'Mike';//查询 name 为 MIke 的列
select * from Person where name != 'Mike';//查询 name 不为 MIke 的列
select * from Person where ID > 15;//查询 ID 大于 15 的列
select * from Person where ID < 15;//查询 ID 小于 15 的列
select * from Person where ID >= 15;//查询 ID 大于等于 15 的列
select * from Person where ID <= 15;//查询 ID 小于等于 15 的列
2、between and
between and操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。以下是 between and 运算符的语法:
select * from Person where ID between 15 and 20;//查询 ID 在15和20之间的列
注意between包含边界问题:
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。(SQL Server/)
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段
3、Like
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,一般与通配符相搭配。以下是 Like 运算符的语法:
select * from Person where name like 'Pe%';//查询 name 以 Pe 开头的列
4、IN
IN 操作符允许您在 WHERE 子句中规定多个值。以下是 IN 运算符的语法:
select * from Person where name in ('Peter' ,'Bob');//查询 name 为 Peter 或 Bob 的列
IN 与 = 的异同:
相同点:在WHERE中使用作为筛选条件之一、均是等于的含义,单个值时等同于 = 操作;
不同点:IN可以规定多个值,等于规定一个值;
转换:IN相当于多个=执行逻辑或运算;
6、exists
EXISTS运算符用于指定子查询以测试行的存在。 以下是 EXISTS 运算符的语法:
select * from Person where EXISTS (select * from Person where name='Peter');//查询 name 为 Peter 或 Bob 的列
in 与 exists 区别:
1、exists 强调的是是否返回结果集,exists引导的子句有结果集返回,那么exists这个条件就算成立了;
2、in引导的子句只能返回一个字段,而exists可以返回任意数量字段
7、and
and 运算符,逻辑与,用于同时满足两个及两个以上条件的记录进行筛选。 以下是 and 运算符的语法:
select * from Person where name='Mike' and ID > 15 and ID<30;//查找 name 为 Mike 且 ID 大于15小于30 的记录
8、or
or 运算符,逻辑或,用于满足一个或一个以上条件的记录进行筛选。 以下是 or 运算符的语法:
select * from Person where name='Mike' or ID = 15;//查找 name 为 Mike 或 ID 为 15 的记录
9、 is null
IS NULL 操作符用来判断值是否为NULL值。以下是 is null 运算符的语法:
select * from Person where address is null;//查找 address 为空的记录
10、not
not 操作符用于否定它之后所跟的任何条件。可以使用 NOT 操作符对 IN、BETWEEN、EXISTS子句进行取反。
select * from Person where address is not null;//查找 address 不为空的记录
select * from Person where name not in ('jack','Mike');