MySQL讲义第21讲——select 查询之查询条件

编程入门 行业动态 更新时间:2024-10-09 04:17:11

MySQL<a href=https://www.elefans.com/category/jswz/34/1760533.html style=讲义第21讲——select 查询之查询条件"/>

MySQL讲义第21讲——select 查询之查询条件

MySQL讲义第21讲——select 查询之查询条件

文章目录

  • MySQL讲义第21讲——select 查询之查询条件
    • 一、比较运算符和逻辑运算符
        • 1、比较运算符
        • 2、逻辑运算符
    • 二、WHERE 子句的一般用法
        • 1、查询身高超过 170 的学生的信息
        • 2、查询 2000 年 1 月 1 日以后出生的员工信息
    • 三、逻辑运算符的用法
        • 1、查询 2000 年出生的学生信息
        • 2、查询系编号为 D01 和 D02 的学生信息
        • 3、查询系编号为 D01 和 D02 的男生信息
    • 四、BETWEEN … AND 的用法
        • 1、查找 2000 年出生的学生信息。
        • 2、查找身高在 170 和 180 之间的学生信息
        • 3、查找身高不在 170 和 180 之间的学生信息
    • 五、IN 的用法
        • 1、查询系编号为 D01 和 D02 的学生信息
        • 2、查询系编号不是 D01 和 D02 的学生信息
        • 3、查询身高为 170、175 和 180 的学生的信息
    • 六、使用 IS NULL 查询空值
        • 1、查询 phone 为空值的学生信息
        • 2、查询 phone 不为空值的学生信息

在 MySQL 中,如果需要从数据表中查询满足某个条件的数据,可以使用 WHERE 关键字来指定查询条件。

一、比较运算符和逻辑运算符

可以使用比较运算符和逻辑运算符构造查询的条件。

1、比较运算符

比较运算符可以对两个数据的值进行比较,常用的比较运算符如下:

比较运算符描述
=等于
<> 或 !=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN … AND在某个范围内
IN在某个集合内
IS NULL为空值
LIKE搜索某种模式
2、逻辑运算符

逻辑运算符包括 NOT、AND 和 OR,是对多个查询条件进行运算,用于构造复杂的查询条件。用法如下:

逻辑运算符描述
NOT 条件1对条件1求反,如果条件1为真,结果为假;如果条件1为假,则结果为真。
条件1 AND 条件2如果条件1和条件2都为真,结果为真。
条件1 OR 条件2条件1和条件2有一个为真,结果为真。

二、WHERE 子句的一般用法

使用等于(=)、大于(>)、小于(<)、大于或等于(>=)、小于或等于(<=)、不等于(!= 或 <>)构造条件。例如:

1、查询身高超过 170 的学生的信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> height >= 170;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
7 rows in set (0.02 sec)
2、查询 2000 年 1 月 1 日以后出生的员工信息
mysql> SELECT-> *-> FROM -> stu-> WHERE-> birth >= '2000-1-1';
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801202 | 赵牡丹    | 女     | 2001-08-10 00:00:00 |  160.0 | 15937320666 | D03     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
8 rows in set (0.00 sec)

三、逻辑运算符的用法

1、查询 2000 年出生的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> birth >= '2000-1-1' AND birth <= '2000-12-31';
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
4 rows in set (0.00 sec)
2、查询系编号为 D01 和 D02 的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> dept_id = 'D01' OR dept_id = 'D02';
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801104 | 宋丹风    | 女     | 1999-11-20 00:00:00 |  165.0 | 15937320444 | D02     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
8 rows in set (0.00 sec)
3、查询系编号为 D01 和 D02 的男生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> (dept_id = 'D01' OR dept_id = 'D02') AND gender = '男';
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
5 rows in set (0.00 sec)
--说明:注意条件中的括号。这是因为 AND 运算的优先级高于 OR,因此需要使用括号。

四、BETWEEN … AND 的用法

BETWEEN … AND 用来限定查找的信息在两个值(一个表示最小值,一个表示最大值)之间。例如:

