成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL如何實現無數據插入,有數據更新?我是這樣回答的!

數據庫 MySQL
作者個人研發的在高并發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。

 [[339489]]

作者個人研發的在高并發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:

https://github.com/sunshinelyz/mykit-delay

寫在前面

馬上就是金九銀十的跳槽黃金期了,很多讀者都開始出去面試了。這不,又一名讀者出去面試被面試官問了一個MySQL的問題:向MySQL中插入數據,如何實現MySQL中沒有當前id標識的數據時插入數據,有當前id標識的數據時更新數據。其實,這題目一點也不難!!

先來個簡單題目

正式回答這個面試題時,我們先來看一個簡單點的題目:如何實現向MySQL中插入數據時,存在則忽略,不存在就插入?其實,這個簡單點的題目與標題的題目有相同的地方:都是MySQL中不存在待插入的數據時,就將待插入的數據插入到MySQL中。不同點是:標題中的題目是存在待插入的數據時執行更新操作,而這個簡單點的題目是存在待插入的數據時直接忽略,不執行任何操作。

我們先來回答這個簡單點的題目。其實,在面試過程中,我們需要揣測面試官的心理,很顯然,這里,面試官是想問如何通過SQL語句來實現,并且這樣的題目往往都會有一個前置條件:那就是數據表中必須存在唯一鍵,也就是唯一索引。如果你回答的是你寫了一段Java代碼或者C語言代碼來實現,那你就基本被pass了。這沒得說,因為你回答的方向與面試預期的方向不同!

關于這個簡單點的題目,我們可以使用insert ignore語句實現。語法格式如下所示。

  1. insert ignore into table(col1,col2) values ('value1','value2'); 

比如,我們執行如下SQL語句向MySQL中插入數據。

  1. insert ignore into user_info (last_name,first_name) values ('binghe','binghe'); 

這樣一來,如果表中已經存在last_name='binghe'且first_name='binghe'的數據,就不會插入,如果沒有就會插入一條新數據。

上面的是一種用法,也可以用 INSERT .... SELECT 語句來實現,這里就不舉例了。

分析標題題目

接下來,我們再來看標題中的題目,向MySQL中插入數據,存在就更新,不存在則插入。本質上數據表中還是需要存在唯一鍵,也就是唯一索引的。往往在面試中,面試官都會默許存在這些前置條件。

這里,有兩種方法可以實現這個效果。一種方法是結合INSERT語句和ON DUPLICATE KEY UPDATE語句實現,另一種方法是通過REPLACE語句實現。

INSERT語句和ON DUPLICATE KEY UPDATE語句實現

如果指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行UPDATE。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個語句具有相同的效果:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。

REPLACE語句實現

使用REPLACE的最大好處就是可以將DELETE和INSERT合二為一,形成一個原子操作。這樣就可以不必考慮在同時使用DELETE和INSERT時添加事務等復雜操作了。在使用REPLACE時,表中必須有唯一索引,而且這個索引所在的字段不能允許空值,否則REPLACE就和INSERT完全一樣的。在執行REPLACE后,系統返回了所影響的行數,如果返回1,說明在表中并沒有重復的記錄,如果返回2,說明有一條重復記錄,系統自動先調用了DELETE刪除這條記錄,然后再記錄用INSERT來插入這條記錄。

語法和INSERT非常的相似,如下面的REPLACE語句是插入或更新一條記錄。

  1. REPLACE INTO users (id,name,age) VALUES(1, 'binghe', 18);  

本文轉載自微信公眾號「冰河技術」,可以通過以下二維碼關注。轉載本文請聯系冰河技術公眾號。

 

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2020-07-01 08:04:13

運維數據場景

2016-12-28 14:51:46

大數據應用

2011-08-11 14:35:47

SQL Server插入更新

2020-04-24 21:41:45

MySQL數據庫插入數據

2021-01-05 08:59:01

InnoDB數據磁盤

2022-04-19 07:31:28

事務隔離機制數據庫

2013-12-27 13:32:48

數據泄露百度輸入法日本

2021-02-01 15:51:45

數據可視化圖表項目

2021-04-08 10:55:53

MySQL數據庫代碼

2011-07-28 17:02:59

MYSQL數據庫跨表更新數據并合

2010-11-23 13:51:55

MySQL數據表

2011-08-11 09:49:33

SQL Server 存儲過程插入更新數據

2019-08-23 09:20:35

Spring 5編程Java

2010-09-09 15:32:48

SQL插入數據

2013-01-10 12:57:23

產品經理App產品設計

2013-06-17 11:21:27

2015-06-24 10:07:56

數據泄露

2010-06-12 10:22:15

MySQL插入數據

2024-07-04 13:42:12

2009-09-17 08:47:00

Linq插入數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产一区二区电影 | 日本精品视频在线 | 欧美国产91| 最近中文字幕第一页 | 红桃视频一区二区三区免费 | 久久精品二区 | 国产成人精品久久二区二区91 | 国产精品久久亚洲7777 | 国产伦精品一区二区三区精品视频 | 狠狠色狠狠色综合日日92 | 国产精品美女久久久久久免费 | www.成人在线视频 | h肉视频 | 狠狠操在线 | 成人久久久 | 99久久99| 在线播放中文字幕 | 天堂一区| 久国产视频 | 999久久久久久久久6666 | 久久久久www | 天天干天天操天天射 | 黄色综合| 久久av资源网| 啪一啪| 亚洲欧美在线一区 | 久久99精品久久久久久国产越南 | 免费一级黄色电影 | 国产精品久久久久久久久久久新郎 | 日日做夜夜爽毛片麻豆 | 91精品国产一区二区在线观看 | 日韩中文字幕 | 欧美综合一区二区 | 99久久婷婷国产精品综合 | 亚洲草草视频 | 亚洲视频中文字幕 | 一起操网站 | 久久久精品视频一区二区三区 | 国产精品久久久久久久久久 | 国产一区二区三区在线看 | 精品日韩一区 |