最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中幾種插入和批量語(yǔ)句實(shí)例詳解

 更新時(shí)間:2021年09月13日 15:42:33   作者:胖先森  
這篇文章主要給大家介紹了關(guān)于MySQL中幾種插入和批量語(yǔ)句的相關(guān)資料,在mysql數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)批量插入數(shù)據(jù)與批量更新數(shù)據(jù)的例子,即批量insert、update的方法,需要的朋友可以參考下

前言

最常見的方式就是為字段設(shè)置主鍵或唯一索引,當(dāng)插入重復(fù)數(shù)據(jù)時(shí),拋出錯(cuò)誤,程序終止,但這會(huì)給后續(xù)處理帶來麻煩,因此需要對(duì)插入語(yǔ)句做特殊處理,盡量避開或忽略異常,下面我簡(jiǎn)單介紹一下,感興趣的朋友可以嘗試一下:

這里為了方便演示,我新建了一個(gè)user測(cè)試表,主要有id,username,sex,address這4個(gè)字段,其中主鍵為id(自增),同時(shí)對(duì)username字段設(shè)置了唯一索引(idx_username)

1.insert ignore into

即插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則忽略此次插入,前提條件是插入的數(shù)據(jù)字段設(shè)置了主鍵或唯一索引,測(cè)試SQL語(yǔ)句如下,當(dāng)插入本條數(shù)據(jù)時(shí),MySQL數(shù)據(jù)庫(kù)會(huì)首先檢索已有數(shù)據(jù)(也就是idx_username索引),如果存在,則忽略本次插入,如果不存在,則正常插入數(shù)據(jù):

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

2.on duplicate key update

即插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則執(zhí)行更新操作,前提條件同上,也是插入的數(shù)據(jù)字段設(shè)置了主鍵或唯一索引,測(cè)試SQL語(yǔ)句如下,當(dāng)插入本條記錄時(shí),MySQL數(shù)據(jù)庫(kù)會(huì)首先檢索已有數(shù)據(jù)(idx_username索引),如果存在,則執(zhí)行update更新操作,如果不存在,則直接插入:

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')
on duplicate key update
SEX='boy',address='HongKong'

3.replace into

即插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則刪除再插入,前提條件同上,插入的數(shù)據(jù)字段需要設(shè)置主鍵或唯一索引,測(cè)試SQL語(yǔ)句如下,當(dāng)插入本條記錄時(shí),MySQL數(shù)據(jù)庫(kù)會(huì)首先檢索已有數(shù)據(jù)(idx_username索引),如果存在,則先刪除舊數(shù)據(jù),然后再插入,如果不存在,則直接插入:

REPLACE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

4.insert if not exists

即 insert into … select … where not exist ... ,這種方式適合于插入的數(shù)據(jù)字段沒有設(shè)置主鍵或唯一索引,當(dāng)插入一條數(shù)據(jù)時(shí),首先判斷MySQL數(shù)據(jù)庫(kù)中是否存在這條數(shù)據(jù),如果不存在,則正常插入,如果存在,則忽略:

INSERT  INTO user (username,sex,address) 
SELECT 'hanpang','boy','HongKong' FROM user
WHERE NOT EXISTS (SELECT username FROM user WHERE username='hanpang')

5.批量插入數(shù)據(jù)

上述的插入語(yǔ)句,是可以使用批量插入語(yǔ)句,表數(shù)據(jù)結(jié)構(gòu):

CREATE TABLE example (
    example_id INT NOT NULL,
    name VARCHAR( 50 ) NOT NULL,
    value VARCHAR( 50 ) NOT NULL,
    other_value VARCHAR( 50 ) NOT NULL
)

個(gè)人習(xí)慣使用這種批量操作方式,進(jìn)行SQL語(yǔ)句拼接,但是當(dāng)你的字符串太長(zhǎng)(百萬數(shù)據(jù))的時(shí)候,需要你對(duì)mysql設(shè)置指令:

INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

實(shí)際開發(fā)中,我們更加喜歡使用通過程序代碼進(jìn)行批量添加操作(使用事務(wù)提交,批量插入數(shù)據(jù)庫(kù)),使用上述的方式在插入測(cè)試數(shù)據(jù)或者其他低要求時(shí)比較合適,速度確實(shí)快。

6.批量更新

(1)replace into 批量更新(記得要有主鍵或者索引)

INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

(2)insert into ...on duplicate key update批量更新

使用INSERT的時(shí)候 有表T(id,A,B,C,D)

插入的時(shí)候希望通過A,B索引唯一記錄 ,有重復(fù)的時(shí)候更新C,D

