MySQL update where 子查询写法

MySQL update where 子查询写法

MySQL update where 子查询写法

引言

MySQL 是一个开源的关系型数据库管理系统,被广泛应用于各种类型的应用中。其中,更新(UPDATE)操作是常用的数据库操作之一,用于修改一张表中的数据。而在 update 操作中,where 子查询的使用可以使得更新更加灵活和精确。

本文将详细介绍 MySQL 中 update 语句配合 where 子查询的使用方法,包括基本语法、示例代码和代码运行结果等内容。

一、基本语法

MySQL 中 update 语句的基本语法如下:

UPDATE 表名
SET 列名1 = 值1, 列名2 = 值2, ...
WHERE 列名 = (SELECT 列名 FROM 其他表名 WHERE 条件);

其中,表名 是需要更新的表名,列名1、列名2是需要更新的列名,值1、值2 是需要更新的值。WHERE 列名 = (SELECT 列名 FROM 其他表名 WHERE 条件) 是 where 子查询的语法,用于指定更新的条件。

二、示例代码

为了更好地理解 update 语句配合 where 子查询的使用方法,下面将给出一个实际的示例。假设我们有两张表:students(学生表)和 scores(成绩表)。

1. 创建示例表和插入数据

首先,我们需要创建示例表,并插入一些测试数据,代码如下:

-- 创建学生表
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    gender VARCHAR(10)
);

-- 插入学生数据
INSERT INTO students (name, age, gender)
VALUES
('张三', 18, '男'),
('李四', 20, '女'),
('王五', 19, '男'),
('赵六', 21, '女');

-- 创建成绩表
CREATE TABLE scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    subject VARCHAR(100),
    score INT
);

-- 插入成绩数据
INSERT INTO scores (student_id, subject, score)
VALUES
(1, '语文', 85),
(1, '数学', 90),
(1, '英语', 80),
(2, '语文', 75),
(2, '数学', 95),
(2, '英语', 85),
(3, '语文', 90),
(3, '数学', 80),
(3, '英语', 95),
(4, '语文', 80),
(4, '数学', 85),
(4, '英语', 90);

以上代码中,我们创建了两张表 studentsscores,并插入了一些测试数据。students 表存储了学生的基本信息,scores 表存储了学生的成绩信息。

2. 使用 where 子查询更新数据

下面,我们将使用 update 语句配合 where 子查询来更新成绩表 scores 中的数据。具体代码如下:

UPDATE scores
SET score = score + 5
WHERE student_id = (SELECT id FROM students WHERE name = '张三') AND subject = '数学';

以上代码中,我们通过 where 子查询获取了学生名为 ‘张三’ 的学生的 id,然后将该学生的数学成绩加 5 分。

3. 查询更新后的成绩数据

为了验证 update 语句的执行结果,我们可以使用 select 语句来查询更新后的成绩数据。具体代码如下:

SELECT * FROM scores;

运行以上代码,得到的查询结果如下:

+----+------------+---------+-------+
| id | student_id | subject | score |
+----+------------+---------+-------+
|  1 |          1 | 语文    |    85 |
|  2 |          1 | 数学    |    95 |
|  3 |          1 | 英语    |    80 |
|  4 |          2 | 语文    |    75 |
|  5 |          2 | 数学    |   100 |
|  6 |          2 | 英语    |    85 |
|  7 |          3 | 语文    |    90 |
|  8 |          3 | 数学    |    80 |
|  9 |          3 | 英语    |    95 |
| 10 |          4 | 语文    |    80 |
| 11 |          4 | 数学    |    85 |
| 12 |          4 | 英语    |    90 |
+----+------------+---------+-------+

从查询结果中可以看到,我们成功地将学生名为 ‘张三’ 的学生的数学成绩加 5 分。

三、总结

通过本文的学习,我们了解了 MySQL 中 update 语句与 where 子查询的配合使用方法。在更新数据时,通过 where 子查询可以灵活地指定更新的条件,使得更新操作更加精确和灵活。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程