where 子句中指定搜索条件,对检索数据进行过滤查询

1、过滤数据

命令: 

select 字段名 from  表名  where   条件;

select 字段名 from  表名  where   条件 order by 字段名;

注:在同时使用 order by 子句和 where 子句时,order by 子句应该位于 where 子句之后(先过滤出需要的数据,才能对数据进行排序)

MariaDB [test]> select * from t1  where  id> 2;
+----+------+------+
| id | name | sex  |
+----+------+------+
|  3 | er   | male |
|  4 | e    |      |
+----+------+------+
2 rows in set (0.00 sec)

2、条件操作符

=            等号
<>, !=       不等于
>            大于号
<            小于号
>=           大于等于号
<=           小于等于号        
and          与 
or           或

MySQL在执行匹配值时,默认不区分大小写,字符串的值要用单引号(' ' )括起来,数值不需要。

3、检查该列是否有 null 值

select 字段 from 表 where 字段  is  null;

4、组合 where 子句

(1) like 操作符

用于在where子句中搜索列中的指定内容,like 操作符通常和通配符配合使用

  • 百分号 (%)字符来表示任意个(多个)字符,类似于UNIX或正则表达式中的星号 *。如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
  • 下划线(_)字符表示单个字符,即在下划线出现的地方只能表示一个字符,它和百分号除了代表的字符数不同,其用法一致

注:like 子句后面的字符串需要使用单引号( ' ' )括起来。

MariaDB [test]> select * from t1 where name like 'e%';   //  查询name字段以 e 开头的所有行记录数据
+----+------+------+
| id | name | sex  |
+----+------+------+
|  3 | er   | male |
|  4 | e    |      |
+----+------+------+
2 rows in set (0.00 sec)

%的位置不同,表示的含义不同:

    %e     以e 结尾的所有字符串                                                _e

    e%    以e 开头的所有字符串                        e_

   %e%   含有e的所有字符串               _e_

  s%e     以s开头以e结尾                 s_e              

(2) and 和 or 操作符

           and 是与运算, or  是或运算

select name,price from products where id=100 and  price > 10;

select name,price from products where id=100 or  price > 10;

当and和or同时使用时,考虑优先级问题(and >  or),所以如果需要先计算or 运算时,要用圆括号()括起来 。

(3) in  操作符

 指定搜索范围,查询范围内的值,用圆括号()括起来

命令:  

select 字段 from 表 where 字段 in (值1,值2...);

例如:

select name, price from   products  where  id>=11 and  id=<13;

select name, price from   products  where  id=11 or id=12;

select name, price from   products  where  id in (11,12);

in 操作符与 or 操作符功能相同。

(4) not 操作符

否定它之后所跟的任何条件(否定后跟条件的关键字)

MariaDB [test]> select * from w1 where not id=0;
+------+--------+--------+
| id   | addr   | name   |
+------+--------+--------+
|    1 | 德州   | 扑克   |
|    2 | 德州   | 扑克   |
+------+--------+--------+
2 rows in set (0.01 sec)

MariaDB [test]> select * from w1 where  id not in(1,2);
+------+--------+--------+
| id   | addr   | name   |
+------+--------+--------+
|    0 | 德州   | 扑克   |
+------+--------+--------+
1 row in set (0.00 sec)

MariaDB [test]> select * from w1 where  not id  in(1,2);
+------+--------+--------+
| id   | addr   | name   |
+------+--------+--------+
|    0 | 德州   | 扑克   |
+------+--------+--------+
1 row in set (0.00 sec)