溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL怎么實現數據插入操作

發(fā)布時間:2023-02-22 16:09:12 來源:億速云 閱讀:107 作者:iii 欄目:開發(fā)技術

今天小編給大家分享一下MySQL怎么實現數據插入操作的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、方法分類

MySQL怎么實現數據插入操作

二、具體方法

使用場景作用語句注意
常規(guī)插入忽略字段名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 [執(zhí)行條件]字段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是平均成績)

idnamescore
1李明67

(1)常規(guī)插入

忽略字段名

執(zhí)行后結果

idnamescore
1李明67
2張三74

按照字段插入

insert into 
	students(name) 
values('孫華');

執(zhí)行后結果

idnamescore
1李明67
2張三74
3孫華

一次性插入多條數據

insert into 
	students(name, score) 
values('劉平', '56'),('周雨', '90');

執(zhí)行后結果

idnamescore
1李明67
2張三74
3孫華
4劉平56
5周雨90

(2)從另一個表導入

students 表 (id表示主鍵,name是姓名,score是平均成績)

iduser_namemobile_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;

執(zhí)行結果

idnamescore
1李明67
2張三74
3孫華
4劉平56
5周雨90
6馬化騰13800000000
7馬云13800000022

注意:只要對應字段的類型一樣,字段不一樣也可以導入數據,不會沖突。

(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

idnamescore
1李明67
2張三74
3孫華
4劉平56
5周雨90
6馬化騰13800000000
7馬云13800000022

不論記錄是否存在都要插入記錄

replace 
	students
values(1, '張三', '74');

執(zhí)行結果

idnamescore
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';

執(zhí)行結果

idnamescore
1李明67
2張三74
3孫華
4劉平56
5周雨90
6馬化騰13800000000
7馬云13800000022

創(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類型,輸入&lsquo;3&rsquo;或者浮點型,都會強制轉化為int類型,但是輸入'a'會報錯。具體細節(jié)可以看源碼。

問題:第一個字段id為什么可以寫null?如果建表的時候寫了id為自增id,而寫0或者null或者default或者沒有在自增id中出現的(不重復)數(例如-1,-2),系統(tǒng)都會自動填充id。如果建表的時候沒有寫明是自增id,那么主鍵一定是不能為空的,這個時候寫null就會報錯。

(2)按字段名填充,可以不錄入id

[注意]:字段要與值一一對應。

其余注意事項

  • 字段名可以省略,默認所有列;

  • 錄入值的類型和字段的類型要一致或兼容;

  • 字段和值的個數必須一致。不能出現一行記錄5個值,另外一行6個值的情況;

  • 如果寫了字段,即使是空值也不能空著,用null代替。

以上就是“MySQL怎么實現數據插入操作”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI