亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中replace into語句的用法詳解

 更新時間:2014年08月26日 10:55:51   投稿:junjie  
這篇文章主要介紹了MySQL中replace into語句的用法詳解,本文講解了replace into語句的多種寫法,replace into語句的作用等內(nèi)容,需要的朋友可以參考下

在向表中插入數(shù)據(jù)的時候,經(jīng)常遇到這樣的情況:

1、首先判斷數(shù)據(jù)是否存在;
2、如果不存在,則插入;
3、如果存在,則更新。
 
在 SQL Server 中可以這樣寫:

復(fù)制代碼 代碼如下:

if not exists (select 1 from table where id = 1) insert into table(id, update_time) values(1, getdate()) else update table set update_time = getdate() where id = 1

在MySQL 中也可以先select,判斷是否存在,存在則 update 否則 insert
但在MySQL 中有更簡單的方法,使用 replace into關(guān)鍵字
復(fù)制代碼 代碼如下:
replace into table(id, update_time) values(1, now());


復(fù)制代碼 代碼如下:

replace into table(id, update_time) select 1, now();

replace into 跟 insert 功能類似,不同點(diǎn)在于:replace into 首先嘗試插入數(shù)據(jù)到表中。

1、如果發(fā)現(xiàn)表中已經(jīng)有此行數(shù)據(jù)(根據(jù)主鍵或者唯一索引判斷)則先刪除此行數(shù)據(jù),然后插入新的數(shù)據(jù)。
2、 否則,直接插入新數(shù)據(jù)。

要注意的是:插入數(shù)據(jù)的表必須有主鍵或者是唯一索引!否則的話,replace into 會直接插入數(shù)據(jù),這將導(dǎo)致表中出現(xiàn)重復(fù)的數(shù)據(jù)。
 
MySQL中replace into有三種寫法:

復(fù)制代碼 代碼如下:

1. replace into table(col, ...) values(...)
2. replace into table(col, ...) select ...
3. replace into table set col=value, ...

前兩種形式用的多些。其中 “into” 關(guān)鍵字可以省略,不過最好加上 “into”,這樣意思更加直觀。
另外,對于那些沒有給予值的列,MySQL 將自動為這些列賦上默認(rèn)值。
 
可惜的是replace不支持update某些特性,也就不能直接當(dāng)作update使用:

常見update寫法:update table set col=col+1 where id=1;
使用replace into不支持這樣的寫法:replace into table set col=col+1,id=1;

1、首先判斷數(shù)據(jù)是否存在;(沒問題)
2、如果不存在,則插入;(沒問題)
3、如果存在,某字段值在原來的基礎(chǔ)上加上或減去某個數(shù),如加一操作。(不支持)

相關(guān)文章

  • mysql基礎(chǔ)架構(gòu)教程之查詢語句執(zhí)行的流程詳解

    mysql基礎(chǔ)架構(gòu)教程之查詢語句執(zhí)行的流程詳解

    這篇文章主要給大家介紹了關(guān)于mysql基礎(chǔ)架構(gòu)教程之查詢語句執(zhí)行流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-11-11
  • MySQL千萬級數(shù)據(jù)從190秒優(yōu)化到1秒的全過程

    MySQL千萬級數(shù)據(jù)從190秒優(yōu)化到1秒的全過程

    優(yōu)化MySQL千萬級數(shù)據(jù)策略還是比較多的,分表分庫,創(chuàng)建中間表,匯總表以及修改為多個子查詢,這里討論的情況是在MySQL一張表的數(shù)據(jù)達(dá)到千萬級別,在這樣的情況下,開發(fā)者可以嘗試通過優(yōu)化SQL來達(dá)到查詢的目的,所以本文給大家介紹了MySQL千萬級數(shù)據(jù)從190秒優(yōu)化到1秒的全過程
    2024-04-04
  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

    這篇文章主要介紹了聊聊MySQL的COUNT(*)的性能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • windows7下啟動mysql服務(wù)出現(xiàn)服務(wù)名無效的原因及解決方法

    windows7下啟動mysql服務(wù)出現(xiàn)服務(wù)名無效的原因及解決方法

    這篇文章主要介紹了windows7下啟動mysql服務(wù)出現(xiàn)服務(wù)名無效的原因及解決方法,需要的朋友可以參考下
    2014-06-06
  • 同時運(yùn)行多個MySQL服務(wù)器的方法

    同時運(yùn)行多個MySQL服務(wù)器的方法

    在同一臺機(jī)器上運(yùn)行多個有些情況下你可能想要在同一臺機(jī)器上運(yùn)行多個服務(wù)器。例如,你可能想要測試一個新的MySQL版本而讓你現(xiàn)有生產(chǎn)系統(tǒng)的設(shè)置不受到干擾, 或你可能是想要為不同的客戶提供獨(dú)立的MySQL安裝一個因特網(wǎng)服務(wù)供應(yīng)商。
    2008-05-05
  • SQLyog連接MySQL8.0+報(bào)錯:錯誤號碼2058的解決方案

    SQLyog連接MySQL8.0+報(bào)錯:錯誤號碼2058的解決方案

    本文將總結(jié)如何解決 SQLyog 連接 MySQL8.0+ 時報(bào)錯:錯誤號碼2058,文中通過圖文結(jié)合和代碼示例給大家總結(jié)了三種解決方案,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • MySQL中如何進(jìn)行SQL調(diào)優(yōu)舉例詳解

    MySQL中如何進(jìn)行SQL調(diào)優(yōu)舉例詳解

    這篇文章主要介紹了SQL調(diào)優(yōu)的幾種方法,包括合理設(shè)計(jì)索引,避免SELECT*,避免在SQL中進(jìn)行函數(shù)計(jì)算等操作,避免使用%LIKE,注意聯(lián)合索引需滿足最左匹配原則,不要對無索引字段進(jìn)行排序操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預(yù)想的數(shù)字順序排序呢
    2013-03-03
  • 詳解 Mysql中的delimiter定義及作用

    詳解 Mysql中的delimiter定義及作用

    delimiter是mysql分隔符,在mysql客戶端中分隔符默認(rèn)是分號(;)。如果一次輸入的語句較多,并且語句中間有分號,這時需要新指定一個特殊的分隔符。這篇文章給大家介紹了Mysql中的delimiter的作用,感興趣的朋友一起看看吧
    2018-09-09
  • Linux服務(wù)上MySQL啟動、重啟和關(guān)閉的操作方法

    Linux服務(wù)上MySQL啟動、重啟和關(guān)閉的操作方法

    MySQL是一種廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),常用于各種規(guī)模的應(yīng)用程序中,在Linux服務(wù)器上管理MySQL服務(wù)是一個基本的運(yùn)維任務(wù),本文將詳細(xì)介紹如何在Linux系統(tǒng)上啟動、重啟和關(guān)閉MySQL服務(wù),涵蓋不同Linux發(fā)行版(如Ubuntu和CentOS)的操作方法
    2024-11-11

最新評論