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

MySQL中的insert ignore into使用

 更新時(shí)間:2022年08月18日 10:37:20   作者:一縷陽光a  
這篇文章主要介紹了MySQL中的insert ignore into使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL中的insert ignore into

最近工作中,使用到了insert ignore into語法,感覺這個(gè)語法還是挺有用的,就記錄下來做個(gè)總結(jié)。

  • insert ignore into : 忽略重復(fù)的記錄,直接插入數(shù)據(jù)。

包括兩種場景:

1、插入的數(shù)據(jù)是主鍵沖突時(shí)

insert ignore into會(huì)給出warnings,show warnings就可以看到提示主鍵沖突;

[test]> create table tt(c1 int primary key, c2 varchar(50))engine = xx;
Query OK, 0 rows affected (0.21 sec)
?
[test]> insert into tt values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3 ?Duplicates: 0 ?Warnings: 0
?
[test]> select * from tt;
+----+------+
| c1 | c2 ? |
+----+------+
| ?1 | aaa ?|
| ?2 | bbb ?|
| ?3 | ccc ?|
+----+------+
3 rows in set (0.01 sec)
?
[test]>?
[test]> insert ignore into tt values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 0 rows affected, 3 warnings (0.01 sec)
Records: 3 ?Duplicates: 3 ?Warnings: 3
?
[test]>?
[test]> select * from tt;
+----+------+
| c1 | c2 ? |
+----+------+
| ?1 | aaa ?|
| ?2 | bbb ?|
| ?3 | ccc ?|
+----+------+
3 rows in set (0.00 sec)

使用insert ignore into語句時(shí),如果主鍵沖突,只是提示"warnings"。

如果使用insert into語句時(shí),如果主鍵沖突直接報(bào)錯(cuò)。

2、沒有主鍵沖突時(shí),直接插入數(shù)據(jù)

insert into 與 insert ignore into 都是直接插入數(shù)據(jù)

