亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL實現(xiàn)數(shù)據(jù)插入操作的示例詳解

 更新時間:2023年02月21日 14:53:34   作者:酸菜魚土豆大俠  
使用MySQL插入數(shù)據(jù)時,可以根據(jù)需求場景選擇合適的插入語句。本文通過給出每個使用場景下的實例來說明數(shù)據(jù)插入的實現(xiàn)過程和方法,希望對大家有所幫助

使用MySQL插入數(shù)據(jù)時,可以根據(jù)需求場景選擇合適的插入語句,例如當數(shù)據(jù)重復時如何插入數(shù)據(jù),如何從另一個表導入數(shù)據(jù),如何批量插入數(shù)據(jù)等場景。本文通過給出每個使用場景下的實例來說明數(shù)據(jù)插入的實現(xiàn)過程和方法。

一、方法分類

二、具體方法

使用場景作用語句注意
常規(guī)插入忽略字段名insert into 表名 values (值1, 值2,...,值n)默認value中的值依次填充所有字,如果出現(xiàn)唯一性沖突,就會拋出異常
按照字段插入insert into 表名(字段1, 字段2,...,字段n) values (值1, 值2,...,值n)字段和值一一對應
一次性插入多條數(shù)據(jù)insert into 表名(字段1, 字段2,...,字段n) values (值a1, 值a2,...,值an),(值b1, 值b2,...,值bn)多行之間用逗號隔開,不需要再次寫insert into語句
從另一個表導入導出A表的某些數(shù)據(jù)插入到B表insert into 表名B(字段B1, 字段B2,...,字段Bn) select 字段A1, 字段A2,...,字段An from 表名A where [執(zhí)行條件]字段A和B可以字段名稱不一樣,但是數(shù)據(jù)類型必須一致
插入時數(shù)據(jù)重復如果記錄存在報錯insert into 表名(字段1, 字段2,...,字段n) values (值1, 值2,...,值n)如果插入的數(shù)據(jù)記錄存在,報錯并捕獲異常,不存在則直接新增記錄
如果記錄存在不插入記錄insert ignore into 表名(字段1, 字段2,...,字段n) values (值1, 值2,...,值n)如果插入的數(shù)據(jù)記錄存在就保存舊記錄忽略新記錄,不存在則直接新增記錄
不論記錄是否存在都要插入記錄replace 表名(字段1, 字段2,...,字段n) values (值1, 值2,...,值n)如果插入的數(shù)據(jù)記錄存在就先刪除再更新,不存在則直接新增記錄
如果記錄存在更新指定字段insert into … on duplicate key update如果插入的數(shù)據(jù)記錄存在就更新指定字段,不存在則直接新增記錄

三、實例

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

idnamescore
1李明67

(1)常規(guī)插入

忽略字段名

執(zhí)行后結(jié)果

idnamescore
1李明67
2張三74

按照字段插入

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

執(zhí)行后結(jié)果

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

一次性插入多條數(shù)據(jù)

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

執(zhí)行后結(jié)果

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表的某些數(shù)據(jù)插入到students表

insert into 
	students(name,score) 
select 
	user_name,
	mobile_phone_number 
from users where id <> 3;

執(zhí)行結(jié)果

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

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

(3)插入時數(shù)據(jù)重復

如果記錄存在報錯

insert into 
	students 
values(1, '張三', '74');

執(zhí)行結(jié)果: 報錯

Duplicate entry '1' for key 'PRIMARY'

如果記錄存在不插入記錄

insert ignore into 
	students(id,name,score) 
values(1, '張三', '74');

執(zhí)行結(jié)果:不插入不報錯

Affected rows:0

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

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

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

執(zhí)行結(jié)果

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í)行結(jié)果

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中出現(xiàn)的(不重復)數(shù)(例如-1,-2),浮點型數(shù)據(jù)例如3.4,最后顯示3,會進行四舍五入。即使定義了int類型,輸入‘3’或者浮點型,都會強制轉(zhuǎn)化為int類型,但是輸入'a'會報錯。具體細節(jié)可以看源碼。

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

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

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

其余注意事項

  • 字段名可以省略,默認所有列;
  • 錄入值的類型和字段的類型要一致或兼容;
  • 字段和值的個數(shù)必須一致。不能出現(xiàn)一行記錄5個值,另外一行6個值的情況;
  • 如果寫了字段,即使是空值也不能空著,用null代替;

到此這篇關(guān)于MySQL實現(xiàn)數(shù)據(jù)插入操作的示例詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)插入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論