mysql SQL数据更新(有时更新,没有时插入)

本文介绍了一种使用SQL语句进行数据插入与更新的方法,通过示例展示了如何利用INSERT...ON DUPLICATE KEY UPDATE语句实现数据的高效管理。

一、SQL语句:

1.1语法:INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...) ON DUPLICATE KEY UPDATE 字段名=值,...

1.2例子:

INSERT INTO user(userId,userName,userAge,userSex) VALUES(1,"qyf",22,"nv") 

ON DUPLICATE KEY

UPDATE userName="qinyufeng",userAge=24,userSex="女"

1.2.1数据表user,还没执行SQL语句之前是没有数据的。

1.2.2执行图中SQL语句

1.2.3 user表中插入了一条新记录。

1.2.4 再执行一次相同的SQL语句

1.2.5 再来看user表,这时看到记录还是只有一条记录,只不过是值更新了。

 

ps:想认识博主么?想了解学习更多知识么?不妨关注微信公众号:面向对象缘来是你

### MySQL UPDATE 语句的正确语法及用法 #### 正确语法 `UPDATE` 是用来修改已存在的记录的一种 SQL 语句。其基本语法结构如下: ```sql UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` 其中 `table_name` 表示要更新的目标表名,`column1`, `column2` 等表示列名,而 `value1`, `value2` 则是要设置的新值。`condition` 部分定义了哪些行会被更新。 如果没有指定 `WHERE` 子句,则会更新该表中的每一行数据[^1]。 #### 使用示例 以下是几个常见的 `UPDATE` 语句使用场景的例子: ##### 单一条件下的更新操作 假设有一个名为 `employees` 的员工表,我们希望把 ID 为 101 的员工工资更改为 8000: ```sql UPDATE employees SET salary = 8000 WHERE employee_id = 101; ``` ##### 多个字段的同更新 如果需要同更改多个字段数据,可以在 `SET` 后面依次列出这些字段及其新值。例如,将某个用户的年龄增加两岁并将其状态标记为活跃: ```sql UPDATE users SET age = age + 2, status = 'active' WHERE user_id = 5; ``` 注意,在这种情况下,表达式的计算遵循一定的顺序规则。比如上述例子中先执行 `age = age * 2` 再执行 `age = age + 1` 将不会得到预期的结果,因为每次赋值都会覆盖前一次的结果[^4]。 ##### 跨多张表格的联合更新 (Multiple-Table Updates) 当涉及到跨多张表的操作,可以通过 JOIN 来实现复杂的更新逻辑。不过需要注意的是,对于包含外键约束的 InnoDB 表来说,由于优化器可能会改变实际处理次序,因此可能导致违反外键限制的情况发生[^3]。 #### 特殊情况说明 有还需要考虑间戳类型的自动维护特性。例如,默认情况下某些 TIMESTAMP 或 DATETIME 类型会在插入或者更新某条记录的候自动生成当前的间戳。如果你不想让这个行为影响到你的业务逻辑,那么就需要特别小心设计自己的SQL语句[^5]。 ```sql -- 不触发 timestamp 自动更新 UPDATE articles SET title='New Title', content='Updated Content' WHERE article_id=7; -- 显式设定 timestamp 字段以防止意外变化 UPDATE articles SET title='Another New Title', last_modified=CURRENT_TIMESTAMP() WHERE article_id=9; ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值