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

MySQL中replace into語(yǔ)句的用法詳解

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

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

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

復(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 中有更簡(jiǎn)單的方法,使用 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 功能類(lèi)似,不同點(diǎn)在于:replace into 首先嘗試插入數(shù)據(jù)到表中。

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

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

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

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

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

常見(jiàn)update寫(xiě)法:update table set col=col+1 where id=1;
使用replace into不支持這樣的寫(xiě)法:replace into table set col=col+1,id=1;

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

相關(guān)文章

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

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

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

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

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

    聊聊MySQL的COUNT(*)的性能

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

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

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

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

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

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

    本文將總結(jié)如何解決 SQLyog 連接 MySQL8.0+ 時(shí)報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058,文中通過(guò)圖文結(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)合索引需滿(mǎn)足最左匹配原則,不要對(duì)無(wú)索引字段進(jìn)行排序操作,文中通過(guò)代碼介紹的非常詳細(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客戶(hù)端中分隔符默認(rèn)是分號(hào)(;)。如果一次輸入的語(yǔ)句較多,并且語(yǔ)句中間有分號(hào),這時(shí)需要新指定一個(gè)特殊的分隔符。這篇文章給大家介紹了Mysql中的delimiter的作用,感興趣的朋友一起看看吧
    2018-09-09
  • Linux服務(wù)上MySQL啟動(dòng)、重啟和關(guān)閉的操作方法

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

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

最新評(píng)論