mysql replace into 語法_mysql Replace into與Insert update

Replace into

replace into 跟 insert 功能類似,

不同點在于:replace into 首先嘗試插入數據到表中,

1. 如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。

2. 否則,直接插入新數據。

要注意的是:插入數據的表必須有主鍵或者是唯一索引!否則的話,replace into 會直接插入數據,這將導致表中出現重復的數據。

replace into 有三種形式:

replace into tbl_name(col_name, ...) values(...)

replace into tbl_name(col_name, ...) select ...

replace into tbl_name set col_name=value, ...

前兩種形式用的多些。其中 “into” 關鍵字可以省略,不過最好加上 “into”,這樣意思更加直觀。另外,對于那些沒有給予值的列,MySQL 將自動為這些列賦上默認值。

Insert update

INSERT 中 ON DUPLICATE KEY UPDATE的使用

如果您指定了ON DUPLICATE KEY UPDATE,并且insert行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行舊行UPDATE。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個語句具有相同的效果:

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)? ON DUPLICATE KEY UPDATE c=c+1;

mysql> UPDATE table SET c=c+1 WHERE a=1;

總之

如果表中不存在主鍵記錄,replace和insert*update都與insert是一樣的特點。

如果表中存在主鍵記錄,replace相當于執行delete 和 insert兩條操作,而insert*update的相當于執行if exist do update else do insert操作。

因此,如果replace填充的字段不全,則會導致未被更新的字段都會修改為默認值,并且如果有自增id的話,自增id會變化為最新的值(這樣如果是以自增id為標志的話可能導致記錄丟失);而insert*update只是更新部分字段,對于未被更新的字段不會變化(不會強制修改為默認值)。

例子:

INSERT INTO FDM_LOG_RECORD(LOG_ID) VALUES('1426683600001') ON DUPLICATE KEY UPDATE RETRY_TIME = RETRY_TIME + 1, STATUS = 0

注意,以上語句在springjdbc中使用,即便是沒有,也會執行后面的語句

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378678.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378678.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微機原理——指令系統——傳送類指令(MOV、LEA、LDS、LES、LAHF、SAHF、XCHG、XLAT、PUSH、POP、PUSHF、POPF)

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 【沒事兒可以到我主頁看看】https://blog.csdn.net/qq_42604176 傳送類指令1&…

lastindexof方法_Java Vector lastIndexOf()方法與示例

