MySQL数据库之UPDATE更新语句精解(3)

作者:佚名 来源:IT专家网论坛 时间:2009-03-20 15:21:00 

CREATE TABLE table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE);

假设table1中已经有了3条记录

a b c

1 1 1

2 2 2

3 3 3

下面我们使用REPLACE语句向table1中插入一条记录。

REPLACE INTO table1(a, b, c) VALUES(1,2,3);

返回的结果如下

Query OK, 4 rows affected (0.00 sec)

在table1中的记录如下

a b c

1 2 3

我们可以看到,REPLACE将原先的3条记录都删除了,然后将(1, 2, 3)插入。

二、UPDATE

UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。

UPDATE table_anem SET column_name1 = value1, column_name2 = value2, WHERE ;

如下面的语句将users表中id等于123的记录的age改为24

UPDATE users SET age = 24 WHERE id = 123;

同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = 'Mike' WHERE id = 123;

上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。

在使用UPDATE更新记录时,如果被更新的字段的类型和所赋的值不匹配时,MySQL将这个值转换为相应类型的值。如果这个字段是数值类型,而且所赋值超过了这个数据类型的最大范围,那么MySQL就将这个值转换为这个范围最大或最小值。如果字符串太长,MySQL就将多余的字符串截去。如果设置非空字段为空,那么将这个字段设置为它们的默认值,数字的默认值是0,字符串的默认值是空串(不是null,是"")。

有两种情况UPDATE不会对影响表中的数据。

1. 当WHERE中的条件在表中没有记录和它匹配时。

2. 当我们将同样的值赋给某个字段时,如将字段abc赋为'123',而abc的原值就是'123'。

和INSERT、REPLACE一样,UPDATE也返回所更新的记录数。但这些记录数并不包括满足WHERE条件的,但却未被更新的记录。如下同的UPDATE语句就未更新任何记录。

UPDATE users SET age = 30 WHERE id = 12;

Query OK, 0 rows affected (0.00 sec)

需要注意的时,如果一个字段的类型是TIMESTAMP,那么这个字段在其它字段更新时自动更新。

在有些时候我们需要得到UPDATE所选择的行数,而不是被更新的行数。我们可以通过一些API来达到这个目的。如MySQL提供的C API提供了一个选项可以得到你想要的记录数。而MySQL的JDBC驱动得到的默认记录数也是匹配的记录数。

标签:MySQL数据库,UPDATE,更新,语句精解
0
投稿

猜你喜欢

  • golang bad file descriptor问题的解决方法

    2024-05-09 09:31:42
  • 用FSO操作 xml

    2008-09-03 12:26:00
  • Golang TCP粘包拆包问题的解决方法

    2023-07-18 11:04:43
  • Python实现随机划分图片数据集的示例代码

    2021-08-01 16:35:32
  • python3.5基于TCP实现文件传输

    2021-08-17 08:22:24
  • 最新Listary v5.00.2843注册码 亲测可用

    2022-07-04 22:20:43
  • python 绘图模块matplotlib的使用简介

    2023-08-09 19:09:01
  • MySQL中SQL命令语句条件查询实例详解

    2024-01-12 19:45:48
  • python爬虫headers设置后无效的解决方法

    2021-09-04 00:55:17
  • python代码打印100-999之间的回文数示例

    2022-10-14 02:53:39
  • Mysql中Join的使用实例详解

    2024-01-26 05:04:36
  • Python爬虫之线程池的使用

    2021-04-08 20:01:01
  • Python实现分数序列求和

    2023-10-07 12:44:54
  • python基础中的文件对象详解

    2021-10-20 00:22:40
  • 优化次数过多的循环

    2009-11-12 12:35:00
  • Python通用循环的构造方法实例分析

    2022-03-30 00:03:56
  • MySQL行级锁、表级锁、页级锁详细介绍

    2024-01-27 08:43:42
  • python实现LRU热点缓存及原理

    2022-01-08 01:26:15
  • 一篇文章带你搞懂Python类的相关知识

    2021-06-01 19:31:54
  • vue实现自定义组件挂载原型上

    2024-04-30 10:24:11
  • asp之家 网络编程 m.aspxhome.com