1、查找 2000 年出生的学生信息。
mysql> SELECT-> *-> FROM-> stu-> WHERE-> birth BETWEEN '2000-1-1' AND '2000-12-31';
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
4 rows in set (0.00 sec)
2、查找身高在 170 和 180 之间的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> height BETWEEN 170 AND 180;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
7 rows in set (0.00 sec)
3、查找身高不在 170 和 180 之间的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> height NOT BETWEEN 170 AND 180;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801104 | 宋丹风    | 女     | 1999-11-20 00:00:00 |  165.0 | 15937320444 | D02     |
| 201801201 | 王艳艳    | 女     | 1999-09-30 00:00:00 |  162.0 | 15937320888 | D03     |
| 201801202 | 赵牡丹    | 女     | 2001-08-10 00:00:00 |  160.0 | 15937320666 | D03     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
4 rows in set (0.00 sec)

五、IN 的用法

使用 IN 可以代替逻辑表达式 OR,表示某个字段的取值在一个集合内。例如:

1、查询系编号为 D01 和 D02 的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> dept_id IN ('D01','D02');
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801104 | 宋丹风    | 女     | 1999-11-20 00:00:00 |  165.0 | 15937320444 | D02     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | 15937320654 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
8 rows in set (0.01 sec)
2、查询系编号不是 D01 和 D02 的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> dept_id NOT IN ('D01','D02');
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801201 | 王艳艳    | 女     | 1999-09-30 00:00:00 |  162.0 | 15937320888 | D03     |
| 201801202 | 赵牡丹    | 女     | 2001-08-10 00:00:00 |  160.0 | 15937320666 | D03     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
3 rows in set (0.00 sec)
3、查询身高为 170、175 和 180 的学生的信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> height IN (175,170,180);
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
2 rows in set (0.00 sec)

六、使用 IS NULL 查询空值

查询某个字段为空值的记录不能使用等号(=),需要使用 IS NULL。例如:

1、查询 phone 为空值的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> phone IS NULL;
+-----------+-----------+--------+---------------------+--------+-------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone | dept_id |
+-----------+-----------+--------+---------------------+--------+-------+---------+
| 201801201 | 王艳艳    | 女     | 1999-09-30 00:00:00 |  162.0 | NULL  | D03     |
| 201901005 | 刘鹏      | 男     | 2001-12-18 00:00:00 |  176.0 | NULL  | D01     |
+-----------+-----------+--------+---------------------+--------+-------+---------+
2 rows in set (0.00 sec)
2、查询 phone 不为空值的学生信息
mysql> SELECT-> *-> FROM-> stu-> WHERE-> phone IS NOT NULL;
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| stu_id    | stu_name  | gender | birth               | height | phone       | dept_id |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
| 201801101 | 王占峰    | 男     | 1999-12-30 00:00:00 |  177.0 | 15937320987 | D02     |
| 201801102 | 刘国量    | 男     | 2000-08-14 00:00:00 |  174.0 | 15937320789 | D02     |
| 201801103 | 巩莉      | 女     | 2000-06-18 00:00:00 |  170.0 | 15937320456 | D02     |
| 201801104 | 宋丹风    | 女     | 1999-11-20 00:00:00 |  165.0 | 15937320444 | D02     |
| 201801202 | 赵牡丹    | 女     | 2001-08-10 00:00:00 |  160.0 | 15937320666 | D03     |
| 201801203 | 王大强    | 男     | 2000-10-19 00:00:00 |  174.0 | 15937320555 | D03     |
| 201901002 | 王宏伟    | 男     | 2001-02-15 00:00:00 |  180.0 | 15937320255 | D01     |
| 201901003 | 张静静    | 女     | 2001-08-17 00:00:00 |  167.0 | 15937320123 | D01     |
| 201901004 | 李刚      | 男     | 2000-12-25 00:00:00 |  178.0 | 15937320321 | D01     |
+-----------+-----------+--------+---------------------+--------+-------------+---------+
9 rows in set (0.00 sec)

更多推荐

MySQL讲义第21讲——select 查询之查询条件

本文发布于:2024-02-13 08:47:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757931.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:讲义   条件   MySQL   select

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!