MySQL實現數據插入操作的示例詳解
目錄
- 一、方法分類
- 二、具體方法
- 三、實例
- (1)常規(guī)插入
- (2)從另一個表導入
- (3)插入時數據重復
- 四、注意事項
- (1)不寫字段名,需要填充自增ID
- (2)按字段名填充,可以不錄入id
- 其余注意事項
使用MySQL插入數據時,可以根據需求場景選擇合適的插入語句,例如當數據重復時如何插入數據,如何從另一個表導入數據,如何批量插入數據等場景。本文通過給出每個使用場景下的實例來說明數據插入的實現過程和方法。
一、方法分類
二、具體方法
三、實例
students 表 (id表示主鍵,name是姓名,score是平均成績)
(1)常規(guī)插入
忽略字段名
執(zhí)行后結果
按照字段插入
insert into students(name) values("孫華");
執(zhí)行后結果
一次性插入多條數據
insert into students(name, score) values("劉平", "56"),("周雨", "90");
執(zhí)行后結果
(2)從另一個表導入
students 表 (id表示主鍵,name是姓名,score是平均成績)
導出users表的某些數據插入到students表
insert into students(name,score) select user_name, mobile_phone_number from users where id <> 3;
執(zhí)行結果
注意:只要對應字段的類型一樣,字段不一樣也可以導入數據,不會沖突。
(3)插入時數據重復
如果記錄存在報錯
insert into students values(1, "張三", "74");
執(zhí)行結果: 報錯
Duplicate entry '1' for key 'PRIMARY'
如果記錄存在不插入記錄
insert ignore into students(id,name,score) values(1, "張三", "74");
執(zhí)行結果:不插入不報錯
Affected rows:0
不論記錄是否存在都要插入記錄
replace studentsvalues(1, "張三", "74");
執(zhí)行結果
如果記錄存在更新指定字段
insert into students(id)values(1) on duplicate key update name = "李明", score = "67";
執(zhí)行結果
創(chuàng)建 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");
創(chuàng)建 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");
四、注意事項
(1)不寫字段名,需要填充自增ID
[使用]:0或者null或者default,自增id默認從1開始。
[使用]:或者沒有在自增id中出現的(不重復)數(例如-1,-2),浮點型數據例如3.4,最后顯示3,會進行四舍五入。即使定義了int類型,輸入‘3’或者浮點型,都會強制轉化為int類型,但是輸入'a'會報錯。具體細節(jié)可以看源碼。
問題:第一個字段id為什么可以寫null?如果建表的時候寫了id為自增id,而寫0或者null或者default或者沒有在自增id中出現的(不重復)數(例如-1,-2),系統(tǒng)都會自動填充id。如果建表的時候沒有寫明是自增id,那么主鍵一定是不能為空的,這個時候寫null就會報錯。
(2)按字段名填充,可以不錄入id
[注意]:字段要與值一一對應。
其余注意事項
- 字段名可以省略,默認所有列;
- 錄入值的類型和字段的類型要一致或兼容;
- 字段和值的個數必須一致。不能出現一行記錄5個值,另外一行6個值的情況;
- 如果寫了字段,即使是空值也不能空著,用null代替;
到此這篇關于MySQL實現數據插入操作的示例詳解的文章就介紹到這了,更多相關MySQL數據插入內容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!