数据库中包含大量的数据,很多时候需要根据需求获取指定的数据,或者对查询的数据重新进行排列组合,这时就要在 SELECT 语句中指定查询条件对查询结果进行过滤。
在 SELECT 语句中,最常见的是使用 WHERE 子句指定查询条件对数据进行过滤其语法格式如下:
SELECT 字段名 1,字段名 2,…
FROM 表名
WHERE 条件表达式
在上面的语法格式中,“条件表达式” 是指 SELECT 语句的查询条件。在 MySQL 中,提供了一系列的关系运算符,在 WHERE 子句中可以使用关系运算符连接操作数作为查询条件对数据进行过滤,常见的关系运算符如下表所示。
关系运算符 | 说明 |
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于等于 |
<= | 大于 |
> | 大于等于 |
>= | 小于 |
表中的关系运算符读者都比较熟悉,需要说明的是“ < > ”运算符和 “ != ” 等价都表示不等于。接下来以表中的 “ = ”、“>” 关系运算符为例,将它们作为查询条件对数据进行过滤。
例如,查询 student 表中 id 为 4 的学生姓名,SQL语句如下所示:
mysql> SELECT id,name FROM student WHERE id=4;
在 SELECT 语句中使用 “ - ” 运算符获取 id 值为 4 的数据,执行 SELECT 语句,结果如下所示:
mysql> SELECT id,name FROM student WHERE id=4;
+----+------------+
| id | name |
+----+------------+
| 4 | husanniang |
+----+------------+
1 row in set (0.06 sec)
从查询结果可以看到,id 为 4 的学生姓名为“husanniang”,其他均不满足查询条件。
例如,使用 SELECT 语句查询 name 为 “wusong” 的学生性别,执行结果如下所示:
mysql> SELECT name,gender FROM student WHERE name='wusong';
+--------+--------+
| name | gender |
+--------+--------+
| wusong | 男 |
+--------+--------+
1 row in set (0.00 sec)
从查询结果可以看到,姓名为 “wusong” 的记录只有一条,,其性别为“男”。
例如,查询 student 表中 grade 大于 80 的学生姓名,SQL语句如下所示:
mysql> SELECT name,grade FROM student WHERE grade>80;
在 SELECT 语句中使用 > 运算符获取 grade 值大于 80 的数据,执行 SELECT 语句,结果如下所示:
mysql> SELECT name,grade FROM student WHERE grade>80;
+------------+-------+
| name | grade |
+------------+-------+
| wuyong | 100 |
| ginming | 90 |
| husanniang | 88 |
| wusong | 86 |
| linchong | 92 |
| yanging | 90 |
+------------+-------+
6 rows in set (0.00 sec)
从查询结果可以看到,,所有记录的 grade 字段值均大于 80,而小于或等于 80 的记不会被显示。
通过以上三个实例可以看出,在查询条件中,如果字段的类型为整型,直接书写内容,如果字段类型为字符串,需要在字符串上使用单引号,例如“wusong”。