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