<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用MySQL插入資料時,可以根據需求場景選擇合適的插入語句,例如當資料重複時如何插入資料,如何從另一個表匯入資料,如何批次插入資料等場景。本文通過給出每個使用場景下的範例來說明資料插入的實現過程和方法。
使用場景 | 作用 | 語句 | 注意 |
---|---|---|---|
常規插入 | 忽略欄位名 | insert into 表名 values (值1, 值2,...,值n) | 預設value中的值依次填充所有字,如果出現唯一性衝突,就會丟擲異常 |
按照欄位插入 | insert into 表名(欄位1, 欄位2,...,欄位n) values (值1, 值2,...,值n) | 欄位和值一一對應 | |
一次性插入多條資料 | insert into 表名(欄位1, 欄位2,...,欄位n) values (值a1, 值a2,...,值an),(值b1, 值b2,...,值bn) | 多行之間用逗號隔開,不需要再次寫insert into語句 | |
從另一個表匯入 | 匯出A表的某些資料插入到B表 | insert into 表名B(欄位B1, 欄位B2,...,欄位Bn) select 欄位A1, 欄位A2,...,欄位An from 表名A where [執行條件] | 欄位A和B可以欄位名稱不一樣,但是資料型別必須一致 |
插入時資料重複 | 如果記錄存在報錯 | insert into 表名(欄位1, 欄位2,...,欄位n) values (值1, 值2,...,值n) | 如果插入的資料記錄存在,報錯並捕獲異常,不存在則直接新增記錄 |
如果記錄存在不插入記錄 | insert ignore into 表名(欄位1, 欄位2,...,欄位n) values (值1, 值2,...,值n) | 如果插入的資料記錄存在就儲存舊記錄忽略新記錄,不存在則直接新增記錄 | |
不論記錄是否存在都要插入記錄 | replace 表名(欄位1, 欄位2,...,欄位n) values (值1, 值2,...,值n) | 如果插入的資料記錄存在就先刪除再更新,不存在則直接新增記錄 | |
如果記錄存在更新指定欄位 | insert into … on duplicate key update | 如果插入的資料記錄存在就更新指定欄位,不存在則直接新增記錄 |
students 表 (id表示主鍵,name是姓名,score是平均成績)
id | name | score |
---|---|---|
1 | 李明 | 67 |
忽略欄位名
執行後結果
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
按照欄位插入
insert into students(name) values('孫華');
執行後結果
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
3 | 孫華 |
一次性插入多條資料
insert into students(name, score) values('劉平', '56'),('周雨', '90');
執行後結果
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
3 | 孫華 | |
4 | 劉平 | 56 |
5 | 周雨 | 90 |
students 表 (id表示主鍵,name是姓名,score是平均成績)
id | user_name | mobile_phone_number |
---|---|---|
1 | 馬化騰 | 13800000000 |
2 | 任正非 | 13800000011 |
3 | 馬雲 | 13800000022 |
匯出users表的某些資料插入到students表
insert into students(name,score) select user_name, mobile_phone_number from users where id <> 3;
執行結果
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
3 | 孫華 | |
4 | 劉平 | 56 |
5 | 周雨 | 90 |
6 | 馬化騰 | 13800000000 |
7 | 馬雲 | 13800000022 |
注意:只要對應欄位的型別一樣,欄位不一樣也可以匯入資料,不會衝突。
如果記錄存在報錯
insert into students values(1, '張三', '74');
執行結果: 報錯
Duplicate entry '1' for key 'PRIMARY'
如果記錄存在不插入記錄
insert ignore into students(id,name,score) values(1, '張三', '74');
執行結果:不插入不報錯
Affected rows:0
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
3 | 孫華 | |
4 | 劉平 | 56 |
5 | 周雨 | 90 |
6 | 馬化騰 | 13800000000 |
7 | 馬雲 | 13800000022 |
不論記錄是否存在都要插入記錄
replace students values(1, '張三', '74');
執行結果
id | name | score |
---|---|---|
1 | 張三 | 74 |
2 | 張三 | 74 |
3 | 孫華 | |
4 | 劉平 | 56 |
5 | 周雨 | 90 |
6 | 馬化騰 | 13800000000 |
7 | 馬雲 | 13800000022 |
如果記錄存在更新指定欄位
insert into students(id) values(1) on duplicate key update name = '李明', score = '67';
執行結果
id | name | score |
---|---|---|
1 | 李明 | 67 |
2 | 張三 | 74 |
3 | 孫華 | |
4 | 劉平 | 56 |
5 | 周雨 | 90 |
6 | 馬化騰 | 13800000000 |
7 | 馬雲 | 13800000022 |
建立 students 表的程式碼
-- ---------------------------- -- Table structure for students -- ---------------------------- DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '學生id', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成績', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of students -- ---------------------------- INSERT INTO `students` VALUES (1, '李明', '67');
建立 users 表的程式碼
-- ---------------------------- -- Table structure for students -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '使用者id', `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '使用者名稱', `mobile_phone_number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手機號碼', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of students -- ---------------------------- INSERT INTO `users` VALUES (1, '馬化騰', '13800000000'); INSERT INTO `users` VALUES (2, '任正非', '13800000011'); INSERT INTO `users` VALUES (3, '馬雲', '13800000022');
[使用]:0或者null或者default,自增id預設從1開始。
[使用]:或者沒有在自增id中出現的(不重複)數(例如-1,-2),浮點型資料例如3.4,最後顯示3,會進行四捨五入。即使定義了int型別,輸入‘3’或者浮點型,都會強制轉化為int型別,但是輸入'a'會報錯。具體細節可以看原始碼。
問題:第一個欄位id為什麼可以寫null?如果建表的時候寫了id為自增id,而寫0或者null或者default或者沒有在自增id中出現的(不重複)數(例如-1,-2),系統都會自動填充id。如果建表的時候沒有寫明是自增id,那麼主鍵一定是不能為空的,這個時候寫null就會報錯。
[注意]:欄位要與值一一對應。
到此這篇關於MySQL實現資料插入操作的範例詳解的文章就介紹到這了,更多相關MySQL資料插入內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45