INSERT INTO T(A,B,C,D) VALUES (a,b,c,d) ON DUPLICATE KEY UPDATE C=C+1,D=d 

(3)使用mysql 自帶的語(yǔ)句構(gòu)建批量更新

UPDATE yoiurtable
	SET dingdan = CASE id 
		WHEN 1 THEN 3 
		WHEN 2 THEN 4
		WHEN 3 THEN 5 
		END
WHERE id IN (1,2,3)

(4)創(chuàng)建臨時(shí)表,先更新臨時(shí)表,然后從臨時(shí)表中update

create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

總結(jié)

到此這篇關(guān)于MySQL中幾種插入和批量語(yǔ)句的文章就介紹到這了,更多相關(guān)MySQL插入和批量語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解MySQL主從不一致情形與解決方法

    詳解MySQL主從不一致情形與解決方法

    這篇文章主要介紹了詳解MySQL主從不一致情形與解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • MySQL使用中遇到的問題記錄

    MySQL使用中遇到的問題記錄

    本文給大家匯總介紹了作者在mysql的使用過程中遇到的問題以及最終的解決方案,非常的實(shí)用,有需要的小伙伴可以參考下
    2017-11-11
  • 關(guān)于mysql數(shù)據(jù)庫(kù)格式化簡(jiǎn)單介紹

    關(guān)于mysql數(shù)據(jù)庫(kù)格式化簡(jiǎn)單介紹

    本文將介紹關(guān)于mysql數(shù)據(jù)庫(kù)格式化時(shí)需要注意的一些問題,需要的朋友可以參考下
    2012-11-11
  • MySQL 在線解密的實(shí)現(xiàn)

    MySQL 在線解密的實(shí)現(xiàn)

    本文主要介紹了MySQL在線解密的實(shí)現(xiàn),通過使用MySQL提供的加密函數(shù)和自定義解密函數(shù),我們可以在數(shù)據(jù)庫(kù)中進(jìn)行在線解密操作,下面就來具體介紹一下,感興趣的可以了解一下
    2024-08-08
  • MySQL復(fù)制表常用的四種方式小結(jié)

    MySQL復(fù)制表常用的四種方式小結(jié)

    mysql?想必大家比較熟悉了,我們常見的crud??sql想必大家也是手到拈來,但可能會(huì)有人不會(huì)寫mysql中復(fù)制表,所以接下來本文我會(huì)介紹四種常用的復(fù)制表的方式,需要的朋友可以參考下
    2023-07-07
  • MySQL limit使用方法以及超大分頁(yè)問題解決

    MySQL limit使用方法以及超大分頁(yè)問題解決

    這篇文章主要給大家介紹了關(guān)于MySQL limit使用方法以及超大分頁(yè)問題解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析

    數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析

    這篇文章主要介紹了數(shù)據(jù)庫(kù)中的sql完整性約束語(yǔ)句解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SQL中的開窗函數(shù)(窗口函數(shù))

    SQL中的開窗函數(shù)(窗口函數(shù))

    這篇文章主要介紹了SQL中的開窗函數(shù)(窗口函數(shù))使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL8 全文索引的實(shí)現(xiàn)方法

    MySQL8 全文索引的實(shí)現(xiàn)方法

    MySQL8支持全文索引和全文搜索,本文主要介紹了MySQL8全文索引的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Mysql徹底解決中文亂碼問題的方案(Illegal mix of collations for operation)

    Mysql徹底解決中文亂碼問題的方案(Illegal mix of collations for operation)

    mysql數(shù)據(jù)庫(kù)和中文支持很不友好,經(jīng)常見到“Illegal mix of collations for operation”錯(cuò)誤,該如何解決呢?下面小編給大家?guī)砹薽ysql數(shù)據(jù)庫(kù)中涉及到哪些字符集及徹底解決中文亂碼的解決方案,非常不錯(cuò),一起看看吧
    2016-08-08

最新評(píng)論

左权县| 怀仁县| 黑河市| 绥棱县| 马关县| 新巴尔虎右旗| 根河市| 瓮安县| 临沂市| 宣恩县| 印江| 阿拉善右旗| 阳江市| 河东区| 安岳县| 安阳县| 辽源市| 侯马市| 文山县| 武冈市| 湘西| 嘉兴市| 宁化县| 阿克苏市| 山丹县| 英山县| 锡林浩特市| 辽阳市| 贡觉县| 平山县| 宝丰县| 贺兰县| 双鸭山市| 汉沽区| 宝山区| 玛多县| 牡丹江市| 达州市| 中超| 翼城县| 农安县|