偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

推薦MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

新聞 數(shù)據(jù)庫(kù)運(yùn)維
我們?cè)?MySQL數(shù)據(jù)庫(kù)進(jìn)行表設(shè)計(jì)時(shí),為了防止表中存在重復(fù)數(shù)據(jù),我們通常會(huì)設(shè)置指定的字段為 主鍵索引(PRIMARY KEY)或者 唯一索引(UNIQUE KEY)索引來保證數(shù)據(jù)的唯一性。

我們?cè)?nbsp;MySQL數(shù)據(jù)庫(kù)進(jìn)行表設(shè)計(jì)時(shí),為了防止表中存在重復(fù)數(shù)據(jù),我們通常會(huì)設(shè)置指定的字段為 主鍵索引(PRIMARY KEY)或者 唯一索引(UNIQUE KEY)索引來保證數(shù)據(jù)的唯一性。

如果我們?cè)O(shè)置了唯一索引,當(dāng)在寫入重復(fù)數(shù)據(jù)時(shí),SQL 語(yǔ)句將無法執(zhí)行成功,并拋出錯(cuò)誤。

因此,我們通常在進(jìn)行 MySQL數(shù)據(jù)庫(kù)寫入數(shù)據(jù)操作時(shí),會(huì)考慮如何避免數(shù)據(jù)的重復(fù)寫入或者因重復(fù)數(shù)據(jù)寫入導(dǎo)致運(yùn)行出錯(cuò),拋出異常。

在 MySQL數(shù)據(jù)庫(kù)中通常使用以下4種方式可以防止數(shù)據(jù)的重復(fù)寫入。本文我們將以 user_basic_infor 表為例(建表SQL語(yǔ)句如下),分別分享如何使用這幾種方式避免重復(fù)數(shù)據(jù)的寫入。

MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

insert ignore into

如上建表語(yǔ)句,在 user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數(shù)據(jù)具的唯一性,為避免重復(fù)寫入數(shù)據(jù)可以使用 insert ignore into 語(yǔ)法,如下:

MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

當(dāng)使用 insert ignore 寫入數(shù)據(jù)時(shí),如果出現(xiàn)錯(cuò)誤,如重復(fù)數(shù)據(jù),將不返回錯(cuò)誤,僅以警告形式返回。也就是 insert ignore 會(huì)忽略數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù),如果寫入新數(shù)據(jù)后不會(huì)導(dǎo)致重復(fù),那么寫入新的數(shù)據(jù),如果寫入新數(shù)據(jù)后會(huì)導(dǎo)致重復(fù),那么就跳過這行新數(shù)據(jù)。

需要注意的是,使用 insert ignore 時(shí),請(qǐng)確保SQL語(yǔ)句本身沒有問題,否則也將會(huì)被忽略掉。

on duplicate key update

同樣,在 user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數(shù)據(jù)具的唯一性,為避免重復(fù)寫入數(shù)據(jù)也可以使用 on duplicate key update 語(yǔ)法,如下:

MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

如果在 insert 語(yǔ)句末尾指定了on duplicate key update ……,并且寫入行后將導(dǎo)致在主鍵索引(PRIMARY KEY)或者唯一索引(UNIQUE KEY)中出現(xiàn)重復(fù)值時(shí),則對(duì)重復(fù)值所在的行執(zhí)行update ,如果不會(huì)導(dǎo)致唯一值列重復(fù)的問題,則寫入該新行。

replace into

同樣,在 user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數(shù)據(jù)具的唯一性,為避免重復(fù)寫入數(shù)據(jù)也可以使用replace into 語(yǔ)法,如下:

MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

replace 嘗試把新行寫入到表中,當(dāng)如果寫入數(shù)據(jù)的主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)出現(xiàn)重復(fù),導(dǎo)致報(bào)錯(cuò)而造成寫入失敗時(shí),會(huì)先從表中刪除原有涉及到重復(fù)的行,然后再次嘗試把新行寫入到表中,這種方法就是無論原來有沒有相同的數(shù)據(jù),都會(huì)先刪除再執(zhí)行寫入。

insert … select … where not exist ……

除此之外,在 MySQL數(shù)據(jù)庫(kù)中,寫入一條數(shù)據(jù),我們可以先檢查這條數(shù)據(jù)是否已經(jīng)存在,當(dāng)數(shù)據(jù)不存在時(shí)再執(zhí)行寫入操作,這樣可以不只通過主鍵索引(PRIMARY KEY)或者唯一索引(UNIQUE KEY)來判斷,也可通過其它條件,如下:

MySQL數(shù)據(jù)庫(kù)中避免寫入重復(fù)數(shù)據(jù)的4種方式

 

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2024-01-04 10:00:13

數(shù)據(jù)庫(kù)性能

2011-03-14 15:47:33

Oracle數(shù)據(jù)庫(kù)

2009-01-11 17:32:03

Oracle數(shù)據(jù)庫(kù)重復(fù)數(shù)據(jù)

2011-04-13 14:38:17

2010-05-07 15:48:38

Oracle數(shù)據(jù)庫(kù)

2010-04-30 16:19:08

Oracle數(shù)據(jù)庫(kù)

2011-05-24 10:54:15

數(shù)據(jù)庫(kù)重復(fù)數(shù)據(jù)刪除

2010-04-08 16:28:07

Oracle數(shù)據(jù)庫(kù)

2018-09-11 17:13:23

MySQ數(shù)據(jù)庫(kù)重復(fù)記錄

2024-10-16 18:09:54

2010-04-15 15:52:12

Oracle數(shù)據(jù)庫(kù)

2019-08-07 09:52:34

數(shù)據(jù)庫(kù)MySQLSQL

2021-01-26 13:40:44

mysql數(shù)據(jù)庫(kù)

2011-05-13 13:38:49

數(shù)據(jù)庫(kù)對(duì)象

2011-05-24 14:13:20

Oracle數(shù)據(jù)庫(kù)

2019-03-06 14:06:26

MySQL數(shù)據(jù)庫(kù)亂碼

2021-11-30 10:00:01

SQL數(shù)據(jù)重復(fù)

2011-08-04 12:49:31

SQL Server數(shù)重復(fù)數(shù)據(jù)

2010-05-26 17:05:48

MySQL數(shù)據(jù)類型

2010-04-13 10:15:17

Oracle數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)