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

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 中可以這樣寫:

復制代碼 代碼如下:

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關鍵字
復制代碼 代碼如下:
replace into table(id, update_time) values(1, now());


復制代碼 代碼如下:

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

replace into 跟 insert 功能類似,不同點在于: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ù),這將導致表中出現(xiàn)重復的數(shù)據(jù)。
 
MySQL中replace into有三種寫法:

復制代碼 代碼如下:

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

前兩種形式用的多些。其中 “into” 關鍵字可以省略,不過最好加上 “into”,這樣意思更加直觀。
另外,對于那些沒有給予值的列,MySQL 將自動為這些列賦上默認值。
 
可惜的是replace不支持update某些特性,也就不能直接當作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、如果存在,某字段值在原來的基礎上加上或減去某個數(shù),如加一操作。(不支持)

相關文章

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

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

    這篇文章主要給大家介紹了關于mysql基礎架構(gòu)教程之查詢語句執(zhí)行流程的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    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ù)達到千萬級別,在這樣的情況下,開發(fā)者可以嘗試通過優(yōu)化SQL來達到查詢的目的,所以本文給大家介紹了MySQL千萬級數(shù)據(jù)從190秒優(yōu)化到1秒的全過程
    2024-04-04
  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

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

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

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

    同時運行多個MySQL服務器的方法

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

    SQLyog連接MySQL8.0+報錯:錯誤號碼2058的解決方案

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

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

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

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

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

    詳解 Mysql中的delimiter定義及作用

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

    Linux服務上MySQL啟動、重啟和關閉的操作方法

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

最新評論