- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - INSERT 查询
- SQL - SELECT 查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查询
- SQL - DELETE 查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - DELETE 连接
- SQL - UPDATE 连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - UPDATE 查询
SQL UPDATE 语句
SQL 的UPDATE语句用于修改表中现有的记录。此语句是数据操作语言 (DML) 的一部分,因为它只修改表中存在的数据,而不会影响表的结构。
要过滤需要修改的记录,可以使用 UPDATE 语句的 WHERE 子句。使用 WHERE 子句,您可以更新单行或多行。
由于它只与表的数据交互,因此需要谨慎使用 SQL UPDATE 语句。如果未正确选择要修改的行,则表中的所有行都将受到影响,并且正确的表数据将丢失或需要重新插入。
SQL UPDATE 语句在修改表中的每一行时都会使用锁,并且一旦修改了该行,就会释放锁。因此,它可以使用单个查询更改单行或多行。
语法
带有 WHERE 子句的 SQL UPDATE 语句的基本语法如下:
UPDATE table_name SET column1 = value1, column2 = value2,..., columnN = valueN WHERE [condition];
您可以使用 AND 或 OR 运算符组合 N 个条件。
示例
假设我们使用 CREATE TABLE 语句创建了一个名为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) );
现在,使用 INSERT 语句将值插入此表,如下所示:
INSERT INTO CUSTOMERS 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 );
该表将创建为:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
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 |
以下查询将更新 ID 号为 6 的客户的地址。
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
输出
该查询产生以下输出:
Query OK, 1 row affected (0.13 sec) Rows matched: 1 Changed: 1 Warnings: 0
验证
要验证表中的记录是否已修改,请使用以下 SELECT 查询:
SELECT * FROM CUSTOMERS WHERE ID=6;
现在,CUSTOMERS 表将具有以下记录:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
6 | Komal | 22 | Pune | 4500.00 |
更新多行和多列
使用 SQL UPDATE 语句,还可以更新表中的多行和多列。要更新多行,请在 WHERE 子句中指定条件,以便只有所需的记录才能满足该条件。
但是,要更新多列,请将新值设置为需要更新的所有列。在这种情况下,使用 WHERE 子句将缩小表的记录范围,而不使用该子句将更改这些列中的所有值。
语法
以下是更新多行和多列的语法:
UPDATE table_name SET column_name1 = new_value, column_name2 = new_value... WHERE condition(s)
示例
如果要修改 CUSTOMERS 表中的所有 AGE 和 SALARY 列值,则不需要使用 WHERE 子句,因为 UPDATE 查询就足够了。以下查询将所有客户的年龄增加 5 年,并将所有薪水值增加 3000:
UPDATE CUSTOMERS SET AGE = AGE+5, SALARY = SALARY+3000;
输出
该查询产生以下输出:
Query OK, 7 rows affected (0.12 sec) Rows matched: 7 Changed: 7 Warnings: 0
验证
要验证表中的记录是否已修改,请使用以下 SELECT 查询:
SELECT * FROM CUSTOMERS;
现在,CUSTOMERS 表将具有以下记录:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 37 | Ahmedabad | 5000.00 |
2 | Khilan | 30 | Delhi | 4500.00 |
3 | Kaushik | 28 | Kota | 5000.00 |
4 | Chaitali | 30 | Mumbai | 9500.00 |
5 | Hardik | 32 | Bhopal | 11500.00 |
6 | Komal | 27 | Pune | 7500.00 |
7 | Muffy | 29 | Indore | 13000.00 |
示例
但是,如果要修改 CUSTOMERS 表中所选记录的 ADDRESS 和 SALARY 列,则需要使用 WHERE 子句指定条件来过滤要修改的记录,如下面的查询所示:
UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00 WHERE NAME = 'Ramesh';
输出
此查询产生以下输出:
Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0
验证
要验证表中的记录是否已修改,请使用以下 SELECT 查询:
SELECT * FROM CUSTOMERS WHERE NAME = 'Ramesh';
现在,CUSTOMERS 表将具有以下记录:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 37 | Pune | 1000.00 |