黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

行語句mysql insert操作詳解

系統(tǒng) 3020 0

本文純屬個(gè)人見解,是對前面學(xué)習(xí)的結(jié)總,如有描述不準(zhǔn)確的地方還請高手指正~

????

mysql insert作操詳解

????

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的應(yīng)用

????

應(yīng)用延遲插入作操

????

DELAYED調(diào)節(jié)符應(yīng)于用INSERT和REPLACE語句。當(dāng)DELAYED插入作操達(dá)到的時(shí)候,服務(wù)器把據(jù)數(shù)行放入一個(gè)隊(duì)列中,并當(dāng)即給客戶端返回一個(gè)態(tài)狀信息,這樣客戶端以可就在據(jù)數(shù)表被真正地插入錄記之前續(xù)繼停止作操了。如果讀取者從該據(jù)數(shù)表中讀取據(jù)數(shù),隊(duì)列中的據(jù)數(shù)就會被保持著,直到?jīng)]有讀取者為止。接著服務(wù)器開始插入延遲據(jù)數(shù)行(delayed-row)隊(duì)列中的據(jù)數(shù)行。在插入作操的同時(shí),服務(wù)器還要檢查是不是有新的讀取請求達(dá)到和待等。如果有,延遲據(jù)數(shù)行隊(duì)列就被掛起,答應(yīng)讀取者續(xù)繼作操。當(dāng)沒有讀取者的時(shí)候,服務(wù)器再次開始插入延遲的據(jù)數(shù)行。這個(gè)程過直一停止,直到隊(duì)列空了為止。

????

幾點(diǎn)要注意事項(xiàng):

????

· INSERT DELAYED該應(yīng)僅于用指定值清單的INSERT語句。服務(wù)器疏忽于用INSERT DELAYED...SELECT語句的DELAYED。

????

· 服務(wù)器疏忽于用INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。

????

· 因?yàn)樾性诒徊迦肭埃Z句立刻返回,所以您不能應(yīng)用LAST_INSERT_ID()來獲得AUTO_INCREMENT值。AUTO_INCREMENT值可能由語句生成。

????

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

????

· DELAYED在屬從制復(fù)服務(wù)器中被疏忽了,因?yàn)镈ELAYED不會在屬從服務(wù)器中發(fā)生與主服務(wù)器不一樣的據(jù)數(shù)。

????

注意,前目在隊(duì)列中的各行只保存在存儲器中,直到它們被插入到表中為止。這意味著,如果您強(qiáng)行止中了MySQLd(例如,應(yīng)用kill -9)或者如果mysqld不測停止,則全部沒有被寫入磁盤的行會都喪失。

????每日一道理
自己把自己說服了,是一種理智的勝利;自己被自己感動了,是一種心靈的升華;自己把自己征服了,是一種人生的成功。

????

二、IGNORE的應(yīng)用

????

IGNORE是MySQL于對相標(biāo)準(zhǔn)SQL的擴(kuò)展。如果在新表中有復(fù)重關(guān)鍵字,或者當(dāng)STRICT式模啟動后涌現(xiàn)告警,則應(yīng)用IGNORE制控ALTER TABLE的行運(yùn)。如果沒有指定IGNORE,當(dāng)復(fù)重關(guān)鍵字錯(cuò)誤發(fā)生時(shí),制復(fù)作操被棄放,返回前一驟步。如果指定了IGNORE,則對于有復(fù)重關(guān)鍵字的行,只應(yīng)用第一行,其它有沖突的行被除刪。并且,對錯(cuò)誤值停止修正,使之盡量親近準(zhǔn)確值。

????

?

????

insert ignore into tb(...) value(...)

????

這樣不必校驗(yàn)是不是存在了,有則疏忽,無則添加。

????

三、 ON DUPLICATE KEY UPDATE的應(yīng)用

????

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會致導(dǎo)在一個(gè)UNIQUE索引或PRIMARY KEY中涌現(xiàn)復(fù)重值,則執(zhí)行舊行UPDATE。例如,如果列a被義定為UNIQUE,并且含包值1,則以下兩個(gè)語句擁有雷同的果效: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語句當(dāng)相:

????

mysql>UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

????

如果a=1 OR b=2與多個(gè)行向匹配,則只有一個(gè)行被更新。平日,您該應(yīng)盡量免避對帶有多個(gè)一唯關(guān)鍵字的表應(yīng)用ON DUPLICATE KEY句子。

????

您可以在UPDATE句子中應(yīng)用VALUES(col_name)數(shù)函從INSERT...UPDATE語句的INSERT分部引用列值。換句話說,如果沒有發(fā)生復(fù)重關(guān)鍵字沖突,則UPDATE句子中的VALUES(col_name)可以引用被插入的col_name的值。本數(shù)函別特適于用多行插入。VALUES()數(shù)函只在INSERT...UPDATE語句中有意思,其它時(shí)候會返回NULL。

????

示例:

????

mysql>INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)

????

->ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

????

本語句與以下兩個(gè)語句作用雷同:

????

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;

????

當(dāng)您應(yīng)用ON DUPLICATE KEY UPDATE時(shí),DELAYED選項(xiàng)被疏忽。

????

結(jié)總:DELAYED 做為倏地插入,是不并很關(guān)懷失效性,進(jìn)步插入性能。

????

ignore 只存眷主鍵對應(yīng)錄記是不存在,無則添加,有則疏忽。

????

ON DUPLICATE KEY UPDATE 在添加時(shí)作操,存眷非主鍵列,注意與ignore的區(qū)分。有則更新指定列,無則添加。

文章結(jié)束給大家分享下程序員的一些笑話語錄: 有一天,一個(gè)男人穿越森林的時(shí)候,聽到一個(gè)細(xì)微的聲音叫住他。他低頭一看,是一只青蛙。
“如果你親我一下,我會變成一個(gè)美麗的公主哦。”男人一言不發(fā),把青蛙撿起來,放入口袋。
“如果你親我一下,我會變成一個(gè)美麗的公主哦。而且,我會告訴我遇到的每一個(gè)人,你是多么聰明和勇敢,你是我的英雄。”男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
“如果你親我一下,我會變成一個(gè)美麗的公主,然后我愿意成為你的愛人一星期。”男人又把青蛙拿出來,對著它微微一笑,把它放回口袋。
“如果你親我一下,我會變成一個(gè)美麗的公主,然后我愿意成為你的愛人一年,而且你可以對我做任何事。”再一次,男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
  最后,青蛙無力地問:“我開出了這么好的條件,為什么你還不肯吻我?”男人說:“我是一個(gè)程序員,我可沒時(shí)間和什么公主鬼混。不過,擁有一個(gè)會說話的青蛙,倒是蠻酷的。”

行語句mysql insert操作詳解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論