zoukankan      html  css  js  c++  java
  • 批量插入数据

    在实际开发中,可能会遇到向数据表中插入多条记录的情况,用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表中的数据批量插入成功,且只为前两列插入了数据,第三列使用的是默认值。

  • 相关阅读:
    luogu P2015 二叉苹果树
    luogu P1197 [JSOI2008]星球大战
    QBXT T15214 Day2上午遭遇
    luogu P2831 愤怒的小鸟
    luogu P1018 乘积最大
    [BZOJ2402]陶陶的难题II(树链剖分+线段树维护凸包+分数规划)
    [BZOJ1500][NOI2005]维修数列(splay)
    [BZOJ3282]Tree(LCT)
    [BZOJ4785][ZJOI2017]树状数组(概率+二维线段树)
    [BZOJ2427][HAOI2010]软件安装(Tarjan+DP)
  • 原文地址:https://www.cnblogs.com/momenglin/p/10928912.html
Copyright © 2011-2022 走看看