2025/12/2
开启事务:conn.setAutoCommit(false);
提交事务:conn.commit();
回滚事务:conn.rollback();
DML:对表中数据进行增删改
1.指定的列添加数据
INSERT INTO 表名(列名1,列名2,...)VALUES(值1,值2,...);
2.给全部列添加数据
3.批量添加数据
INSERT INTO 表名(列名1,列名2,...)VALUES(值1,值2,...),(值1,值2,...)...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;(不建议这样省略列名,不然看不到修改的是哪一列)
INSERT INTO stu(id,name,sex,birth,score,email)values(2,‘李四’,‘男’,‘1999.9.9’,100,’xxx‘)
一、DDL(Data Definition Language,数据定义语言)
作用:定义 / 修改数据库、表、视图、索引等数据库对象的结构,操作后通常自动提交事务(无法回滚)。
- 数据库相关
语句 功能描述 示例
CREATE DATABASE 创建新数据库 CREATE DATABASE test_db DEFAULT CHARSET utf8mb4;
DROP DATABASE 删除数据库(含所有数据,谨慎使用) DROP DATABASE IF EXISTS test_db;
ALTER DATABASE 修改数据库属性(如字符集、排序规则) ALTER DATABASE test_db CHARACTER SET utf8;
USE 切换当前操作的数据库(虽非 “定义”,但常用) USE test_db; - 表相关(核心)
语句 功能描述 示例
CREATE TABLE 创建新表(指定字段、类型、约束) CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age TINYINT);
DROP TABLE 删除表(含所有数据,谨慎使用) DROP TABLE IF EXISTS user;
ALTER TABLE 修改表结构(添加 / 删除字段、修改类型 / 约束) 1. 添加字段:ALTER TABLE user ADD email VARCHAR(100) UNIQUE; - 删除字段:ALTER TABLE user DROP COLUMN age;
- 修改字段类型:ALTER TABLE user MODIFY name VARCHAR(80);
TRUNCATE TABLE 清空表数据(保留表结构,速度比 DELETE 快) TRUNCATE TABLE user;
RENAME TABLE 重命名表 RENAME TABLE user TO t_user; - 其他数据库对象
语句 功能描述 示例
CREATE VIEW 创建视图(虚拟表,基于查询结果) CREATE VIEW v_user AS SELECT id, name FROM user WHERE age > 18;
DROP VIEW 删除视图 DROP VIEW IF EXISTS v_user;
CREATE INDEX 为表创建索引(提升查询效率) CREATE INDEX idx_user_name ON user(name);
DROP INDEX 删除索引 DROP INDEX idx_user_name ON user;
二、DML(Data Manipulation Language,数据操纵语言)
作用:对表中的数据进行增删改,操作后需手动提交(COMMIT)或回滚(ROLLBACK)事务(默认自动提交的数据库除外,如 MySQL)。
语句 功能描述 示例
INSERT 插入数据(单行 / 多行) 1. 单行:INSERT INTO user(name, age) VALUES('张三', 20); - 多行:INSERT INTO user(name, age) VALUES('李四', 22), ('王五', 25);
DELETE 删除数据(可按条件,无条件则清空表) 1. 条件删除:DELETE FROM user WHERE age < 18; - 清空所有:DELETE FROM user;(保留自增序列)
UPDATE 修改数据(必须加WHERE条件,否则全表更新) UPDATE user SET age = 21 WHERE name = '张三';
REPLACE 替换数据(存在则更新,不存在则插入) REPLACE INTO user(id, name) VALUES(1, '张三新');
三、DQL(Data Query Language,数据查询语言)
作用:从表中查询数据(仅读取,不修改数据),核心是 SELECT 语句,配合各种子句实现复杂查询。 - 基础查询
语句 / 子句 功能描述 示例
SELECT 指定查询字段(* 表示所有字段) 1. 查询所有:SELECT * FROM user; - 指定字段:SELECT id, name FROM user;
FROM 指定查询的表(可多表关联) SELECT u.name, o.order_no FROM user u JOIN order o ON u.id = o.user_id;
WHERE 过滤行数据(条件查询) SELECT * FROM user WHERE age BETWEEN 18 AND 30;
DISTINCT 去重查询(去除重复记录) SELECT DISTINCT age FROM user; - 排序与限制
子句 功能描述 示例
ORDER BY 排序(ASC 升序,DESC 降序,默认升序) SELECT * FROM user ORDER BY age DESC;
LIMIT 限制查询结果条数(分页常用) 1. 前 5 条:SELECT * FROM user LIMIT 5; - 分页(第 2 页,每页 5 条):SELECT * FROM user LIMIT 5 OFFSET 5;(或 LIMIT 5,5)
- 分组与聚合
子句 功能描述 示例
GROUP BY 按字段分组(配合聚合函数) SELECT age, COUNT() AS user_count FROM user GROUP BY age;
HAVING 过滤分组结果(对聚合后的数据过滤,区别于 WHERE) SELECT age, COUNT() AS user_count FROM user GROUP BY age HAVING user_count > 2;
聚合函数 统计数据(COUNT/SUM/AVG/MAX/MIN) 1. 计数:COUNT(id)(忽略 NULL)/COUNT(*)(包含 NULL) - 求和:SUM(score)
- 平均值:AVG(age)
- 多表关联查询
关联方式 功能描述 示例
JOIN(内连接) 只查询两表中匹配的记录 SELECT u.name, o.order_no FROM user u JOIN order o ON u.id = o.user_id;
LEFT JOIN(左连接) 查询左表所有记录,右表匹配不到则为 NULL SELECT u.name, o.order_no FROM user u LEFT JOIN order o ON u.id = o.user_id;
RIGHT JOIN(右连接) 查询右表所有记录,左表匹配不到则为 NULL SELECT u.name, o.order_no FROM user u RIGHT JOIN order o ON u.id = o.user_id;
UNION/UNION ALL 合并多个查询结果(UNION 去重,UNION ALL 保留重复) SELECT name FROM user UNION ALL SELECT product_name FROM goods; - 子查询
类型 功能描述 示例
标量子查询 子查询返回单个值(用于=/>等条件) SELECT * FROM user WHERE age > (SELECT AVG(age) FROM user);
列子查询 子查询返回单列多行(用于IN/NOT IN) SELECT * FROM user WHERE id IN (SELECT user_id FROM order WHERE price > 100);
表子查询 子查询返回多行多列(用于FROM子句) SELECT t.name FROM (SELECT * FROM user WHERE age > 20) t;
核心区别总结
类型 核心作用 事务特性 代表语句
DDL 定义 / 修改数据库对象结构 自动提交(不可回滚) CREATE/DROP/ALTER/TRUNCATE
DML 增删改表中数据 可提交 / 回滚 INSERT/DELETE/UPDATE
DQL 查询表中数据 仅读取,无事务影响 SELECT(配合各种子句)
浙公网安备 33010602011771号