lastindexof方法向量類別的lastIndexOf()方法 (Vector Class lastIndexOf() method) Syntax: 句法: public int lastIndexOf (Object ob);public int lastIndexOf (Object ob, int indices);lastIndexOf() method is available in java.util package. lastIndexOf(…

李開復:微博的價值在哪里

導讀:微博可以改變社會現象,可以傳播信息,可以幫助你成長,可以發出你的聲音。它讓我們能夠人人成為記者,讓每一個轉發的人都變成了一個編輯 很多人問微博是搶了誰的生意,開心網還是人人網?其實它…

mysql 任務計劃 /etc/cron.d_Linux /etc/cron.d增加定時任務

一般情況下我們添加計劃任務時,都是直接修改/etc/crontab。但是,不建議這樣做,/etc/cron.d目錄就是為了分項目設置計劃任務而創建的。例如,增加一項定時的備份任務,我們可以這樣處理:在/etc/cron.d目錄下新…

19-Harris角點檢測

角點檢測顧名思義,就是對類似頂點的檢測,與邊緣有所區別 邊緣可能在某一方向上變化不是特別明顯,但角點在任何方向上變換都很明顯 cv2.cornerHarris(img,blockSize,ksize,k) cv2.cornerHarris(gray,2,3,0.04) 參數一:img&#xff…

微機原理——指令系統——算數運算指令(ADD、ADC、SUB、SBB、INC、DEC、NEG、CMP、MUL、IMUL、DIV、IDIV、CBW、CWD、BCD調整)

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 算數運算指令1、加減法指令ADD、ADC 、SUB 、SBB 和增量減量指令INC、DEC、NEGADD…

linux系統出現Too many open files 錯誤、linux too many open files

故障一、linux too many open files linux系統出現Too many open files 錯誤,這是因為文件描述符大小不夠,或者有不正常的網絡連接(Socket也是一種特殊的文件)、文件IO沒有關閉并釋放出文件描述符(文件句柄,File Operator&#xf…

精通init ramfs構建

一、init ramfs是什么   在2.6版本的linux內核中,都包含一個壓縮過的cpio格式的打包文件。當內核啟動時,會 從這個打包文件中導出文件到內核的rootfs文件系統,然后內核檢查rootfs中是否包含有init文件,如果有則執行它&#xff0…

python 示例_帶有示例的Python date isocalendar()方法

python 示例Python date.isocalendar()方法 (Python date.isocalendar() Method) date.isocalendar() method is used to manipulate objects of date class of module datetime. date.isocalendar()方法用于操作模塊datetime的日期類的對象。 It uses a date class object a…

mysql 函數重載_[賦值]函數,變量,重載 ,_第1頁_169IT

[java/j2ee] java實現簡單的給sql語句賦值的示例代碼本身很簡單。拼接sql的時候?不好數,簡單的用來賦值。代碼如下:/** * TODO 循環賦值,缺少的類型可隨時添加 * author Lucius * param pt * param list * throws SQLException */ public static…

20-SIFT算法

import cv2 import numpy as np from matplotlib import pyplot as pltdef show_photo(name,picture):#圖像顯示函數cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img cv2.imread(E:\Jupyter_workspace\study\data/cfx.png) gray cv2.cvtColor(img,cv2.COL…

Opencv——寫入或讀取數據到XML或YAML文件

什么是XML、YAML文件 XML(eXtensible Markup Language)是一種元標記語言。所謂“原標記”,就是開發者可以根據自身需要定義的標記,任何滿足XML命名規則的名稱都可以標記。此外,XML是一種語義/結構化語言,它描述了文檔的結構和語義…

mysql 遷移 nosql_從關系型Mysql到Nosql HBase的遷移實踐

2013年11月22-23日,作為國內唯一專注于hadoop技術與應用分享的大規模行業盛會,2013 Hadoop中國技術峰會(China Hadoop Summit 2013)于北京福朋喜來登集團酒店隆重舉行。來自國內外各行業領域的近千名CIO、CTO、架構師、IT經理、咨詢顧問、工程師、Hadoop…

Oracle EBS數據定義移植工具:FNDLOAD

在實際的EBS二次開發中,我們經常會碰到需要在各個環境之間移植二次開發的程序對象以及數據定義,如在EBS二次開發中并發請求的定義會涉及到:可執行、并發程序、值集、請求組等的定義,定義需要從開發環境、測試環境、UAT環境一直到正…

21-特征匹配方法(Brute-Force蠻力匹配)

Brute-Force蠻力匹配 cv2.BFMatcher(crossCheck True) crossCheck表示兩個特征點相互匹配 例如A中的第i個特征點與B中的第j個特征點最近,并且B中的第j個特征點到A中的第i個特征點也是 NORM_L2:歸一化數組的(歐幾里得距離),如果其他特征計算…

weakhashmap_Java WeakHashMap values()方法與示例

weakhashmapWeakHashMap類values()方法 (WeakHashMap Class values() method) values() method is available in java.util package. values()方法在java.util包中可用。 values() method is used to get the values that exist in this map to be viewed in a collection. val…

Opencv——幾何空間變換(仿射變換和投影變換)

幾何空間變換【1】幾何變換(空間變換)簡述【2】變換矩陣知識簡述齊次坐標的概念幾何運算矩陣【3】圖像的仿射變換1、平移變換2、比例縮放3、旋轉4、對稱變換(不做展示)1、關于X軸變換2、關于Y軸變換3、關于直線YX變換4、關于直線Y…

用于主題檢測的臨時日志(e1784e6f-037e-45de-bad1-8bbc239818ee - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...

這是一個未刪除的臨時日志。請手動刪除它。(578392f7-2207-4b01-b36d-c483f0699988 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)轉載于:https://www.cnblogs.com/Fly-sky/archive/2011/03/03/1969850.html

probuffer java_Protocol Buffer的使用

Probotbuf簡介在網絡通信和通用數據交換等應用場景中經常使用的技術是 JSON 或 XML,這兩種技術常被用于數據的結構化呈現和序列化。我們可以從兩個方面來看JSON 和 XML與protobuf的異同:一個是數據結構化,一個是數據序列化。這里的數據結構化…

根據DbSchema生成代碼2

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Threading; using System.IO; using Rocky;namespace Rocky.CodeBuilder {public class DbBuilder : Disposable{#region 字段public even…