亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

MySQL必知必會:數(shù)據(jù)插入(Insert)

FleyX / 3100人閱讀

摘要:舉個例子星空幻穎這條語句向用戶表插入一條用戶數(shù)據(jù)。在插入數(shù)據(jù)行時候,將會使用的值填入對應(yīng)字段名,例如星空幻穎將會被插入到字段。

本篇文章介紹如何使用Insert語句將數(shù)據(jù)插入到數(shù)據(jù)庫。

數(shù)據(jù)插入

增刪改查是數(shù)據(jù)庫最常用的4個命令,插入算是第二常用,第一是SELECT。插入數(shù)據(jù)的方式大概有4種

插入完整的行

插入行的一部分

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

插入來自查詢的數(shù)據(jù)

插入完整的行

使用Insert將一條數(shù)據(jù)插入數(shù)據(jù)庫是最簡單也是最基本的操作。插入操作有兩種寫法。

順序插入

順序插入指的是:給出數(shù)據(jù)庫名和需要插入數(shù)據(jù),按照數(shù)據(jù)庫字段排列順序?qū)?shù)據(jù)插入數(shù)據(jù)庫。

舉個例子:

INSERT INTO `test`.`br_user` (`user_id`, `name`, `password`, `email`) VALUES (NULL, "星空幻穎", "123456", "123@xyz.com");

這條語句向用戶表插入一條用戶數(shù)據(jù)。給出了姓名、密碼和郵箱3個字段,其中user_id設(shè)為NULL,這樣Mysql就會為我們自動創(chuàng)建一個自增長ID

這種順序插入方式,必須和數(shù)據(jù)庫字段一一對應(yīng)的給出每個值,如果不想給值,可以設(shè)為NULL(在數(shù)據(jù)允許的情況下)。由于位置匹配有要求,所以十分不安全。假設(shè)我們需要調(diào)增數(shù)據(jù)庫結(jié)構(gòu)時候,此語句插入數(shù)據(jù)將會發(fā)生錯誤。所以一般情況下我們不采用這種方式。

字段名+值插入

首先給個例子:

INSERT INTO `test`.`br_user` (`user_id`, `name`, `password`, `email`) VALUES (NULL, "星空幻穎", "123456", "123@xyz.com");

上面這條語句可以實現(xiàn)和順序插入一樣的功能,但我們發(fā)現(xiàn)它相比于順序插入多給出了字段名,這種方式稍微復(fù)雜點兒,但是更為安全。

在插入數(shù)據(jù)行時候,Mysql將會使用VALUES的值填入對應(yīng)字段名,例如星空幻穎將會被插入到name字段。因為提供了字段名,所以字段的順序也不一定需要按照數(shù)據(jù)庫字段排序。

比方我們可以改寫上面的SQL語句:

INSERT INTO `test`.`br_user` (`user_id`, `password`, `email`, `name`) VALUES (NULL, "123456", "123@xyz.com", "星空幻穎");

我們將name調(diào)增到了最后一個,但是這并不影響插入的結(jié)果。

甚至我們可以省去不寫某些字段的值。(前提是字段允許為空或給出默認值的情況下)

INSERT INTO `test`.`br_user` (`password`, `name`) VALUES ("123456", "星空幻穎");

這樣就安全了很多,即使我們調(diào)整數(shù)據(jù)庫結(jié)構(gòu),新增一個字段,只要我們給出默認值就沒有任何問題。

插入多行(批量插入)

Mysql可以一次插入一條記錄到數(shù)據(jù)庫,也支持一次插入多條記錄。只需要給出多個VALUES使用逗號分隔(使用圓括號括起來),就可以一次插入多條記錄。

INSERT INTO `test`.`br_user` (`user_id`, `password`, `email`, `name`) 
VALUES (NULL, "123456", "1234@xyz.com", "星空幻穎"),
(NULL, "123456", "456@xyz.com", "星空幻穎2"),
(NULL, "123456", "789@xyz.com", "星空幻穎3"),
(NULL, "123456", "222@xyz.com", "星空幻穎4");

