Mysql插入数据 insert into
MySQL中使用INSERT INTO语句向数据库表中插入新的数据记录。可以插入的方式有插入完整的记录、插入记录的一部分、插入多条记录、插入另一个查询的结果。
语法
-- 完整语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{ {VALUES | VALUE} (value_list) [, (value_list)] ...
|
VALUES row_constructor_list
}
[AS row_alias[(col_alias [, col_alias] ...)]]
[ON DUPLICATE KEY UPDATE assignment_list]
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[AS row_alias[(col_alias [, col_alias] ...)]]
SET assignment_list
[ON DUPLICATE KEY UPDATE assignment_list]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
[AS row_alias[(col_alias [, col_alias] ...)]]
{SELECT ... | TABLE table_name}
[ON DUPLICATE KEY UPDATE assignment_list]
-- value:
{expr | DEFAULT}
-- value_list:
value [, value] ...
-- row_constructor_list:
ROW(value_list)[, ROW(value_list)][, ...]
-- assignment:
col_name = [row_alias.]value
-- assignment_list:
assignment [, assignment] ...
-- 简单语法
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9);
为所有字段插入数据
- 方法1:
INSERT INTO tbl_name (col1,col2) VALUES(15,20);
⚡ 注意,使用该语句时字段列和数据值的数量必须相同。
INSERT语句后面的列名称顺序可以不是表定义时的顺序。
即插入数据时,不需要按照表定义的顺序插入,只要保证值的顺序与列字段的顺序相同就可以。
- 方法2(不推荐)
INSERT INTO tbl_name VALUES(15,20);
此时,值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
为表的指定字段插入数据
为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
INSERT INTO tbl_name (col1,col2) VALUES(15,20);
同时插入多条记录
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9);
一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句.
⚡ 但是多行的INSERT语句在处理过程中效率更高。
将查询结果插入到表中
INSERT还可以将SELECT语句查询的结果插入到表中.
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
使用MySQL8的 insert into table将查询结果插入到表中
针对 INSERT ... SELECT
语句,从 MySQL 8.0.19开始,可以使用 TABLE statement
代替 SELECT
子句。
语法为:
INSERT INTO ta TABLE tb;
-- TABLE tb is equivalent to SELECT * FROM tb.
-- 是用于插入所有数据
⚡ 操作演示
-- 现有tb2,数据如下
select * from tb1;
-- 数据如下
name |age|score|
--------+---+-----+
Jack |18 |61 |
XiaoMa |28 |88 |
Lucy |16 |57 |
Zhangsan|19 | |
-- 准备一张空表
create table tb2 like tb1;
select * from tb2;
-- 将tb1的所有数据查询出来插入tb2
insert into tb2 table tb1;
-- 查询tb2数据
select * from tb2;
-- 结果如下
name |age|score|
--------+---+-----+
Jack |18 |61 |
XiaoMa |28 |88 |
Lucy |16 |57 |
Zhangsan|19 | |