SQL Insert

1. 定义

维基百科:SQL Insert指令用于向数据表中添加记录。

慕课解释:SQL Insert,传闻中增删查改中的,是向数据表中写数据的主要途径。

2. 前言

本小节,我们将一起学习 SQL Insert

使用 Insert 插入数据可分为普通插入和批量插入两类,本小节将分别介绍这两类插入操作。

本小节测试数据如下,请先在数据库中执行:

DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  username varchar(20),
  age int
);

3. 普通插入

普通情况下,Insert 插入的数据一般为一条。

其语法如下:

INSERT INTO [table_name] ([col1], [col2]) VALUES([val1], [val2]);

其中table_name是待插入数据表名称,col是字段名称,val是待插入字段值,数字 1、2 表示多个字段。

3.1 例1、全字段插入 imooc_user

请书写 SQL 语句,向imooc_user数据表中插入一条记录,usernamepedroage23

分析

根据插入语法写出语句即可。

语句

INSERT INTO imooc_user(username,age) VALUES('pedro',23);

插入成功后,数据表信息如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
+----------+-----+

imooc_user 共有 username 和 age 两个字段,在插入时,如果插入的数据是全字段,那么可以省略前面的 col 。

省略后的语法如下:

INSERT INTO [table_name] VALUES([val1], [val2]);

因此上述例子的答案还可以这样写:

INSERT INTO imooc_user VALUES('pedro',23);

3.2 例2、单字段插入 imooc_user

请书写 SQL 语句,向imooc_user数据表中插入一条记录,usernamepedro

分析

根据插入语法写出语句即可。

语句

INSERT INTO imooc_user(username) VALUES('pedro');

插入成功后,数据表信息如下:

+----------+--------+
| username | age    |
+----------+--------+
| pedro    | <null> |
+----------+--------+

注意: 如果 age 字段有 NOT NULL 约束,在只插入 username 的情况下,该次插入会报错。

4. 批量插入

SQL除了普通插入外,也提供了批量插入来一次性插入多条记录。

批量插入数据的语法如下:

INSERT INTO [table_name] ([col1], [col2]) VALUES ([val1], [val2]),([val1], [val2]);

批量插入与普通插入的区别在于,VALUES关键字后面接受多个字段元组,每个()代表一个字段元组,一个字段元组会生成一条记录

4.1 例3、批量插入 imooc_user

请书写 SQL 语句,向imooc_user表中插入两条记录,第一条记录usernamepedroage23;第二条记录usernamemikeage18

分析

根据批量插入语法写出语句即可。

语句

INSERT INTO imooc_user(username,age) VALUES('pedro',23),('mike',18);

插入成功后,数据表信息如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| mike     | 18  |
+----------+-----+

5. 总结

  • Insert 是数据表增加数据的主要方式,语法简单,作用却大,请多加练习。
  • 并不是每个 RDBMS 都支持批量插入 ,批量插入的移植性并不好,如果你使用的数据库不支持,请将它改为多个普通插入。