Note
DML-数据操作
记录操作数据库表中数据的常见语法
发布于 更新于
DML
数据操作语言,用来对数据库表中的数据进行添加、修改和删除。
添加数据
给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...)
VALUES (值1, 值2, ...);
字段名与值必须在数量和顺序上一一对应。没有指定的字段将使用默认值;如果字段没有默认值、不允许为 NULL,并且也没有自动生成值,则插入可能失败。
给全部字段添加数据
INSERT INTO 表名
VALUES (值1, 值2, ...);
省略字段列表时,必须按照表中字段的定义顺序为所有字段提供值。实际开发中更推荐显式列出字段名,避免表结构或字段顺序变化后插入错误。
批量添加数据
给指定字段批量添加数据:
INSERT INTO 表名 (字段名1, 字段名2, ...)
VALUES
(值1, 值2, ...),
(值1, 值2, ...),
(值1, 值2, ...);
给全部字段批量添加数据:
INSERT INTO 表名
VALUES
(值1, 值2, ...),
(值1, 值2, ...),
(值1, 值2, ...);
每组括号表示一行数据,各组包含的值数量必须一致,并与指定的字段数量对应。
插入数据时需要注意:
- 字符串和日期时间值通常需要使用单引号包裹,例如
'张三'、'2026-08-10'。 - 值需要符合字段的数据类型、长度和约束。
- 只有允许为
NULL的字段才能安全插入NULL;NULL与空字符串''含义不同。
修改数据
UPDATE 表名
SET 字段名1 = 值1, 字段名2 = 值2, ...
[WHERE 条件];
语法中的 [] 表示可选部分,实际编写 SQL 时不需要输入方括号。SET 用来指定需要修改的字段和值,WHERE 用来筛选需要修改的行。
省略
WHERE条件会修改表中的所有行
字段的新值也可以根据原值计算,例如将库存减少 1:
UPDATE product
SET stock = stock - 1
WHERE id = 1;
删除数据
DELETE FROM 表名
[WHERE 条件];
DELETE 用来删除满足条件的整行数据,不能只删除某个字段的值。如果需要清空某个字段,应使用 UPDATE 将其修改为 NULL、默认值或其他合适的值。
省略
WHERE条件会删除表中的所有行。
DELETE 属于 DML。在支持事务的存储引擎中,如果操作尚未提交,可以通过事务回滚;如果需要清空整张表,还可以根据是否需要事务、触发器和重置自增值等要求选择 DELETE 或 TRUNCATE TABLE。
示例
数据准备
创建员工表。为了保证员工编号唯一,并便于后续按编号修改和删除数据,示例在教程代码的基础上为 id 添加了主键约束。
CREATE TABLE emp (
id INT PRIMARY KEY COMMENT '编号',
workno VARCHAR(10) COMMENT '工号',
name VARCHAR(10) COMMENT '姓名',
gender CHAR(1) COMMENT '性别',
age TINYINT UNSIGNED COMMENT '年龄',
idcard CHAR(18) COMMENT '身份证号',
workaddress VARCHAR(50) COMMENT '工作地址',
entrydate DATE COMMENT '入职时间'
) COMMENT = '员工表';
添加数据
向员工表批量添加两行数据:
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES
(1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01'),
(2, '2', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01');
修改数据
将编号为 1 的员工年龄修改为 21,并将工作地址修改为上海:
UPDATE emp
SET age = 21, workaddress = '上海'
WHERE id = 1;
删除数据
删除编号为 2 的员工:
DELETE FROM emp
WHERE id = 2;