MySql数据库插入数据,可以像其他数据库一样,一条insert语句插入一条记录,也可以一条insert语句同时插入多条记录。示例如下:
-- 方式一:执行多条SQL,插入多条数据
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生1', 11, 1 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生2', 13, 2 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生3', 14, 2 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生4', 16, 1 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生5', 12, 3 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生6', 13, 3 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生7', 16, 3 );
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` ) VALUES ( '学生8', 15, 1 );
-- 方式二:执行一条SQL,插入多条数据
INSERT INTO `test`.`student` ( `StuName`, `Age`, `ClassID` )
VALUES
( '学生1', 11, 1 ),
( '学生2', 13, 2 ),
( '学生3', 14, 2 ),
( '学生4', 16, 1 ),
( '学生5', 12, 3 ),
( '学生6', 13, 3 ),
( '学生7', 16, 3 ),
( '学生8', 15, 1 );
第二种方式相对于其他数据库来说,除了语法更加简洁,还有一些其他的不同特点。比如本例中用到的student表中包含了ClassID字段是有外键约束的。当我们采取第一种方式,通过多条SQL插入数据的时候,如果某条SQL违反了外键约束,则本条SQL执行失败,本次insert操作失败,之后的insert语句也不会再执行,但是本条SQL之前的insert操作还是会生效的,如果要实现要么操作全成功,要么操作全失败,则需要使用到数据事务。当我们使用第二种方式(即一条insert语句插入多条数据的方式),则要么数据全部insert成功,要么全部insert都失败,自动就达到了事务的效果。
具体使用那种更好,还是需要根据应用场景来选择。