MySQL使用WHERE命令来限定数据查询条件。

语法:SELECT 属性1,属性2 FROM 表名 WHERE 条件1 OR 条件2 AND 条件3

说明:WHERE同样适用于UPDATE、DELETE等命令;

            使用OR、AND实现多限制条件下的数据查询;

where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个;

           使用主键作为查询的限定条件,速度是非常快的。

 

操作符说明表(A=10,B=20)

操作符

描述

示例说明

=

等号,检测两个值是否相等,若相等,则返回True

(A = B)返回False

<>,!=

不等于,检测两个值是否相等,若不相等,则返回True

(A != B)返回True

>

大于,检测左边的值是否大于右边的值,若左边的值大于右边的值,则返回True

(A > B)返回False

<

小于,检测左边的值是否小于右边的值,若左边的值小于右边的值,则返回True

(A < B)返回True

>=

不小于,检测左边的值是否不小于右边的值,若左边的值不小于右边的值,则返回True

(A >= B)返回False

<=

不大于,检测左边的值是否不大于右边的值,若左边的值不大于右边的值,则返回True

(A <= B)返回True

BETWEEN....AND....

介于指定范围之内

where num between 3 and 5

NOT BETWEEN...AND...

不在限定的范围内

where num not between 3 and 5

IN(项1,项2,项3...)

值在指定项内

where num in (3,5,6)

NOT IN(项1,项2,项3...)

值不在指定项内

where num not in (3,5,6)

IS NULL

空值判断符

where name is null

IS NOT NULL

非空值判断符

where name is not null

NOT、AND、OR

取反,与,或,优先级NOT>AND>OR,用于多个逻辑连接

where num>2 AND num<6

LIKE

搜索匹配,常与模式匹配符配合使用

——

NOT LIKE

LIKE的反义

——

%

模式匹配符,表示任意字符串

where username like '%user'

 

 

若A或B的值为字符型,需要加上" "或' '。

默认情况下,where语句是不区分字母大小写的,需要通过BINARY强制区分。

 

示例:

mysql> select num,name from courses where name=.'语文';
+-----+--------+
| num | name   |
+-----+--------+
|   2 | 语文 |
+-----+--------+

mysql> SELECT * from tutorials_tbl WHERE tutorial_author='Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
|           6 | JAVA Tutorial  | SANJAY          | 2007-05-26      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql> SELECT * from tutorials_tbl WHERE BINARY tutorial_author='Sanjay';   //强制区分大小写
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+

 mysql> select num,name from courses where num>2 AND num<5;
 +-----+--------+
 | num | name |
 +-----+--------+
 | 3 | 英语 |
 | 4 | 化学 |
 +-----+--------+
 2 rows in set (0.00 sec)

 

 mysql> select num,name from courses where NOT num>2;
 +-----+--------+
 | num | name |
 +-----+--------+
 | 1 | 数学 |
 | 2 | 语文 |
 +-----+--------+
 2 rows in set (0.00 sec)

 

 mysql> SELECT * FROM courses WHERE name LIKE '%文';
 +-----+--------+-----------------+
 | num | name | submission_date |
 +-----+--------+-----------------+
 | 2 | 语文 | 2018-01-30 |
 +-----+--------+-----------------+
 1 row in set (0.00 sec)