MySQL

MySQL 知识量:16 - 40 - 165

7.1 数据插入><

插入单个行- 7.1.1 -

插入数据需要使用insert语句,具体用法有:

  • 插入完整的行

  • 插入行的一部分

  • 插入多个行

  • 插入某些查询的结果

以示例说明插入语句的具体语法:向学生表中插入一条信息。

insert into student(name,age,sex) values('Jack',12,'male');
  • insert into后跟要插入信息的表名。

  • 括号中列出涉及插入信息的列名,用逗号进行分割。

  • values指示后面是插入的具体数据,括号内填写具体插入数据,注意顺序与前面列名要一致。

如果语句正确执行,命令行会显示:

Query OK, 1 row affected (0.02 sec)

需要注意的几点是:

  • 应当总是给出具体列名。

  • 插入数据的类型与表列的定义一定要兼容。特别是字符串要加引号。

  • 如果省略了某个列,那么该列在定义时应当是允许为NULL值的,或者给出了默认值。

插入多个行- 7.1.2 -

可以使用insert语句一次性插入多个行,具体语法是用括号将插入值部分括起来,且每组插入值用逗号分隔。

例如向学生表中插入多条信息:

insert into student(name,age,sex)
values('Alice',10,'female'),('Bonnie',11,'male'),('Ella',12,'female');

如果语句正确执行,命令行会显示:

Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

插入查询出的数据- 7.1.3 -

除了使用指定的值进行插入操作外,还可以使用查询出的数据来插入表中,这需要使用insert select,例如新建一个表people,查询学生表student的信息并插入people:

insert into people(realName,realAge,sex) select name,age,sex from student;

如果语句正确执行,命令行会显示:

Query OK, 10 rows affected (0.00 sec)
Records: 10  Duplicates: 0  Warnings: 0

查询表people结果为:

+----+----------+---------+--------+
| id | realName | realAge | sex    |
+----+----------+---------+--------+
|  1 | Susan    |      11 | female |
|  2 | Jame     |      12 | male   |
|  3 | Bob      |      11 | male   |
|  4 | Robot    |      10 | male   |
|  5 | Jen      |      11 | female |
|  6 | Toney    |      10 | male   |
|  7 | Jack     |      12 | male   |
|  8 | Alice    |      10 | female |
|  9 | Bonnie   |      11 | male   |
| 10 | Ella     |      12 | female |
+----+----------+---------+--------+

insert select不要求两表的列名一样,但列的数量要一样,MySQL用列的位置确定该把哪个值插入哪里,这种插入数据的方法十分适用于表的复制。