批量插入数据

在实际开发中,可能会遇到向数据表中插入多条记录的情况,用INSERT语句可以一条一条地插入数据,但这样做明显比较麻烦,这时可以进行批量插入数据,提高工作效率。接下来分为两个方面讲解,一个是为所有列批量插入数据,另一个是为指定列批量插入数据。

1.为所有列批量插入数据

实际上,使用一条INSERT语句就可以实现数据的批量插入。与插入一条数据类似,批量插入时,语句中罗列多个VALUES即可,语法格式如下所示。

INSERT INTO 表名[(字段名1,字段名2,……)]

VALUES(值1,值2,……),(值1,值2,……),……,(值1,值2,……);

以上示例中,“字段名1,字段名2”表示数据表中的字段名称,是可选的,“值1,值2”表示每个字段要添加的数据,每个值的顺序、类型必须与字段名对应。

在讲解案例之前,首先在数据库qianfeng2中创建一个教师表teacher,如表所示。

                                                                    teacher表

字段

数据类型

说明

id

INT

教师编号

name

VARCHAR(50)

教师姓名

age

INT

教师年龄

首先使用qianfeng2数据库,SQL语句如下所示。

mysql> USE qianfeng2;

Database changed

现在可以创建数据表teacher,SQL语句如下所示。

mysql> CREATE TABLE teacher(

    ->     id INT,

    ->     name VARCHAR(50),

    ->     age INT

    -> );

Query OK, 0 rows affected (0.16 sec)

以上执行结果证明表创建完成。为了进一步验证,使用DESC语句查看库中的emp表,SQL语句如下所示。

mysql> DESC teacher;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(50) | YES  |     | NULL    |       |

| age   | int(11)     | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.06 sec)

从以上执行结果可看出,teacher表成功创建。

接下来通过具体案例演示为所有列批量插入数据,如例3-4所示。

通过INSERT语句为所有列批量插入数据,SQL语句如下所示。

mysql> INSERT INTO teacher(id,name,age)

    -> VALUES(1,'AA',20),(2,'BB',21);

Query OK, 2 rows affected (0.04 sec)

Records: 2  Duplicates: 0  Warnings: 0

以上执行结果证明插入数据完成,这是通过一条SQL语句插入了两条数据。为了进一步验证,使用SELECT语句查看teacher表中的数据,SQL语句如下所示。

mysql> SELECT * FROM teacher;

+------+------+------+

| id   | name | age  |

+------+------+------+

|    1 | AA   |   20 |

|    2 | BB   |   21 |

+------+------+------+

2 rows in set (0.00 sec)

从以上执行结果可看出,teacher表中的数据批量插入成功。另外,SQL语句中字段名是可以省略的。接下来演示省略字段名的情况,SQL语句如下所示。

mysql> INSERT INTO teacher

    -> VALUES(3,'CC',22),(4,'DD',23);

Query OK, 2 rows affected (0.03 sec)

Records: 2  Duplicates: 0  Warnings: 0

以上执行结果证明插入数据完成,这是省略字段名,通过一条SQL语句插入了2条数据。为了进一步验证,使用SELECT语句查看teacher表中的数据,SQL语句如下所示。

mysql> SELECT * FROM teacher;

+------+------+------+

| id   | name | age  |

+------+------+------+

|    1 | AA   |   20 |

|    2 | BB   |   21 |

|    3 | CC   |   22 |

|    4 | DD   |   23 |

+------+------+------+

4 rows in set (0.00 sec)

从以上执行结果可看出,teacher表中的数据批量插入成功。

2.为指定列批量插入数据

数据批量插入时,同样可以指定某几列,其他列自动使用默认值,这与前面学习为指定列插入一条数据类似。

接下来通过具体案例演示为指定列批量插入数据,如例3-5所示。

向teacher表批量插入数据,且只插入前两列数据,SQL语句如下所示。

mysql> INSERT INTO teacher(id,name)

    -> VALUES(5,'EE'),(6,'FF');

Query OK, 2 rows affected (0.13 sec)

Records: 2  Duplicates: 0  Warnings: 0

以上执行结果证明插入数据完成,这是指定前两个字段,通过一条SQL语句插入了两条数据。为了进一步验证,使用SELECT语句查看teacher表中的数据,SQL语句如下所示。

mysql> SELECT * FROM teacher;

+------+------+------+

| id   | name | age  |

+------+------+------+

|    1 | AA   |   20 |

|    2 | BB   |   21 |

|    3 | CC   |   22 |

|    4 | DD   |   23 |

|    5 | EE   | NULL |

|    6 | FF   | NULL |

+------+------+------+

6 rows in set (0.00 sec)

从以上执行结果可看出,teacher表中的数据批量插入成功,且只为前两列插入了数据,第三列使用的是默认值。

posted @ 2019-05-27 08:59  莫孟林  阅读(1718)  评论(0编辑  收藏  举报