DML (数据操作语言) 学习笔记
1. 数据表结构
首先创建员工表 employee
:
CREATE TABLE `employee` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(20) NOT NULL COMMENT '用户名',
`password` varchar(32) DEFAULT '123456' COMMENT '密码',
`name` varchar(10) NOT NULL COMMENT '姓名',
`gender` tinyint unsigned NOT NULL COMMENT '性别, 1 男; 2, 女',
`phone` char(11) NOT NULL COMMENT '手机号',
`job` tinyint unsigned DEFAULT NULL COMMENT '职位 1 班主任, 2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
`salary` int unsigned DEFAULT NULL COMMENT '薪资',
`entry_date` date DEFAULT NULL COMMENT '入职日期',
`image` varchar(255) DEFAULT NULL COMMENT '图像',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';
2. 数据操作语言(DML)
2.1 添加数据 (INSERT)
基本语法
-- 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
-- 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
-- 批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
示例
-- 给employee表指定字段添加数据
INSERT INTO employee(id, username, name, gender, phone, job, salary, entry_date)
VALUES(1, 'user1', '张三', 1, '13800138001', 2, 10000, '2020-01-01');
-- 给employee表所有字段添加数据
INSERT INTO employee
VALUES(2, 'user2', '123456', '李四', 2, '13800138002', 1, 8000, '2020-02-01', NULL, NOW(), NOW());
-- 批量插入数据
INSERT INTO employee(username, name, gender, phone)
VALUES('user3', '王五', 1, '13800138003'),
('user4', '赵六', 2, '13800138004');
2.2 修改数据 (UPDATE)
基本语法
UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [WHERE 条件];
示例
-- 修改id为1的员工姓名
UPDATE employee SET name = '张三丰' WHERE id = 1;
-- 修改id为2的员工姓名和职位
UPDATE employee SET name = '李思思', job = 3 WHERE id = 2;
-- 修改所有员工的入职日期
UPDATE employee SET entry_date = '2023-01-01';
-- 修改薪资低于10000的员工薪资增加10%
UPDATE employee SET salary = salary * 1.1 WHERE salary < 10000;
2.3 删除数据 (DELETE)
基本语法
DELETE FROM 表名 [WHERE 条件];
示例
-- 删除gender为2(女)的员工
DELETE FROM employee WHERE gender = 2;
-- 删除id为5的员工
DELETE FROM employee WHERE id = 5;
-- 删除所有员工数据
DELETE FROM employee;
3. 注意事项
INSERT 注意事项:
- 字段顺序与值顺序必须一一对应
- 字符串和日期型数据应包含在引号中
- 插入的数据大小应在字段规定范围内
- 未指定的字段会使用默认值或NULL
UPDATE 注意事项:
- WHERE条件可选,没有条件会修改整张表
- 可以同时修改多个字段
- 可以使用表达式计算新值
DELETE 注意事项:
- WHERE条件可选,没有条件会删除整张表数据
- DELETE不能删除单个字段(用UPDATE设置为NULL代替)
- 删除操作需谨慎,建议先备份数据
- 大量数据删除可能影响性能
4. 最佳实践
- 执行DML操作前,先使用SELECT验证条件是否正确
- 批量操作时考虑使用事务保证数据一致性
- 重要数据删除前先备份
- 生产环境谨慎使用无条件的UPDATE和DELETE