第11章 数据处理之增删改
创作日期:2021-11-26
1.插入数据
1.1 实际问题
- 解决方式:使用 INSERT 语句向表中插入数据。
1.2 方式1:VALUES的方式添加
- 使用这种语法一次只能向表中插入一条数据。
- 情况1:为表的所有字段按默认顺序插入数据
INSERT INTO 表名
VALUES (value1,value2,...);
值列表中需要为表的每一个字段值定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
INSERT INTO emp1
VALUES(001,'LiSi','2021-02-23',1700.50);
INSERT INTO emp1
VALUES(001,'WangEr',NULL,NULL);
情况2:为表的指定字段插入数据
INSERT INTO 表名(column1[,column2,...,columnn])
VALUES (value1 [,value2,...,valuen]);
为表的指定字段插入数据,就是在 INSERT 语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。在 INSERT 子句中随意列出列名,但是一旦列出,VALUES中要插入的value1,...valuen需要与column1,...columnn列一一对应。如果类型不同,将无法插入,并且MySQL会产生错误。
INSERT INTO emp1(id,`name`)
VALUES(003,'ZhangSan');
- 情况3:同时插入多条记录
INSERT 语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开,基本语法格式如下:
INSERT INTO 表名
VALUES
(value1 [,value2,...,valuen]),
(value1 [,value2,...,valuen]),
——
(value1 [,value2,...,valuen]);
或
INSERT INTO 表名(column1[,column2,...,columnn])
VALUES
(value1 [,value2,...,valuen]),
(value1 [,value2,...,valuen]),
——
(value1 [,value2,...,valuen]);
INSERT INTO emp1
VALUES
(004,'MaZi','2021-03-23',12200),
(005,'LaoLiu','2021-04-23',1500),
(006,'ZhaoSi','2021-05-23',18800);
SELECT * FROM emp1;
INSERT INTO emp1(id,`name`,hire_date)
VALUES
(007,'SunMing','2022-01-23'),
(008,'LiMengQi','2021-02-23'),
(009,'LiuHaiTao','2021-03-23');
使用 INSERT 同时插入多条记录时,MySQL 会返回一些正在执行单行插入时没有的额外信息,这些信息的含义如下:
- Records:表明插入的记录条数。
- Duplicates:表明插入时被忽略的记录,原因可能是这些记录包含了重复的主键值。
- Warnings:表明有问题的数据值,例如发生数据类转换。
一个同时插入多行记录的 INSERT 语句等同于多个单行插入的 INSERT 语句,但是多行的 INSERT 语句在处理过程中 效率更高。因为MySQL执行单条 INSERT 语句插入多行数据比使用多条 INSERT 语句块,所以在插入多条记录时最好选择使用单条 INSERT 语句的方式插入。
VALUES也可以写成 VALUE,但是 VALUES 是标准写法。