mysql如何多行插入
发布网友
发布时间:2022-05-05 00:20
我来回答
共2个回答
懂视网
时间:2022-05-05 04:41
mysql可以通过insert语句一次性插入多条记录,但是这一条语句是个事务,所以要成功都成功,要失败都失败。语句中每条记录都是通过()括起来。且该语法是mysql自身的,不是标准语法,无法通用。
mysql一次插入多条数据:
INSERT INTO hk_test(username, passwd) VALUES
('qmf2', 'qmf2'),('qmf3', 'qmf3'),('qmf4', 'qmf4'),('qmf5', 'qmf5')
GO
我们先来创建一种表Authors:
CREATE TABLE Authors(
AuthID SMALLINT NOT NULL PRIMARY KEY,
AuthFN VARCHAR(20),
AuthMN VARCHAR(20),
AuthLN VARCHAR(20)
)
ENGINE=INNODB;
然后向表中一次性插入多条数据,sql插入代码如下:
INSERT INTO Authors VALUES (1006, 'H', 'S.', 'T'),
(1007, 'J', 'C', 'O'),
(1008, 'B', NULL, 'E'),
(1009, 'R', 'M', 'R'),
(1010, 'J', 'K', 'T'),
(1011, 'J', 'G.', 'N'),
(1012, 'A', NULL, 'P'),
(1013, 'A', NULL, 'W'),
(1014, 'N', NULL, 'A');
其实与一条一条插入的SQL语句非常类似,只是多条插入语句使用逗号将每条数据分开。
结果如下:
热心网友
时间:2022-05-05 01:49
测试开始前
mysql> show status like '%commit%' ;
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| Com_commit | 0 |
| Com_xa_commit | 0 |
| Handler_commit | 0 |
+----------------+-------+
3 rows in set (0.00 sec)
使用多行insert。
mysql> insert into t1(a)
-> values (1),
-> (2);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
数据库只有提交一次.
mysql> show status like '%commit%' ;
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| Com_commit | 0 |
| Com_xa_commit | 0 |
| Handler_commit | 1 |
+----------------+-------+
3 rows in set (0.00 sec)
可以看到通过这种方式可以对批量insert进行优化.
SQL> insert into t1(a)
2 values (1),
3 (2);
insert into t1(a)
values (1),
(2)
ORA-00933: SQL command not properly ended
对于这种直接insert多行的方式,oracle数据库不支持。