MySQL数据操作语言详解与应用
MySQL数据操作语言详解与应用
DML:数据操作语言
包含:插入(INSERT)、修改(UPDATE)、删除(DELETE)三大核心操作
插入数据操作
- 方法一:标准插入语法
INSERT INTO 表名 (列名列表) VALUES(值列表);
INSERT INTO employees(employee_name,department,hire_date) VALUES('张三','技术部','2023-05-15');
INSERT INTO 表名 VALUES (完整值列表)
INSERT INTO employees VALUES(0,'李四',1,'研发中心','2023-01-10');
INSERT INTO 表名 VALUES(值列表1),(值列表2)...;
INSERT INTO departments VALUES(0,'市场部'),(0,'财务部');
注意事项:
1. 数据值必须与对应列的数据类型匹配
2. 允许NULL值的列,可以省略字段或显式写入NULL
3. 列的数量必须与值的数量一致
4. 可省略列名列表,默认按表结构顺序插入所有列
5. 支持一次性插入多行数据
6. 支持子查询插入
INSERT INTO customer_info(customer_name,age,gender,location)(SELECT customer_name,age,gender,location FROM customer_archive WHERE status='active')
- 方法二:SET语法(不推荐)
INSERT INTO 表名 SET 列名=值,列名=值,...
特点:
1. 不支持多行数据插入
2. 不支持子查询功能
修改数据操作
- 单表修改:
UPDATE 表名
SET 列=新值,列=新值,...
WHERE 筛选条件;
- 多表修改:
-- SQL92语法:
UPDATE 表1 别名,表2 别名
SET 列=值,...
WHERE 连接条件
AND 筛选条件;
-- SQL99语法:
UPDATE 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
SET 列=值,...
WHERE 筛选条件;
删除数据操作
- 单表删除:
DELETE FROM 表名 WHERE 筛选条件;
- 多表删除:
-- SQL92语法:
DELETE 表1的别名,表2的别名
FROM 表1 别名,表2 别名
WHERE 连接条件
AND 筛选条件;
-- SQL99语法:
DELETE 表1的别名,表2的别名
FROM 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名 ON 连接条件
WHERE 筛选条件;
DELETE与TRUNCATE对比
- TRUNCATE语法
TRUNCATE TABLE 表名;
TRUNCATE TABLE类似于删除所有行的DELETE语句或DROP TABLE后再CREATE TABLE的组合操作,
尽管TRUNCATE与DELETE功能相似,但它被归类为DDL语句而非DML语句
- 对比分析:
- DELETE可以添加WHERE条件进行筛选删除,TRUNCATE不能添加条件
- TRUNCATE操作执行效率略高于DELETE
- 对于包含自增列的表,DELETE操作后插入数据自增值从断点继续,而TRUNCATE后自增值重置为1
- DELETE操作返回受影响的行数,TRUNCATE操作返回"受影响的行0"信息
- DELETE操作支持事务回滚,TRUNCATE操作不支持回滚
