首頁 資料庫 mysql教程 mysql insert 语法_MySQL

mysql insert 语法_MySQL

Jun 01, 2016 pm 01:51 PM
文法

INSERT语法INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE]       [INTO]tbl_name[(col_name,...)]       VALUES ({expr| DEFAULT},...),(...),...       [ON DUPLICATE KEY UPDATEcol_name=expr, ... ]或:INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE]       [INTO]tbl_name       SETcol_name={expr| DEFAULT}, ...       [ON DUPLICATE KEY UPDATEcol_name=expr, ... ]或:INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]       [INTO]tbl_name[(col_name,...)]       SELECT ...       [ON DUPLICATE KEY UPDATEcol_name=expr, ... ] 一、DELAYED的使用

 

使用延迟插入操作DELAYED调节符应用于INSERT和REPLACE语句。当DELAYED插入操作到达的时候,服务器把数据行放入一个队列中,并立即给客户端返回一个状态信息,这样客户端就可以在数据表被真正地插入记录之前继续进行操作了。如果读取者从该数据表中读取数据,队列中的数据就会被保持着,直到没有读取者为止。接着服务器开始插入延迟数据行(delayed-row)队列中的数据行。在插入操作的同时,服务器还要检查是否有新的读取请求到达和等待。如果有,延迟数据行队列就被挂起,允许读取者继续操作。当没有读取者的时候,服务器再次开始插入延迟的数据行。这个过程一直进行,直到队列空了为止。几点要注意事项:· INSERT DELAYED应该仅用于指定值清单的INSERT语句。服务器忽略用于INSERT DELAYED...SELECT语句的DELAYED。· 服务器忽略用于INSERT DELAYED...ON DUPLICATE UPDATE语句的DELAYED。· 因为在行被插入前,语句立刻返回,所以您不能使用LAST_INSERT_ID()来获取AUTO_INCREMENT值。AUTO_INCREMENT值可能由语句生成。· 对于SELECT语句,DELAYED行不可见,直到这些行确实被插入了为止。· DELAYED在从属复制服务器中被忽略了,因为DELAYED不会在从属服务器中产生与主服务器不一样的数据。注意,目前在队列中的各行只保存在存储器中,直到它们被插入到表中为止。这意味着,如果您强行中止了mysqld(例如,使用kill -9)或者如果mysqld意外停止,则所有没有被写入磁盘的行都会丢失。

 

二、IGNORE的使用

 

IGNORE是MySQL相对于标准SQL的扩展。如果在新表中有重复关键字,或者当STRICT模式启动后出现警告,则使用IGNORE控制ALTER TABLE的运行。如果没有指定IGNORE,当重复关键字错误发生时,复制操作被放弃,返回前一步骤。如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。并且,对错误值进行修正,使之尽量接近正确值。insert ignore into tb(...) value(...)这样不用校验是否存在了,有则忽略,无则添加

 

三、ON DUPLICATE KEY UPDATE的使用

 

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:mysql>INSERT INTO table (a,b,c) VALUES (1,2,3)       ->ON DUPLICATE KEY UPDATE c=c+1; mysql>UPDATE table SET c=c+1 WHERE a=1;如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当:mysql>UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;如果a=1 OR b=2与多个行向匹配,则只有一个行被更新。通常,您应该尽量避免对带有多个唯一关键字的表使用ON DUPLICATE KEY子句。您可以在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。换句话说,如果没有发生重复关键字冲突,则UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函数特别适用于多行插入。VALUES()函数只在INSERT...UPDATE语句中有意义,其它时候会返回NULL。示例:mysql>INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)       ->ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);本语句与以下两个语句作用相同:mysql>INSERT INTO table (a,b,c) VALUES (1,2,3)       ->ON DUPLICATE KEY UPDATE c=3;mysql>INSERT INTO table (a,b,c) VALUES (4,5,6)       ->ON DUPLICATE KEY UPDATE c=9;当您使用ON DUPLICATE KEY UPDATE时,DELAYED选项被忽略。 总结:DELAYED 做为快速插入,并不是很关心失效性,提高插入性能。        ignore     只关注主键对应记录是不存在,无则添加,有则忽略。     ON DUPLICATE KEY UPDATE 在添加时操作,关注非主键列,注意与ignore的区别。有则更新指定列,无则添加。 
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何快速地把你的 Python 程式碼變成 API 如何快速地把你的 Python 程式碼變成 API Apr 14, 2023 pm 06:28 PM

