- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授予权限
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户账户
- MySQL - 解锁用户账户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 清空表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁定
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - 插入查询
- MySQL - 选择查询
- MySQL - 更新查询
- MySQL - 删除查询
- MySQL - 替换查询
- MySQL -忽略插入
- MySQL - 在重复键上插入更新
- MySQL - 将插入到选择中
- MySQL 运算符和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 运算符
- MySQL - OR 运算符
- MySQL - LIKE 运算符
- MySQL - IN 运算符
- MySQL - ANY 运算符
- MySQL - EXISTS 运算符
- MySQL - NOT 运算符
- MySQL - 不等于运算符
- MySQL - IS NULL 运算符
- MySQL - IS NOT NULL 运算符
- MySQL - BETWEEN 运算符
- MySQL - UNION 运算符
- MySQL - UNION 与 UNION ALL
- MySQL - MINUS 运算符
- MySQL - INTERSECT 运算符
- MySQL - INTERVAL 运算符
- MySQL 连接
- MySQL - 使用连接
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自连接
- MySQL - 删除连接
- MySQL - 更新连接
- MySQL - UNION 与 JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - INSERT 之前触发器
- MySQL - INSERT 之后触发器
- MySQL - UPDATE 之前触发器
- MySQL - UPDATE 之后触发器
- MySQL - DELETE 之前触发器
- MySQL - DELETE 之后触发器
- MySQL 数据类型
- MySQL - 数据类型
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正则表达式
- MySQL - 正则表达式
- MySQL - RLIKE 运算符
- MySQL - NOT LIKE 运算符
- MySQL - NOT REGEXP 运算符
- MySQL - regexp_instr() 函数
- MySQL - regexp_like() 函数
- MySQL - regexp_replace() 函数
- MySQL - regexp_substr() 函数
- MySQL 函数和运算符
- MySQL - 日期和时间函数
- MySQL - 算术运算符
- MySQL - 数值函数
- MySQL - 字符串函数
- MySQL - 聚合函数
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - 检查约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入数据库
- MySQL - UUID
- MySQL - 通用表表达式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分区
- MySQL - 垂直分区
- MySQL - 游标
- MySQL - 存储函数
- MySQL - 信号
- MySQL - 重新发送信号
- MySQL - 字符集
- MySQL - 排序规则
- MySQL - 通配符
- MySQL - 别名
- MySQL - ROLLUP
- MySQL - 今日日期
- MySQL - 字面量
- MySQL - 存储过程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 标准差
- MySQL - 查找重复记录
- MySQL - 删除重复记录
- MySQL - 选择随机记录
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - COALESCE() 函数
- MySQL 有用资源
- MySQL - 有用函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用资源
- MySQL - 讨论
MySQL - 更新查询
MySQL UPDATE 语句
MySQL 的UPDATE 查询用于修改表中现有记录。此语句是 SQL 中数据操纵语言的一部分,因为它只修改表中存在的数据,而不会影响表的结构。
由于它只与表的数据交互,因此需要谨慎使用 UPDATE 语句。如果事先没有选择要修改的行,则表中的所有行都将受到影响,正确的表数据将丢失或需要重新插入。
因此,为了过滤需要修改的记录,MySQL 始终提供 WHERE 子句。使用 WHERE 子句,您可以更新单行或多行。
UPDATE 语句在修改表中的每一行时都会使用锁定,并且一旦修改了该行,就会释放锁定。因此,它可以使用单个查询来更改单行或多行。
语法
以下是用于修改 MySQL 表中数据的 UPDATE 命令的 SQL 语法:
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
- 您可以同时更新一个或多个字段。
- 您可以使用 WHERE 子句指定任何条件。
- 您可以一次更新单个表中的值。
当您想要更新表中选定的行时,WHERE 子句非常有用。
从命令提示符更新数据
这将使用带有 WHERE 子句的 SQL UPDATE 命令来更新 MySQL 表中的选定数据。
示例
首先,让我们使用以下 CREATE 查询创建一个名为CUSTOMERS的表:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查询将 7 条记录插入到上面创建的表中:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
执行以下查询以检索 CUSTOMERS 表中存在的所有记录:
Select * from CUSTOMERS;
以下是 CUSTOMERS 表:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 艾哈迈达巴德 | 2000.00 |
2 | Khilan | 25 | 德里 | 1500.00 |
3 | Kaushik | 23 | 科塔 | 2000.00 |
4 | Chaitali | 25 | 孟买 | 6500.00 |
5 | Hardik | 27 | 博帕尔 | 8500.00 |
6 | Komal | 22 | 海得拉巴 | 4500.00 |
7 | Muffy | 24 | 因多尔 | 10000.00 |
在这里,我们使用 SQL UPDATE 查询来更新 CUSTOMERS 表中的 NAME 字段。它将 ID 等于 6 的行的名称设置为“Nikhilesh”。
UPDATE CUSTOMERS SET NAME = 'Nikhilesh' WHERE ID = 6;
输出
上述查询已成功执行,没有任何错误。
Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
验证
要验证名称是否已替换为“Nikhilesh”,请使用以下查询:
Select * from CUSTOMERS;
正如我们从输出中看到的,ID 为 6 的 NAME 已更新:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 艾哈迈达巴德 | 2000.00 |
2 | Khilan | 25 | 德里 | 1500.00 |
3 | Kaushik | 23 | 科塔 | 2000.00 |
4 | Chaitali | 25 | 孟买 | 6500.00 |
5 | Hardik | 27 | 博帕尔 | 8500.00 |
6 | Nikhilesh | 22 | 海得拉巴 | 4500.00 |
7 | Muffy | 24 | 因多尔 | 10000.00 |
从命令提示符更新多条记录
使用 UPDATE 语句,还可以更新 MySQL 表中的多行和多列。要更新多行,请在 WHERE 子句中指定条件,以便只有所需的行列满足该条件。因此,只更新这些记录中的值。
示例
现在,让我们使用以下查询更新先前创建的CUSTOMERS表中的多条记录:
UPDATE CUSTOMERS SET ADDRESS = 'Vishakapatnam' WHERE ID = 6 OR ID = 3;
输出
上述查询已成功执行,没有任何错误。
Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0
验证
要验证 ID = 6 和 3 的 ADDRESS 是否已替换为“Vishakapatnam”,请使用以下查询:
Select * from CUSTOMERS;
正如我们从输出中看到的,ID 为 6 的 NAME 已更新:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 艾哈迈达巴德 | 2000.00 |
2 | Khilan | 25 | 德里 | 1500.00 |
3 | Kaushik | 23 | Vishakapatnam | 2000.00 |
4 | Chaitali | 25 | 孟买 | 6500.00 |
5 | Hardik | 27 | 博帕尔 | 8500.00 |
6 | Nikhilesh | 22 | Vishakapatnam | 4500.00 |
7 | Muffy | 24 | 因多尔 | 10000.00 |
使用客户端程序更新表
除了使用 MySQL 查询更新表中的记录外,我们还可以使用客户端程序对表执行 UPDATE 操作。
语法
以下是各种编程语言中此操作的语法:
要通过 PHP 程序更新 MySQL 数据库中表的记录,我们需要使用mysqli 函数query()执行UPDATE语句,如下所示:
$sql="UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]"; $mysqli->query($sql);
要通过 Node.js 程序更新 MySQL 数据库中表的记录,我们需要使用mysql2库的query()函数执行UPDATE语句,如下所示:
sql = "UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition"; con.query(sql);
要通过 Java 程序更新 MySQL 数据库中表的记录,我们需要使用JDBC函数executeUpdate()执行UPDATE语句,如下所示:
String sql="UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]"; statement.executeUpdate(sql);
要通过 Python 程序更新 MySQL 数据库中表的记录,我们需要使用 MySQL Connector/Python 的execute()函数执行UPDATE语句,如下所示:
update_query = "UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]" cursorObj.execute(update_query);
示例
以下是程序:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli->connect_errno ) { printf("Connect failed: %s<br />", $mysqli->connect_error); exit(); } printf('Connected successfully.<br />'); if ($mysqli->query('UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 4')) { printf("Table tutorials_tbl updated successfully.<br />"); } if ($mysqli->errno) { printf("Could not update table: %s<br />", $mysqli->error); } $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl"; $result = $mysqli->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", $row["tutorial_id"], $row["tutorial_title"], $row["tutorial_author"], $row["submission_date"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli->close();
输出
获得的输出如下:
Connected successfully. Table tutorials_tbl updated successfully. Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021 Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021 Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021 Id: 4, Title: Learning Java, Author: Mahesh, Date: 2021 Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); //Selecting a Database sql = "USE TUTORIALS" con.query(sql); //Updating a single record in the table sql = "UPDATE tutorials_tbl SET tutorial_title = 'Learning Java' WHERE tutorial_id = 3;" con.query(sql); //Selecting records from table sql = "SELECT * FROM tutorials_tbl" con.query(sql, function (err, result) { if (err) throw err; console.log(result); }); });
输出
产生的输出如下:
Connected! [ { tutorial_id: 1, tutorial_title: 'Learn PHP', tutorial_author: 'John Paul', submission_date: 2023-07-25T18:30:00.000Z }, { tutorial_id: 2, tutorial_title: 'Learn MySQL', tutorial_author: 'Abdul S', submission_date: 2023-07-25T18:30:00.000Z }, { tutorial_id: 3, tutorial_title: 'Learning Java', tutorial_author: 'Sanjay', submission_date: 2007-05-05T18:30:00.000Z }, { tutorial_id: 4, tutorial_title: 'Python Tutorial', tutorial_author: 'Sasha Lee', submission_date: 2016-09-03T18:30:00.000Z }, { tutorial_id: 5, tutorial_title: 'Hadoop Tutorial', tutorial_author: 'Chris Welsh', submission_date: 2023-07-25T18:30:00.000Z } ]
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class UpdateQuery { public static void main(String[] args) { String url = "jdbc:mysql://127.0.0.1:3306/TUTORIALS"; String user = "root"; String password = "password"; ResultSet rs; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); //System.out.println("Database connected successfully...!"); String sql = "UPDATE tutorials_tbl SET tutorial_title = 'Learning Java' WHERE tutorial_id = 3"; st.executeUpdate(sql); System.out.println("Update query executed successfully..!"); String sql1 = "SELECT * FROM tutorials_tbl"; rs = st.executeQuery(sql1); System.out.println("Table records: "); while(rs.next()) { String tutorial_id = rs.getString("tutorial_id"); String tutorial_title = rs.getString("tutorial_title"); String tutorial_author = rs.getString("tutorial_author"); String submission_date = rs.getString("submission_date"); System.out.println("Id: " + tutorial_id + ", Title: " + tutorial_title + ", Author: " + tutorial_author + ", Submission_date: " + submission_date); } }catch(Exception e) { e.printStackTrace(); } } }
输出
获得的输出如下所示:
Update query executed successfully..! Table records: Id: 1, Title: Learn PHP, Author: John Paul, Submission_date: 2023-08-08 Id: 2, Title: Angular Java, Author: Abdul S, Submission_date: 2023-08-08 Id: 3, Title: Learning Java, Author: Sanjay, Submission_date: 2007-05-06 Id: 4, Title: Python Tutorial, Author: Sasha Lee, Submission_date: 2016-09-04 Id: 5, Title: Hadoop Tutorial, Author: Chris Welsh, Submission_date: 2023-08-08
import mysql.connector import datetime #establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) #Creating a cursor object cursorObj = connection.cursor() update_query = "UPDATE tutorials_tbl SET tutorial_title = 'Learning Java' WHERE tutorial_id = 3" cursorObj.execute(update_query) connection.commit() print("Row updated successfully.") cursorObj.close() connection.close()
输出
以下是上述代码的输出:
Row updated successfully.