MySQL增删改查SQL语句
大约 4 分钟
一、先回顾:我们要操作的表
假设你已经在上一章里创建了 demo 数据库和 users 表:
USE demo;
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
接下来所有例子都围绕这张表来练习。
二、INSERT:插入数据
2.1 最常见写法
INSERT INTO users (name, email, age)
VALUES ('张三', 'zhangsan@test.com', 20);
说明:
INSERT INTO 表名 (列1, 列2, ...):指定要插入哪些列。VALUES (值1, 值2, ...):按顺序对应上面的列。id字段设置了AUTO_INCREMENT,可以不写,会自动生成。created_at有默认值,也可以不写。
2.2 一次插入多行
INSERT INTO users (name, email, age) VALUES
('李四', 'lisi@test.com', 22),
('王五', 'wangwu@test.com', 25),
('赵六', 'zhaoliu@test.com', 30);
小技巧:开发中初始化数据或者批量导入时会经常这样写。
三、SELECT:查询数据(最常用)
3.1 查询整张表
SELECT * FROM users;
*表示所有列。- 初学/调试时用
*很方便,但在正式项目中,推荐明确写出列名。
3.2 只查部分列
SELECT id, name, age FROM users;
3.3 使用 WHERE 过滤条件
-- 查询年龄大于等于 25 的用户
SELECT * FROM users WHERE age >= 25;
-- 查询叫“张三”的用户
SELECT * FROM users WHERE name = '张三';
常见比较运算符:
=、<>或!=、>、<、>=、<=BETWEEN x AND y:在某个区间内。
3.4 AND / OR 组合条件
-- 年龄在 20 到 30 之间,且邮箱不是 null
SELECT * FROM users
WHERE age BETWEEN 20 AND 30
AND email IS NOT NULL;
-- 名字是“张三”或“李四”
SELECT * FROM users
WHERE name = '张三' OR name = '李四';
注意:
AND的优先级高于OR,复杂条件建议加括号。- 判断
NULL要用IS NULL/IS NOT NULL,不能用=。
3.5 模糊查询:LIKE
-- 名字以“张”开头
SELECT * FROM users WHERE name LIKE '张%';
-- 邮箱中包含“test”
SELECT * FROM users WHERE email LIKE '%test%';
通配符:
%:匹配任意长度的任意字符(包括 0 个字符)。_:匹配任意单个字符。
3.6 排序:ORDER BY
-- 按年龄从小到大
SELECT * FROM users ORDER BY age ASC;
-- 按创建时间从新到旧
SELECT * FROM users ORDER BY created_at DESC;
3.7 限制条数:LIMIT
-- 只看前 5 条
SELECT * FROM users LIMIT 5;
-- 分页:跳过前面 10 条,再取 5 条
SELECT * FROM users ORDER BY id LIMIT 10, 5;
-- 等价写法:LIMIT 5 OFFSET 10;
四、UPDATE:更新数据
4.1 基本写法
-- 把 id 为 1 的用户年龄改为 21
UPDATE users
SET age = 21
WHERE id = 1;
说明:
SET后面可以写多个字段:
UPDATE users
SET name = '新名字', age = 30
WHERE id = 2;
非常重要:UPDATE 一定要加 WHERE 条件!
否则可能把整张表所有行都改掉。
4.2 结合条件更新
-- 把年龄小于 18 的用户统一改为 18
UPDATE users
SET age = 18
WHERE age < 18;
五、DELETE:删除数据
5.1 删除满足条件的记录
-- 删除 id 为 3 的用户
DELETE FROM users WHERE id = 3;
-- 删除年龄大于 60 的用户
DELETE FROM users WHERE age > 60;
5.2 清空整张表(慎用)
-- 删除表中所有数据,但保留表结构
DELETE FROM users;
-- 更快的清空方式(同时重置自增主键)
TRUNCATE TABLE users;
再次强调:平时写
DELETE几乎总是要带WHERE,没有WHERE的 DELETE/UPDATE 都要非常小心。
六、综合练习:做一轮常见操作
假设现在你刚建完 users 表,可以按下面顺序熟悉一遍:
- 插入几条数据
INSERT INTO users (name, email, age) VALUES
('张三', 'zhangsan@test.com', 20),
('李四', 'lisi@test.com', 22),
('王五', 'wangwu@test.com', 25);
- 查询所有数据
SELECT * FROM users;
- 只看名字和年龄,并按年龄从大到小排
SELECT name, age FROM users ORDER BY age DESC;
- 把“张三”的年龄改为 21
UPDATE users SET age = 21 WHERE name = '张三';
- 删除年龄大于 23 的用户
DELETE FROM users WHERE age > 23;
- 再次查看所有数据
SELECT * FROM users;
如果你能在命令行里顺利跑完上面这些,并且能大致解释每条语句在干什么,就说明你已经基本掌握了 增(INSERT)删(DELETE)改(UPDATE)查(SELECT) 这四个最核心操作。
七、本篇小结(牢记四个单词)
- INSERT:往表里插入数据。
- SELECT:从表里查询数据。
- UPDATE:修改已有数据。
- DELETE:删除数据。
以后你在任何系统里看到“增删改查”这个词,基本上就是在说这四类操作。学会用它们操作表,就已经迈进了 MySQL 实战的大门。接下来可以看下一篇:多表查询与约束,学习关联多张表、保证数据正确性。+
Loading...