提到API開發,你可能會想到DjangoRESTFramework,Flask,FastAPI,沒錯,它們完全可以用來寫API,不過,今天分享的這個框架可以讓你更快把現有的函數轉化為API,它就是Sanic 。 Sanic簡介Sanic[1],是Python3.7+Web伺服器和Web框架,旨在提高效能。它允許使用Python3.5中添加的async/await語法,這可以有效避免阻塞從而達到提升響應速度的目的。 Sanic致力於提供一種簡單且快速,集創建和啟動於一體的方法

PHP8.0中新的型別別名語法 PHP8.0中新的型別別名語法 May 14, 2023 pm 02:21 PM

隨著PHP8.0的發布,新增了一種類型別名語法,使得使用自訂的類型變得更加容易。在本文中,我們將深入了解這種新的語法,以及它對開發人員的影響。什麼是類型別名?在PHP中,類型別名本質上是一個變量,它引用另一個類型的名稱。這個變數可以像其他類型一樣使用,並在程式碼中的任何地方聲明。這種語法的主要作用是為常用的類型定義自訂別名,使得程式碼更易於閱讀和理解。

lambda 表達式的語法和結構有什麼特色? lambda 表達式的語法和結構有什麼特色? Apr 25, 2024 pm 01:12 PM

Lambda表達式是無名稱的匿名函數,其語法為:(parameter_list)->expression。它們具有匿名性、多樣性、柯里化和閉包等特徵。在實際應用中,Lambda表達式可用於簡潔地定義函數,如求和函數sum_lambda=lambdax,y:x+y,並透過map()函數應用於列表來進行求和操作。

Go語言與JS的連結與區別 Go語言與JS的連結與區別 Mar 29, 2024 am 11:15 AM

Go語言與JS的聯繫與區別Go語言(也稱為Golang)和JavaScript(JS)都是目前流行的程式語言,它們在某些方面有聯繫,在其他方面又有明顯的區別。本篇文章將探討Go語言與JavaScript之間的聯繫與區別,同時提供具體的程式碼範例來幫助讀者更好地理解這兩種程式語言。連結:都是跨平台的Go語言和JavaScript都是跨平台的,可以在不同的作業系統

PHP8.0中的父類別呼叫語法 PHP8.0中的父類別呼叫語法 May 14, 2023 pm 01:00 PM

PHP是一種廣泛應用於Web開發的伺服器端腳本語言,而PHP8.0版本中引進了一種新的父類呼叫語法,讓物件導向程式設計更加方便簡潔。在PHP中,我們可以透過繼承的方式來建立一個父類別和一個或多個子類別。子類別可以繼承父類別的屬性和方法,並且可以透過重寫父類別的方法來修改或擴展其功能。在普通的PHP繼承中,如果我們想在子類別中呼叫父類別的方法,需要使用parent關鍵字來引用父

學會使用CSS選擇器的基本文法 學會使用CSS選擇器的基本文法 Jan 13, 2024 am 11:44 AM

掌握基本的CSS選擇器語法,需要具體程式碼範例CSS選擇器是前端開發中非常重要的一部分,它可以用來選擇和修改HTML文件的各個元素。掌握基本的CSS選擇器語法對於編寫高效率的樣式表是至關重要的。本文將介紹一些常見的CSS選擇器以及對應的程式碼範例。元素選擇器元素選擇器是最基本的選擇器,可以透過元素的標籤名稱來選擇對應的元素。例如,要選擇所有的段落(p元素),可以使用

乘方運算在C語言中的用法及文法 乘方運算在C語言中的用法及文法 Feb 18, 2024 pm 04:05 PM

C語言中乘方運算的語法和用法簡介:在C語言中,乘方運算(poweroperation)是一種常見的數學運算,它用來計算一個數的冪。在C語言中,我們可以使用標準函式庫函數或自訂函數來實作乘方運算。本文將詳細介紹C語言中乘方運算的語法和用法,並提供具體的程式碼範例。一、使用math.h中的pow()函數在C語言中,math.h標準函式庫中提供了pow()函數,用於執

C和C++之間的差別是什麼? C和C++之間的差別是什麼? Aug 29, 2023 pm 11:53 PM

C程式語言C是一種通用的、高階的語言,最初由DennisM.Ritchie在貝爾實驗室開發用於開發UNIX作業系統。 C最初是在1972年在DECPDP-11計算機上首次實現的。 1978年,BrianKernighan和DennisRitchie製作了第一個公開可用的C描述,現在稱為K&R標準。 UNIX作業系統、C編譯器以及幾乎所有UNIX應用程式都是用C語言寫的。由於各種原因,C語言現在已成為廣泛使用的專業語言。簡單易學結構化語言它產生高效的程式它可以處理低階活動可以在多種計算機

See all articles