注意每條插入值的順序要和你給出的字段順序一致。

建議:在實際開發(fā)中,如果需要插入多條數(shù)據(jù)盡量使用批量插入。因為速度比一條一條插入塊,性能更好。

插入檢索出的數(shù)據(jù) 相同表結(jié)構(gòu)

假設(shè)一個場景,我們有兩張用戶表,現(xiàn)在需要將其用戶進行合并。首先我們可能會想到,將一張表數(shù)據(jù)查出,在放入到另外一張表合并。

但是有了插入檢索出數(shù)據(jù)這個功能,就不需要這么麻煩了。Mysql可以一次幫我們處理好。

給出兩張表br_userbr_user2。為作區(qū)分,我把br_user2姓名都改為了數(shù)字

INSERT INTO br_user(`password`, `email`, `name`) SELECT `password`, `email`, `name` FROM br_user2;

這條語句看上去好像是兩個語句,但是他執(zhí)行的是一個功能:將br_user2的數(shù)據(jù)挪到了br_user,一次性完成。

這里的插入多少記錄到br_user決定了你的SELECT檢索出來多少記錄,如果一條也沒有檢索到,也不會報錯,畢竟是合法的。當(dāng)然,你也可以在SELECT語句后面使用where條件篩選數(shù)據(jù)。

提醒:這里復(fù)制數(shù)據(jù)到另外一個表,最好不要使用原來的表id,防止和需要合并的表沖突,除非你確定不會沖突。還有字段類型,如果檢索出來為字符串,而插入的為整型,Mysql會幫你轉(zhuǎn)換了

不同表結(jié)構(gòu)

上面的例子我們?yōu)榱撕唵蚊髁?,使用了兩張完全相同結(jié)構(gòu)的表。其實Mysql根本不關(guān)心你兩個表結(jié)構(gòu)是否相同,也不關(guān)心你檢索的字段是否相同,只關(guān)心你檢索出來的字段順序。簡單來說,就是你檢索出來的第一個字段就會被插入到第一個字段,(上方的password會被插入到password字段),以此類推。

為了演示這個效果,我們給出一個驢唇不對馬嘴的兩張表,來展示強烈對比:

還是那張br_user,另外我們再給出一張br_region地區(qū)表,完全不一樣。

INSERT INTO br_user(`password`, `email`, `name`) SELECT `region_py`, `region_type`, `region_name` FROM br_region where region_id <10;

由于br_region表數(shù)據(jù)量太大,我們只選取了region_id < 10的,剛好說了一下上面的附帶where篩選。

這里region_py被放入了password;region_type被放入了email;region_name被放入了name。他們有啥關(guān)系?啥關(guān)系都沒有。

這個為我們以后不同表之間轉(zhuǎn)移數(shù)據(jù)提供了方便。你可以幫老板造假數(shù)據(jù),來個10萬用戶。

星空幻穎,嚴(yán)穎

個人主頁:segmentfault

天天找資料找不到,噗噗噗,分享一個資源合集網(wǎng)站:筆點資源

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/22230.html

相關(guān)文章

  • MySQL必知必會(6):常用文本字符串處理函數(shù)

    摘要:編程語言中經(jīng)常使用函數(shù)來處理一些字符串,數(shù)字或者其他內(nèi)容。所以如果需要移植要慎重使用函數(shù)。該函數(shù)有兩個參數(shù),第一個參數(shù)為字符串,第二個參數(shù)為字符串長度。還有另外兩個相似函數(shù)去除字符串左側(cè)空格去除字符串右側(cè)空格字符串截取函數(shù)。 編程語言中經(jīng)常使用函數(shù)來處理一些字符串,數(shù)字或者其他內(nèi)容。MySQL也是一樣,可以使用函數(shù)來快速達到一系列的目的。 在上一篇文章《計算字段的使用》中,我們提前使用...

    xuxueli 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<