insert语句让我学会的两个MySQL函数
我们要保存数据到数据库,插入数据是必须的,但是在业务中可能会出于某种业务要求,要在数据库中设计唯一索引;这时如果不小心插入一条业务上已经存在同样key的数据时,就会出现异常。
大部分的需求要求我们出现唯一键冲突时就更新这条数据,这时我们就可以用下面这条MySQL语句了:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE][INTO] tbl_name[PARTITION (partition_name [, partition_name] ...)][(col_name [, col_name] ...)]{VALUES | VALUE} (value_list) [, (value_list)] ...[ON DUPLICATE KEY UPDATE assignment_list]
这个就是MySQL官方的INSERT ... ON DUPLICATE KEY UPDATE语句语法
对于上面的 assignment_list 我们常常这样写:(假设a所在列是数据库中的唯一主键)
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb=b,c=c;
但是在业务上,对于b和c列的值并不是所有的数值都是需要更新到数据库里的,比如说:b列不能为null,为空就不更,c列不能小于0,小于0时就不更新,那么上面的语句我们就必须改改了:
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb= IF(VALUES(b), VALUES(b), b),c= IF(VALUES(c) > 0, VALUES(c), c);
我这次要说的就是这两个函数if和values
下面就看官网怎么说了:
In an
INSERT ... ON DUPLICATE KEY UPDATE
statement, you can use theVALUES(
function in thecol_name
)UPDATE
clause to refer to column values from theINSERT
portion of the statement. In other words,VALUES(
in thecol_name
)UPDATE
clause refers to the value ofcol_name
that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. TheVALUES()
function is meaningful only in theON DUPLICATE KEY UPDATE
clause ofINSERT
statements and returnsNULL
和
If
expr1
isTRUE
(and
expr1
<> 0),
expr1
<> NULLIF()
returnsexpr2
. Otherwise, it returnsexpr3
.
对于if函数来说,就是根据条件二选一了,没啥可说的,
对于values函数来说,只有在on duplicate key update语句里才有意义,而且返回值,是你要插入的数值,而不是已经在数据库里的数值。
随便发现了南洋理工的sql教程,很赞:https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Beginner.html
参考
insert语法
if函数
values函数
转载于:https://www.cnblogs.com/halu126/p/8024379.html
insert语句让我学会的两个MySQL函数相关推荐
- php的mysql5加密_PHP实现mysql加密算法mysql323和mysql5,即old_password()和password()两个mysql函数...
由于mysql5.7之后,已经停用old_password函数了,所以这里用PHP实现mysql加密算法mysql323和mysql5,即old_password()和password()两个mysq ...
- access insert语句怎么写_码住!MySQL中超实用的几种SQL语句
在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮. 目录 实用的SQL 1.插 ...
- db2 如何导出insert语句_《MySQL 入门教程》第 23 篇 DML 语句之插入数据
文章来源:https://blog.csdn.net/horses/article/details/108287687 原文作者:不剪发的Tony老师 来源平台:CSDN 数据库的基本操作包括增.删. ...
- 使用LOAD DATA和INSERT语句导入Mysql数据
在"MySQL数据库(表)的基本操作"一节中我们创建过一个会员注册表"Users",这次我们就往这个表中以不同的方式导入数据. INSERT语句 关于INSER ...
- linux mysql insert into_MySQL的INSERT语句小结
MySQL的INSERT语法小结 mysql> create table addressbook(fname varchar(255) null,lname varchar(255) null, ...
- insert sql语句_SQL Insert语句概述
insert sql语句 This article on the SQL Insert statement, is part of a series on string manipulation fu ...
- mysql数据库insert语句怎么写_MySQL数据库Insert语句7种写法
简介 很多开发人员工作了几年之后,都会自嘲,自己啥技术都没学到,就会CRUD,可是我要说的是,CRUD你真的都会吗,你在MySQL数据库中,会几种insert语句写法呢.在这里我会7种写法,下面我就来 ...
- 值班问题:insert语句插入了两条数据?
上周值班,碰到这样的一个客户问题,表结构简化如下: CREATE TABLE `aa` ( `c1` int(10) unsigned NOT NULL AUTO_INCREMENT, `c2` in ...
- SQL基础学习总结:6(INSERT语句的相关使用方法)
数据的插入(INSERT语句的使用方法) 我们之前在表的创建部分简单地介绍了一下INSERT语句的功能和使用方法,现在我们再详细讲一下它的用法. INSERT语句的基本语法 其语法结构如下: INSE ...
最新文章
- js map、filter、forEach
- java学习笔记14--多线程编程基础1
- .net连接MYSQL数据库方法一
- 秒懂文件路径 / 和 ./ 和 ../ 和 ../../
- 如何解决SQL Server中SQL身份危机
- mysql执行语句_MySQL查看实时执行的SQL语句
- BizTalk开发系列(二十九) 宏的使用
- JavaScript 如何工作:渲染引擎和性能优化技巧
- 56. Attribute value 属性
- 【渝粤教育】电大中专药品储存与养护技术 (3)作业 题库
- 计算机软件 退货,如何在在电脑收银系统中实现商品退货
- 怎么做店铺客单价|盛天海科技
- 实时采集Canal快速入门
- Android RecyclerView详解及实现瀑布流式布局
- 机电一体化柔性生产线加工实训系统(5站)
- 三星:大小屏QLED和OLED两手都要抓,都要硬
- 宇枫资本投资理财投资入门与技巧
- Itext与pdfBox坐标定位问题
- 核心概念——节点/边/Combo——内置Combo——内置Combo总览
- 下拉菜单Spinner用法
热门文章
- poj2965-poj2965-The Pilots Brothers' refrigerator
- OpenCV+python:直方图的应用(一)
- java结束全部操作代码_Java创建与结束线程代码示例
- 加载多瓦片地图_手把手教 | 网络时空大数据爬取与分析DAS系统(瓦片地图获取)...
- 计算机在档案管理中的应用,浅谈计算机在档案管理中的应用
- ubuntu chrome java插件_在Ubuntu中为Chrome安装Java插件
- java需要记的语法,Java笔记(三)……基础语法
- python 正则表达式方法_Python正则表达式一: 基本使用方法
- 从底层剖析i++和++i的区别与相同点
- rust熔炉怎么带走_Rust游戏中12个实用小技巧,包含无伤下坠、直梯爬楼