1. insert 語法格式
完整格式
insert [into] 表名[字段名1[, 字段名2]] value[s](值1, 值2),(值3, 值4);
省略字段名
省略字段名時,必須依次添加所有段的值
insert [into] 表名 value(值1, 值2[, ...]);
只添加一條數據時,也可以使用 insert ... set
命令
此方式無法插入空值
insert into 表名 set 字段名1=值[,字段名2=值];
2. 使用示例
a. 省略字段名
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID,主鍵且自增',
`nickname` varchar(60) DEFAULT NULL COMMENT '用戶昵稱',
`gender` tinyint(1) DEFAULT NULL COMMENT '性別',
`age` mediumint(9) DEFAULT NULL COMMENT '年齡',
`status` tinyint(1) DEFAULT '1' COMMENT '狀態 0 關閉 1 開啟 默認為 1',
`create_time` int(11) DEFAULT NULL COMMENT '注冊時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
特別注意:因為字段id會自動增長,設置為null即可
如果沒有寫出所有字段的值,會出現以下錯誤
1136 - Column count doesn't match value count at row 1(列計數與行的值計數不匹配)
insert into user value(null, '張三', 1, 20, null, 1602295286);
b. 給指定的字段添加數據,則沒有被指定的字段必須有默認值
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID,主鍵且自增',
`nickname` varchar(60) NOT NULL COMMENT '用戶昵稱',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態 0 關閉 1 開啟 默認為 1',
`create_time` int(11) DEFAULT NULL COMMENT '注冊時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
沒有默認值的字段必須給值:nickname 字段設置了 not null 且沒有設置 default
insert into user(`status`, `create_time`) value(1, 1602295286);
c. 一次添加多條數據
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID,主鍵且自增',
`nickname` varchar(60) NOT NULL COMMENT '用戶昵稱',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態 0 關閉 1 開啟 默認為 1',
`create_time` int(11) DEFAULT NULL COMMENT '注冊時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
insert into user(`nickname`, `status`) value('張大民', 1), ('小新', 0), ('小剛同學', 1);
d. 添加一條數據的兩種寫法
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID,主鍵且自增',
`nickname` varchar(60) NOT NULL COMMENT '用戶昵稱',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態 0 關閉 1 開啟 默認為 1',
`create_time` int(11) DEFAULT NULL COMMENT '注冊時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
insert into user(`nickname`, `status`) value('小王', 1);
insert into user set `nickname` = '大王', `status` = '0';
3. MySQL 添加數據總結(常見用法)
不指定字段名,所有字段必須給值
insert into user value(null, '張三', '123456', '男', 20, 1602295286);
into 可以省略,但是一般都不省略
insert user value(null, '張三', '123456', '男', 20, 1602295286);
指定部分字段添加,沒有被指定的字段 要么會自動增長,要么允許為 null,要么有默認值
insert into user(`nickname`, `password`, `gender`, `age`) value('張三', '123456', '男', 20);
添加一條數據時也可以用 insert ... set
insert into user set `nickname` = '大王', `status` = '0';
添加多條數據
insert into user(`nickname`, `status`) value('張大民', 1), ('小新', 0), ('小剛同學', 1);