暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL中的WHERE子句示例

技术老小子 2024-07-02
3

在本文中,我将讨论如何在MySQL中使用WHERE子句。请阅读我们之前的文章,其中讨论了MySQL中的SELECT语句。在本文结束时,您将详细了解以下要点:

MySQL中的子句是什么?

在理解WHERE子句之前,让我们首先讨论一下MySQL中的子句是什么。子句是SQL中可用的内置函数,用于轻松处理存储在表中的数据。它帮助我们快速过滤和分析数据。当我们在数据库中存储大量数据时,子句用于获取用户所需的数据。这意味着如果您想提供一些附加功能,例如过滤记录、排序记录、获取记录和分组记录,那么您需要在查询中使用子句。

为什么我们需要MySQL中的子句?

MySQL子句用于通过应用描述条件的过滤器来访问数据库和提取数据。如果条件满足,我们将获得特定的结果行,不满足条件的信息将不被使用。因此,SQL子句帮助我们访问适当的信息,并且易于处理数据库中的不同表。

MySQL中的WHERE子句

WHERE子句是SQL语句中的一个可选子句。WHERE子句充当由FROM子句生成的结果集的行的过滤器。它仅提取满足指定条件的记录。WHERE子句主要依赖于一个条件,该条件可以评估为真、假或未知。因此,如果您想限制DML语句(SELECT、INSERT、UPDATE或DELETE)影响的行数,则需要在MySQL中使用WHERE子句。

示例:理解MySQL中的WHERE子句

我们将使用以下员工表来理解MySQL中WHERE子句的需求和使用示例。

复制
    CREATE DATABASE company;
    USE company;


    CREATE TABLE employees (
    Id INT PRIMARY KEY,
    Name VARCHAR(45) NOT NULL,
    Department VARCHAR(45) NOT NULL,
    Salary FLOAT NOT NULL,
    Gender VARCHAR(45) NOT NULL,
    Age INT NOT NULL,
    City VARCHAR(45) NOT NULL
    );


    INSERT INTO employees (Id, Name, Department, Salary, Gender, Age, City) VALUES (1001, '张三', 'IT', 35000, '男', 25, '北京');
    INSERT INTO employees (Id, Name, Department, Salary, Gender, Age, City) VALUES (1002, '李四', 'HR', 45000, '女', 27, '上海');
    INSERT INTO employees (Id, Name, Department, Salary, Gender, Age, City) VALUES (1003, '王五', 'Finance', 50000, '男', 28, '广州');
    INSERT INTO employees (Id, Name, Department, Salary, Gender, Age, City) VALUES (1004, '赵六', 'Finance', 50000, '男', 28, '深圳');
    INSERT INTO employees (Id, Name, Department, Salary, Gender, Age, City) VALUES (1005, '孙七', 'HR', 75000, '女', 26, '北京');


    复制
    如何在MySQL中使用WHERE子句?
    复制

    以下是使用MySQL数据库中的WHERE子句的语法。

    WHERE 条件;

    复制

    条件: 必须满足的条件,以便选择行。

    带有单个条件的WHERE子句

    让我们从一个非常基本的示例开始,即在WHERE子句中仅使用一个条件。在下面的示例中,我们使用WHERE子句从员工表中过滤结果。下面的SELECT语句将返回员工表中所有部门为HR的记录。由于我们在FROM子句之前使用了*,SELECT语句将返回员工表中的所有列。

      SELECT * FROM employees WHERE Department = 'HR';
      复制


      复制

      执行上述SELECT语句时,它将返回HR部门的所有员工,如下图所示。

      使用AND条件的WHERE子句

      现在我们将看到如何在MySQL中使用带有AND条件的WHERE子句。我们的要求是从员工表中获取性别为男且工资大于35000的所有员工。这意味着我们需要编写一个SQL语句,该语句应返回以下记录作为输出。

        SELECT * FROM employees WHERE Gender = '男' AND Salary > 35000;
        复制


        复制

        执行上述SELECT语句时,它将返回以下结果集,其中包括所有性别为男且工资大于35000的员工。

        使用OR条件的WHERE子句

        现在我们将看到如何在MySQL中使用带有OR条件的WHERE子句。我们的要求是从员工表中获取性别为女或部门为IT的所有员工。这意味着我们需要编写一个SQL语句,该语句应返回以下记录作为输出。

        复制
          SELECT * FROM employees WHERE Gender = '女' OR Department = 'IT';


          复制
          执行上述SELECT语句时,它将返回以下结果集,其中包括所有性别为女的员工以及所有属于IT部门的员工。
          复制

          在MySQL中同时使用AND和OR条件的WHERE子句

          在一个SQL语句中同时使用“AND”和“OR”条件也是可能的。以下示例使用WHERE子句定义多个条件,使用AND和OR条件。以下SQL查询将返回所有部门为IT或性别为女且工资大于35000的员工。

          复制
            SELECT * FROM employees WHERE (Gender = '女' OR Department = 'IT') AND Salary > 35000;
            复制
            执行上述SQL语句时,它将返回以下结果集。
            复制

            带有UPDATE语句的WHERE子句

            在MySQL数据库中,也可以在UPDATE语句中使用WHERE子句,即根据某些条件更新数据。让我们通过一个示例来理解这一点。我们的要求是将所有IT部门员工的工资增加2000。在更新IT部门员工的工资之前,让我们先通过执行以下SQL语句查看这些员工的当前工资。

            复制
              SELECT * FROM employees WHERE Department = 'IT';




              复制
              它将给出以下结果。
              复制

              现在,执行以下带有WHERE子句的UPDATE SQL语句并查看结果。

              复制
                UPDATE employees SET Salary = Salary + 2000 WHERE Department = 'IT';
                复制
                可能在执行上述UPDATE语句时,您会收到以下错误。
                复制

                如上图所示,它抱怨您正在使用安全更新模式,并且您尝试在没有使用KEY列的WHERE子句的情况下更新表。这意味着您在没有使用主键列的情况下更新表中的数据。为了避免上述错误,我们需要设置SQL_SAFE_UPDATES=0
                。因此,执行如下所示的UPDATE语句。

                复制
                  SET SQL_SAFE_UPDATES=0;
                  UPDATE employees SET Salary = Salary + 2000 WHERE Department = 'IT';


                  复制
                  现在,您将不会收到任何错误,并且它将按预期更新员工表中的数据。为了验证这一点,再次执行以下SELECT语句。
                  复制
                  复制
                    SELECT * FROM employees WHERE Department = 'IT';


                    复制
                    复制

                    如上图所示,IT部门员工的工资增加了2000,如预期的那样。

                    带有DELETE语句的WHERE子句

                    在MySQL数据库中,也可以在DELETE语句中使用WHERE子句,即根据某些条件删除数据。让我们通过一个示例来理解这一点。我们的要求是删除所有HR部门的员工。以下DELETE SQL语句将执行相同操作。

                      DELETE FROM employees WHERE Department = 'HR';
                      复制


                      复制

                      执行上述语句后,它将从员工表中删除所有HR部门的员工。为了验证这一点,执行以下SQL语句。

                        SELECT * FROM employees;
                        复制


                        复制

                        执行上述SQL SELECT语句后,您将获得以下结果,您可以看到所有HR部门的员工都从表中删除了。


                        文章转载自技术老小子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论