欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL Replace INTO的使用

 更新時(shí)間:2008年04月25日 15:03:07   作者:  
今天DST里面有個(gè)插件作者問(wèn)我關(guān)于Replace INTO和INSERT INTO的區(qū)別,我和他說(shuō)晚上上我的blog看吧,那時(shí)候還在忙,現(xiàn)在從MYSQL手冊(cè)里找了點(diǎn)東西,MYSQL手冊(cè)里說(shuō)REPLACE INTO說(shuō)的還是比較詳細(xì)的.
REPLACE的運(yùn)行與INSERT很相像。只有一點(diǎn)除外,如果表中的一個(gè)舊記錄與一個(gè)用于PRIMARY KEY或一個(gè)UNIQUE索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。請(qǐng)參見(jiàn)13.2.4節(jié),“INSERT語(yǔ)法”。

注意,除非表有一個(gè)PRIMARY KEY或UNIQUE索引,否則,使用一個(gè)REPLACE語(yǔ)句沒(méi)有意義。該語(yǔ)句會(huì)與INSERT相同,因?yàn)闆](méi)有索引被用于確定是否新行復(fù)制了其它的行。

所有列的值均取自在REPLACE語(yǔ)句中被指定的值。所有缺失的列被設(shè)置為各自的默認(rèn)值,這和INSERT一樣。您不能從當(dāng)前行中引用值,也不能在新行中使用值。如果您使用一個(gè)例如“SET col_name = col_name + 1”的賦值,則對(duì)位于右側(cè)的列名稱(chēng)的引用會(huì)被作為DEFAULT(col_name)處理。因此,該賦值相當(dāng)于SET col_name = DEFAULT(col_name) + 1。


為了能夠使用REPLACE,您必須同時(shí)擁有表的INSERT和DELETE權(quán)限。

REPLACE語(yǔ)句會(huì)返回一個(gè)數(shù),來(lái)指示受影響的行的數(shù)目。該數(shù)是被刪除和被插入的行數(shù)的和。如果對(duì)于一個(gè)單行REPLACE該數(shù)為1,則一行被插入,同時(shí)沒(méi)有行被刪除。如果該數(shù)大于1,則在新行被插入前,有一個(gè)或多個(gè)舊行被刪除。如果表包含多個(gè)唯一索引,并且新行復(fù)制了在不同的唯一索引中的不同舊行的值,則有可能是一個(gè)單一行替換了多個(gè)舊行。

受影響的行數(shù)可以容易地確定是否REPLACE只添加了一行,或者是否REPLACE也替換了其它行:檢查該數(shù)是否為1(添加)或更大(替換)。

如果您正在使用C API,則可以使用mysql_affected_rows()函數(shù)獲得受影響的行數(shù)。

目前,您不能在一個(gè)子查詢(xún)中,向一個(gè)表中更換,同時(shí)從同一個(gè)表中選擇。

以下是所用算法的更詳細(xì)的說(shuō)明(該算法也用于LOAD DATA…REPLACE):

1. 嘗試把新行插入到表中

2. 當(dāng)因?yàn)閷?duì)于主鍵或唯一關(guān)鍵字出現(xiàn)重復(fù)關(guān)鍵字錯(cuò)誤而造成插入失敗時(shí):

a. 從表中刪除含有重復(fù)關(guān)鍵字值的沖突行

b. 再次嘗試把新行插入到表中

今天喉嚨疼死我了,閃人睡覺(jué)去.

使用格式:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,…)]
VALUES ({expr | DEFAULT},…),(…),…
或:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
或:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,…)]
SELECT … 

相關(guān)文章

  • 圖文詳解Mysql索引的最左前綴原則

    圖文詳解Mysql索引的最左前綴原則

    最左前綴原則是發(fā)生在復(fù)合索引上的,只有復(fù)合索引才會(huì)有所謂的左和右之分,下面這篇文章主要給大家介紹了關(guān)于Mysql索引的最左前綴原則的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • MySQL高可用MMM方案安裝部署分享

    MySQL高可用MMM方案安裝部署分享

    這篇文章主要介紹了MySQL高可用MMM方案安裝部署方法,需要的朋友可以參考下
    2014-02-02
  • mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法

    mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法

    mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法,需要的朋友可以參考一下
    2013-04-04
  • Mysql修改server uuid的方法分享

    Mysql修改server uuid的方法分享

    這篇文章主要給大家介紹了關(guān)于Mysql修改server uuid的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • MYSQL必知必會(huì)讀書(shū)筆記第三章之顯示數(shù)據(jù)庫(kù)

    MYSQL必知必會(huì)讀書(shū)筆記第三章之顯示數(shù)據(jù)庫(kù)

    MySQL是一種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫(kù)系統(tǒng)使用最常用的數(shù)據(jù)庫(kù)管理語(yǔ)言--結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)進(jìn)行數(shù)據(jù)庫(kù)管理。接下來(lái)通過(guò)本文給大家介紹MYSQL必知必會(huì)讀書(shū)筆記第三章之顯示數(shù)據(jù)庫(kù),感興趣的朋友參考下吧
    2016-05-05
  • windows下安裝mysql8.0.18的教程(社區(qū)版)

    windows下安裝mysql8.0.18的教程(社區(qū)版)

    本文章簡(jiǎn)單介紹一下mysql在windows下的安裝方式,主要介紹了mysql社區(qū)版8.0.18版本,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2020-01-01
  • SQL字符串以及數(shù)字常用操作匯總

    SQL字符串以及數(shù)字常用操作匯總

    本篇文章是對(duì)SQL字符串以及數(shù)字的常用操作進(jìn)行了詳細(xì)的總結(jié)與分析,需要的朋友參考下
    2013-06-06
  • 修改MySQL的數(shù)據(jù)庫(kù)引擎為INNODB的方法

    修改MySQL的數(shù)據(jù)庫(kù)引擎為INNODB的方法

    本文主要介紹了修改MySQL的數(shù)據(jù)庫(kù)引擎為INNODB的方法,希望能對(duì)您有所幫助。
    2015-09-09
  • 修改MYSQL密碼的幾種常用方法總結(jié)

    修改MYSQL密碼的幾種常用方法總結(jié)

    以下是對(duì)修改MYSQL密碼的幾種常用方法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • Mysql中通用表達(dá)式WITH?AS語(yǔ)句的使用實(shí)例代碼

    Mysql中通用表達(dá)式WITH?AS語(yǔ)句的使用實(shí)例代碼

    with as也叫子查詢(xún),用來(lái)定義一個(gè)sql片段,且該片段會(huì)被整個(gè)sql語(yǔ)句反復(fù)使用很多次,這個(gè)sql片段就相當(dāng)于是一個(gè)公用臨時(shí)表,下面這篇文章主要給大家介紹了關(guān)于Mysql中通用表達(dá)式WITH?AS語(yǔ)句使用的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論