[test]> create table t2(c1 int, c2 varchar(50))engine = xxx;
Query OK, 0 rows affected (0.05 sec)
?
[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.03 sec)
Records: 3 ?Duplicates: 0 ?Warnings: 0
?
GreatDB Cluster[test]> select * from t2;
+------+------+
| c1 ? | c2 ? |
+------+------+
| ? ?1 | aaa ?|
| ? ?2 | bbb ?|
| ? ?3 | ccc ?|
+------+------+
3 rows in set (0.00 sec)
?
[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3 ?Duplicates: 0 ?Warnings: 0
?
?
[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3 ?Duplicates: 0 ?Warnings: 0
?
[test]> select * from t2;
+------+------+
| c1 ? | c2 ? |
+------+------+
| ? ?1 | aaa ?|
| ? ?2 | bbb ?|
| ? ?3 | ccc ?|
| ? ?1 | aaa ?|
| ? ?2 | bbb ?|
| ? ?3 | ccc ?|
| ? ?1 | aaa ?|
| ? ?2 | bbb ?|
| ? ?3 | ccc ?|
+------+------+
9 rows in set (0.00 sec)
?
[test]> insert ignore into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.03 sec)
Records: 3 ?Duplicates: 0 ?Warnings: 0

因此,insert ignore into主要是忽略重復(fù)的記錄,直接插入數(shù)據(jù)。

insert ignore into--跳坑

首先,SQL語句:

<insert id="addTerm" parameterType="String">
        insert ignore into term(term) VALUES (#{term})
</insert>

然后,數(shù)據(jù)庫表:

                                 

簡單的不能再簡單的一張表:解釋一下,id是自增的,同時(shí)也是主鍵,term就是term嘍,其他的外鍵、索引什么的都沒有。

要求是:不能使term重復(fù)插入;

剛開始認(rèn)為就是判斷的插入的數(shù)據(jù)是否重復(fù),然后發(fā)現(xiàn)不是這樣的,它判斷的是主鍵或者索引是否重復(fù)(更準(zhǔn)確的來說是忽略主鍵沖突時(shí)報(bào)的錯(cuò)誤)。

所以在這里要說說這個(gè)自增的id了,因?yàn)樵趇nsert ignore into插入的時(shí)候你的現(xiàn)在將要插入的數(shù)據(jù)的id已經(jīng)是增加一了,所以你的這個(gè)自增主鍵id是無論如何也不能相等的,所以自然你的數(shù)據(jù)也就不會(huì)聽話的把重復(fù)的數(shù)據(jù)不插入,這也就是為什么,即使ignore時(shí)沒有插入數(shù)據(jù)它的自增的鍵也會(huì)跳過,所以這個(gè)要注意。

解決辦法就是添加個(gè)索引就歐克了唄

因?yàn)橹貜?fù)的時(shí)候它的自增的鍵依然會(huì)增加,所以當(dāng)數(shù)據(jù)的重復(fù)率很高的時(shí)候,可以考慮把自增的鍵搞成自己控制的一個(gè)因素,手動(dòng)自增,豈不美滋滋?

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL中or語句用法示例

    MySQL中or語句用法示例

    這篇文章主要介紹了MySQL中or語句用法示例,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • Win7 安裝 Mysql 5.6的教程圖解

    Win7 安裝 Mysql 5.6的教程圖解

    這篇文章主要介紹了Win7 安裝 Mysql 5.6的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 詳解MySQL alter ignore 語法

    詳解MySQL alter ignore 語法

    這篇文章主要介紹了MySQL alter ignore 語法的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-11-11
  • MySQL中的時(shí)區(qū)設(shè)置方式

    MySQL中的時(shí)區(qū)設(shè)置方式

    這篇文章主要介紹了MySQL中的時(shí)區(qū)設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MySQL中使用SHOW PROFILE命令分析性能的用法整理

    MySQL中使用SHOW PROFILE命令分析性能的用法整理

    這篇文章主要介紹了MySQL中使用show profile命令分析性能的用法整理,show profiles是數(shù)據(jù)庫性能優(yōu)化的常用命令,需要的朋友可以參考下
    2015-11-11
  • Mysql 切換數(shù)據(jù)存儲(chǔ)目錄的實(shí)現(xiàn)方法

    Mysql 切換數(shù)據(jù)存儲(chǔ)目錄的實(shí)現(xiàn)方法

    這篇文章主要介紹了Mysql 切換數(shù)據(jù)存儲(chǔ)目錄的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • MySQL數(shù)據(jù)庫如何開啟遠(yuǎn)程連接(多備份)

    MySQL數(shù)據(jù)庫如何開啟遠(yuǎn)程連接(多備份)

    多備份服務(wù)器在備份你的數(shù)據(jù)庫時(shí),必須能夠遠(yuǎn)程連接上你的數(shù)據(jù)庫。但是一般來說mysql安裝時(shí)都是關(guān)閉遠(yuǎn)程連接的,因此,需要你開通mysql數(shù)據(jù)庫的遠(yuǎn)程訪問權(quán)限。那么如何開啟呢
    2015-01-01
  • 高性能MySQL讀書筆記 找出誰持有鎖

    高性能MySQL讀書筆記 找出誰持有鎖

    周末重讀了一遍《高性能MySQL》,發(fā)現(xiàn)有些知識(shí)點(diǎn)看過便忘了,沒有實(shí)際動(dòng)手操作一遍就是記不牢,所以今天動(dòng)手操作了一下“找出誰持有鎖”,并把實(shí)驗(yàn)步驟記錄下來,有興趣的網(wǎng)友可以參照一二。
    2011-01-01
  • MySQL數(shù)據(jù)庫定時(shí)備份的實(shí)現(xiàn)方法

    MySQL數(shù)據(jù)庫定時(shí)備份的實(shí)現(xiàn)方法

    這篇文章主要介紹了MySQL數(shù)據(jù)庫的定時(shí)備份的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 親手教你SQLyog12.08安裝詳細(xì)教程

    親手教你SQLyog12.08安裝詳細(xì)教程

    SQLyog?是一個(gè)快速而簡潔的圖形化管理MYSQL數(shù)據(jù)庫的工具,它能夠在任何地點(diǎn)有效地管理你的數(shù)據(jù)庫,這篇文章主要介紹了SQLyog12.08安裝詳細(xì)教程,需要的朋友可以參考下
    2023-04-04

最新評論