一 insert 语句
强调: 本文介绍的内容'很基础',仅做'记录'用,参考价值'较少'
① 总述
目的: 增加'rows'记录
1、'完整'格式
insert [into] 表名[字段名1[, 字段名2]] value[s](值1, 值2);
备注:指定部分字段添加,'没有被指定'的字段要么会'自动增长',要么允许为 'null',要么有'默认'
2、省略'字段名'
insert [into] 表名 value(值1, 值2[, ...]);
省略'所有字段名'时,必须'依次添加所有段'对应的值
3、只添加'一条数据'时,也可以使用 insert ... set 命令
备注: 此方式 '无法插入空值' null
4、使用INSERT INTO … VALUES语句的'多值'插入
INSERT INTO table_name (col1, col2) VALUES (value1, value2),(value4, value5)
5、insert into ... select --> '了解即可'
② 练习模板表
CREATE TABLE `user` (
/* 如果插入数据时某些列可以自动生成,则可以省略这些列并使用 DEFAULT 关键字指定默认值 */
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键且自增',
`nickname` varchar(50) 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='用户表';
③ 方式一 省略所有的字段名
insert into user value(null, 'kangkang', 1, 16, null, 1602295286);
备注: into 可以'省略',但是一般都'不省略'
强调: 不指定'字段名',所有字段'必须给值'
++++++++++++++++ "分割线" ++++++++++++++++
1、因为字段id会'自动增长',设置为'null'即可
④ 方式二 省略部分字段
注意: 插入'数据'时,必须按照表中'列的顺序'进行 --> '列的数据类型和值'要对应
细节: 给'指定的字段'添加数据,则'没有'被指定的字段必须有'默认值'
备注: 指定'部分字段'添加,没有被指定的字段要么会'自动增长',要么允许为 'null',要么有默认值
⑤ 方式三 一次添加多条数据
insert into user(`nickname`, `status`) value('jane', 1), ('lucy', 0);
⑥ 方式四 添加一条数据的另外一种写法
insert into user set `nickname` = '大王', `status` = '0';
⑦ INSERT INTO SELECT
1、除了在'values子句'中使用'行值'外,还可以使用'SELECT语句结果'作为INSERT语句的'数据源'
2、说明INSERT INTO SELECT语句的'语法'
INSERT INTO table_name(column_list)
SELECT
select_list
FROM
another_table
WHERE
condition;
这种语法中,可以'使用SELECT语句'而不是VALUES子句,SELECT语句可以从一个或多个表'检索数据'
遗留: 讲解'SELECT'语句之后,再会来'写案例'