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

mysql insert語句操作實例講解

 更新時間:2014年12月02日 10:55:27   投稿:junjie  
這篇文章主要介紹了mysql insert語句操作實例講解,本文講解了insert的基本語法、批量插入多條數(shù)據(jù)、使用set插入數(shù)據(jù)、INSERT…SELECT語句等內(nèi)容,需要的朋友可以參考下

insert的語法

復制代碼 代碼如下:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    VALUES ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

如果列清單和VALUES清單均為空清單,則INSERT會創(chuàng)建一個行,每個列都被設置為默認值:

復制代碼 代碼如下:

INSERT INTO tbl_name () VALUES();

假設worker表只有name和email,插入一條數(shù)據(jù)

復制代碼 代碼如下:

insert into worker values(“tom”,”tom@yahoo.com”);

批量插入多條數(shù)據(jù)

復制代碼 代碼如下:

insert into worker values(‘tom','tom@yahoo.com'),(‘paul','paul@yahoo.com');

給出要賦值的那個列,然后再列出值的插入數(shù)據(jù)

復制代碼 代碼如下:

insert into worker (name) values (‘tom');
insert into worker (name) values (‘tom'), (‘paul');

使用set插入數(shù)據(jù)

復制代碼 代碼如下:

insert into worker set name='tom';

在 SET 子句中未命名的行都賦予一個缺省值,使用這種形式的 INSERT 語句不能插入多行。

一個expression可以引用在一個值表先前設置的任何列,例如:

復制代碼 代碼如下:

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
--但不能這樣
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

使用INSERT…SELECT語句插入從其他表選擇的行

復制代碼 代碼如下:

insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
--如果每一列都有數(shù)據(jù)
insert into tbl_name1 select col3,col4 from tbl_name2;

查詢不能包含一個ORDER BY子句,而且INSERT語句的目的表不能出現(xiàn)在SELECT查詢部分的FROM子句.

 ON DUPLICATE KEY UPDATE

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現(xiàn)重復值,則執(zhí)行舊行UPDATE。

復制代碼 代碼如下:

--假設a,b為唯一索引,表table沒有1,2這樣的行是正常插入數(shù)據(jù),沖突時,更新c列的值
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;
--或者是
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=values(c);
--引用其他列更新沖突的行
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
 向一個已定義為NOT NULL的列中插入NULL。對于一個多行INSERT語句或INSERT INTO...SELECT語句,根據(jù)列數(shù)據(jù)的類型,列被設置為隱含的默認值。對于數(shù)字類型,默認值為0;對于字符串類型,默認值為空字符串('');對于日期和時間類型,默認值為“zero”值。

INSERT INTO...SELECT的ON DUPLICATE KEY UPDATE

復制代碼 代碼如下:

insert into tbl_name1(a,b,c)
  select col1,col2,col3 from tbl_name2
ON DUPLICATE KEY UPDATE c=values(c);

INSERT DELAYED

如果您的客戶端不能等待INSERT完成,則這個選項是非常有用的,當一個客戶端使用INSERT DELAYED時,會立刻從服務器處得到一個確定。并且行被排入隊列,當表沒有被其它線程使用時,此行被插入。

使用INSERT DELAYED的另一個重要的好處是,來自許多客戶端的插入被集中在一起,并被編寫入一個塊。這比執(zhí)行許多獨立的插入要快很多。

復制代碼 代碼如下:

INSERT DELAYED INTO worker (name) values (‘tom'), (‘paul');

使用DELAYED時有一些限制:

1.INSERT DELAYED僅適用于MyISAM, MEMORY和ARCHIVE表。對于MyISAM表,如果在數(shù)據(jù)文件的中間沒有空閑的塊,則支持同時采用SELECT和INSERT語句。在這些情況下,基本不需要對MyISAM使用INSERT DELAYED。

2.INSERT DELAYED應該僅用于指定值清單的INSERT語句。服務器忽略用于INSERT DELAYED...SELECT語句的DELAYED和INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。

3.因為在行被插入前,語句立刻返回,所以您不能使用LAST_INSERT_ID()來獲取AUTO_INCREMENT值。AUTO_INCREMENT值可能由語句生成。

4.對于SELECT語句,DELAYED行不可見,直到這些行確實被插入了為止。

5.DELAYED在從屬復制服務器中被忽略了,因為DELAYED不會在從屬服務器中產(chǎn)生與主服務器不一樣的數(shù)據(jù)。

相關(guān)文章

  • mysql 8.0.13 解壓版安裝配置方法圖文教程

    mysql 8.0.13 解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.13 解壓版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 詳解MySQL8中的新特性窗口函數(shù)

    詳解MySQL8中的新特性窗口函數(shù)

    MySQL8?窗口函數(shù)是一種特殊的函數(shù),它可以在一組查詢行上執(zhí)行類似于聚合的操作,但是不會將查詢行折疊為單個輸出行,而是為每個查詢行生成一個結(jié)果,本文就來和大家簡單講講它的用法,感興趣的可以了解一下
    2023-06-06
  • MySQL的自增ID(主鍵) 用完了的解決方法

    MySQL的自增ID(主鍵) 用完了的解決方法

    這篇文章主要介紹了MySQL的自增ID(主鍵) 用完了的解決方法,幫助大家更好的理解和學習MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • MySQL刪除表的三種方式(小結(jié))

    MySQL刪除表的三種方式(小結(jié))

    這篇文章主要介紹了MySQL刪除表的三種方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • MySQL Slave 觸發(fā) oom-killer解決方法

    MySQL Slave 觸發(fā) oom-killer解決方法

    這篇文章主要介紹了MySQL Slave 觸發(fā) oom-killer解決方法,需要的朋友可以參考下
    2016-07-07
  • MySQL 1130異常,無法遠程登錄解決方案詳解

    MySQL 1130異常,無法遠程登錄解決方案詳解

    這篇文章主要介紹了MySQL 1130異常,無法遠程登錄解決方案詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • SQL查詢超時的設置方法(關(guān)于timeout的處理)

    SQL查詢超時的設置方法(關(guān)于timeout的處理)

    為了優(yōu)化OceanBase的query timeout設置方式,特調(diào)研MySQL關(guān)于timeout的處理,下面與大家分享下處理記錄,感興趣的朋友可以參考下哈
    2013-04-04
  • CentOS下安裝mysql時忘記設置root密碼致無法登錄的解決方法

    CentOS下安裝mysql時忘記設置root密碼致無法登錄的解決方法

    最近在給公司的內(nèi)網(wǎng)開發(fā)用服務器裝系統(tǒng),然后裝mysql居然就花了一天,原因是因為本人在CentOS下安裝萬mysql后,無法通過root進入,因為安裝的時候,并沒有設置root密碼而導致無法登錄,通過查找了資料終于解決了,現(xiàn)在想方法分享給大家,有需要的朋友們可以參考借鑒。
    2016-11-11
  • MySQL 的模塊不能安裝的解決方法

    MySQL 的模塊不能安裝的解決方法

    這篇文章主要介紹了MySQL 的模塊不能安裝的解決方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • Mysql如何查詢某條記錄在分頁的第幾頁詳析

    Mysql如何查詢某條記錄在分頁的第幾頁詳析

    查詢是我們?nèi)粘9ぷ髦薪?jīng)常會遇到的一個功能,下面這篇文章主要給大家介紹了關(guān)于Mysql如何查詢某條記錄在分頁的第幾頁的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11

最新評論