# MySQL教程 - 6 插入数据

现在库也建好了,表也建好了,可以向表中添加数据了。

添加数据使用 INSERT 关键字。


现在有 tb_employee 表,结构如下:

CREATE TABLE tb_employee (
    id INT AUTO_INCREMENT PRIMARY KEY,         -- 员工ID,自增主键
    emp_number VARCHAR(16),                    -- 工号,使用 VARCHAR 类型,长度可变
    name VARCHAR(64),                          -- 姓名,使用 VARCHAR 类型,长度可变
    id_card CHAR(18),                          -- 身份证号码,使用 CHAR 类型,长度固定为 18
    age TINYINT UNSIGNED,                      -- 年龄,使用 TINYINT UNSIGNED,确保年龄为正数
    gender CHAR(3),                            -- 性别,使用 CHAR(3),存储汉字 "男" 或 "女"
    salary DECIMAL(10, 2),                     -- 工资,使用 DECIMAL,存储小数
    entry_time DATETIME                        -- 入职时间,使用 DATETIME 类型
);
1
2
3
4
5
6
7
8
9
10

现在向该表添加数据。

因为还没有学习如何查询数据,所以可以通过图形化客户端查看表中的数据,在图形化界面中,双击打开表即可查看:

一般使用 SQL 执行插入数据,需要执行刷新操作才能显示出数据。

或者使用下面的语句查询 tb_employee 表的所有数据:

SELECT * FROM tb_employee;
1

关于查询,后面再将。

# 6.1 全部字段添加数据

全部字段添加数据,就是在插入数据的时候,需要指定表中所有字段的值。

语法:

INSERT INTO 表名 VALUES(1,2, ...);
1

举个栗子:

-- 添加三个员工的数据,分别设置各个字段的值
INSERT INTO tb_employee VALUES(1, '1', '叶文杰', '110101199901012345', 38, '女', 3800.00, '2024-11-24 10:10:10');

-- 可空的字段可以不设置值
INSERT INTO tb_employee VALUES(2, '2', '章北海', null, 43, '男', 13800.12, '2024-11-25 10:11:12');
1
2
3
4
5

插入的值要和字段的顺序保持一致,字符串和时间使用 '' 括起来。

执行完成,表中的数据如下:


使用客户端界面执行的时候,可以选中语句单条执行,也可以批量执行多条语句,执行完成会显示执行的结果,例如插入两条数据成功后,会返回更新的行数为 2

# 6.2 指定字段添加数据

指定字段添加数据,就是在插入数据的时候,只设置指定字段的值,如果字段设置为非空,那么该字段则必须设置。

语法:

INSERT INTO 表名 (字段1, 字段2, ...) VALUES(1,2, ...);
1

字段和值顺序要对应。

举个栗子:

-- 添加两个员工的数据,只设置指定的字段
-- id是主键,非空,但是是自动增长的,可以设置,也可以不设置,其他的值可以按照是否非空进行设置
INSERT INTO tb_employee(emp_number, name, entry_time) VALUES('3', '罗辑', '2024-01-12 09:08:07');
INSERT INTO tb_employee(emp_number, name, entry_time) VALUES('4', '云天明', '2025-03-04 06:17:11');
1
2
3
4

执行完成,表中的数据如下:

# 6.3 批量添加数据

批量添加数据就是使用一条SQL语句同时添加多条数据。

语法:

多条数据使用 , 分隔:

-- 方式1:全字段添加
INSERT INTO 表名 VALUES(1,2, ...), (1,2, ...), (1,2, ...), ...;

-- 方式2:指定字段添加
INSERT INTO 表名 (字段1, 字段2, ...) VALUES(1,2, ...), (1,2, ...), (1,2, ...), ...;
1
2
3
4
5

举个栗子:

-- 全字段同时添加三个员工的数据:
INSERT INTO tb_employee VALUES
(1, '1', '叶文杰', '110101199901012345', 38, '女', 3800.00, '2024-11-24 10:10:10'), 
(2, '2', '章北海', null, 43, '男', 13800.12, '2024-11-25 10:11:12'),
(3, '3', '罗辑', '440524200112302781', 28, '男', 23500.08, '2024-11-26 23:10:18');

-- 指定字段添加三个员工的数据:
INSERT INTO tb_employee(emp_number, name, entry_time) VALUES
('4', '史强', '2024-01-12 09:08:07'),
('5', '云天明', '2025-03-04 06:17:11'),
('6', '程心', '2025-11-26 23:10:18');
1
2
3
4
5
6
7
8
9
10
11