MySQL:数据查询-where

在 MySQL 中,条件查询是用于从数据库中选择特定数据的核心功能。通过条件查询,您可以根据特定条件筛选出符合要求的记录。以下是对 MySQL 中条件查询的详细介绍。

一、基本概念

条件查询基本上通过 `SELECT` 语句与 `WHERE` 子句结合使用,以获取满足特定条件的记录。其基本语法如下:

SELECT

        列名

FROM

        表名

WHERE

        条件;

二、常见的条件查询

下面是 MySQL 条件查询中的一些常用操作和示例:

1.关系查询

1. 1 等于和不等于

等于 (`=`):用于查找与某个值相等的记录。

案例:查询eployees表编号eployees_id为3的数据。

select *
from
    employees
where
    employees.employee_id = 3;

不等于 (`!=` 或 `<>`):用于查找与某个值不相等的记录。

案例:查询products表产品状态不是'out_of_stock’的数据

select *
from
    products
where
    products.status <> 'out_of_stock';
1.2 比较操作符

MySQL 提供多种比较操作符来进行数值比较:

大于 (`>`)

案例:查询员工薪资大于55000的员工数据。

select *
from
    employees
where
    employees.salary > 50000;

小于 (`<`)

案例:查询员工薪资小于50000的员工数据。

select *
from
    employees
where
    employees.salary < 55000;

大于等于 (`>=`) 和 小于等于 (`<=`)

案例:查询员工薪资大于等于55000的员工数据。

select *
from
    employees
where
    employees.salary >= 55000;

案例:查询员工薪资小于等于55000的员工数据。

select *
from
    employees
where
    employees.salary <= 55000;

2. 逻辑查询

        条件查询中可以使用逻辑操作符组合多个条件:

2.1 AND

        所有条件必须都满足

案例:查询员工中经理级别的且薪资高于100000的员工数据

select *
from
    employees
where
    employees.salary <= 100000 and employees.manager_id is null ;
2.2 OR

        至少一个条件满足。

案例:查询技术部和市场部的员工数据

select *
from
    employees
where
     employees.department_id = 2
  or employees.department_id = 3;
2.3 NOT

        反转条件。

案例:查询客户表customers状态status不是active的客户数据。

select *
from
    customers
where
    not customers.status = 'active';

3. 模糊查询

模糊查询是在数据库查询中用来匹配部分字符串的一种方法,通常使用 `LIKE` 操作符。在 MySQL 中,模糊查询非常有用,尤其是在处理不确定或不完全信息时,比如在用户输入部分信息的情况下。

3.1 使用 `LIKE` 进行模糊查询

模糊查询主要通过 `LIKE` 关键字实现,其基本语法如下:

SELECT

        列名

FROM

        表名

WHERE

        列名 LIKE '匹配模式';

3.2. 通配符

在使用 `LIKE` 进行模糊查询时,可以使用两种常用的通配符:

        百分号 `%`:代表零个或多个字符。例如:
                `LIKE 'abc%'`:匹配以 "abc" 开头的任何字符串,如 "abc", "abcd", "abcdefgh"。
                `LIKE '%xyz'`:匹配以 "xyz" 结尾的任何字符串,如 "xyz", "123xyz", "abcxyz"。
                `LIKE '%abc%'`:匹配包含 "abc" 的任何字符串,如 "123abc456", "abcdefg"。

        下划线 `_`:代表一个单一字符。例如:
                `LIKE 'a_c'`:匹配 "a" 和 "c" 之间有一个字符的字符串,如 "abc", "a1c",但不匹配 "ac"。
                 `LIKE '____'`:匹配任意四个字符的字符串。

3. 3 示例

        案例1:查询邮箱包含为"g"的员工数据。

select *
from
    employees
where
    employees.email like '%g%';

案例2:查询employees表中姓黄的员工数据:

select *
from
    employees
where
    employees.name like '黄%';

案例3:查询employees中邮箱第三个字符是 "u" 的员工数据

select *
from
    employees
where
    employees.email like '__u%';
3.4.注意事项

        大小写敏感性:在 MySQL 的不同字符集和排序规则下,模糊查询的大小写敏感性可能不同。在大多数默认情况下,它是大小写不敏感的,但在某些情况下(如使用 `BINARY` 或特定的排序规则时),可能会是大小写敏感的。

        性能问题:模糊查询,尤其是使用前导百分号(`%...`)的查询,可能会导致性能下降。这是因为数据库无法使用索引来优化此查询,因此查询时间可能较长。

4.区间查询

使用 `BETWEEN` 语句查找在特定范围内的值:

        案例:查询employees表中薪资在60000到90000之间的员工数据。

select *
from
    employees
where
    employees.salary between 60000 and 90000;

二、复杂查询

1 .子查询

在 `WHERE` 子句中嵌套另一个查询,以实现更复杂的条件判断:

案例:查询employees表中大于平均工资工资的员工信息。

select *
from
    employees
where
    employees.salary < (select avg(employees.salary) from employees)

2. 使用 `IN` 操作符

`IN` 操作符可以用于指定多个可能的匹配值:

案例:查询employees表中编号为2,4,6的员工信息。

select *
from
    employees where employees.employee_id in(2,4,6);

3.检查 NULL 值

使用 `IS NULL` 和 `IS NOT NULL` 检查值是否为空:

# 判断employees表中manager_id为null的数据。
select *
from
    employees
where
    employees.manager_id is null;

# 判断employees表中manager_id不为null的数据。
select *
from
    employees
where
    employees.manager_id is not null;

三、 总结

条件查询在 MySQL 中极为重要,它允许用户灵活地从数据库中检索所需的数据。通过使用各种条件和操作符,您可以精确控制返回的结果集。掌握这些查询技巧将使您在数据管理与分析时更加高效。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值