一、什么是CRUD?¶
在MySQL中,CRUD是四个基础操作的缩写,分别对应数据库中数据的四种核心操作:
- Create(创建):向数据库插入新数据
- Read(读取):从数据库查询已有数据
- Update(更新):修改数据库中已有的数据
- Delete(删除):从数据库中移除数据
这些操作是使用MySQL进行数据管理的基础,掌握它们就能轻松实现数据的增删改查。
二、准备工作:创建测试表和数据¶
在开始操作前,我们先创建一个简单的表和测试数据,方便后续演示。打开MySQL客户端(如Navicat、SQLyog或命令行),执行以下SQL语句:
-- 创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT, -- 自增主键(唯一标识)
name VARCHAR(50) NOT NULL, -- 学生姓名(不能为空)
age INT, -- 年龄
class VARCHAR(20) -- 班级
);
-- 插入测试数据
INSERT INTO students (name, age, class) VALUES
('小明', 18, '一班'),
('小红', 19, '二班'),
('小刚', 17, '一班'),
('小丽', 20, '三班');
现在表中已有4条数据,后续所有操作都基于这个表。
三、Create(创建数据):INSERT语句¶
作用:向表中添加新的记录。
语法格式:¶
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
示例1:插入单条数据¶
向students表中插入一名新学生“小强”,年龄16,班级“二班”:
INSERT INTO students (name, age, class)
VALUES ('小强', 16, '二班');
注意:
- 字段列表和值列表必须一一对应(顺序、类型一致)。
- 若插入所有字段,可省略字段列表(但需确保值的顺序与表定义一致):
INSERT INTO students VALUES (NULL, '小芳', 15, '四班');
(id为自增主键,用NULL自动生成)。
- 字符串类型的值需用单引号包裹,数值类型直接写数字。
示例2:批量插入数据¶
一次插入多条记录:
INSERT INTO students (name, age, class)
VALUES
('小华', 17, '一班'),
('小亮', 18, '二班');
四、Read(读取数据):SELECT语句¶
作用:从表中查询数据,是最常用的操作。
基础语法:¶
SELECT 字段1, 字段2, ... FROM 表名;
示例1:查询所有数据¶
查询students表中所有学生的信息:
SELECT * FROM students; -- * 表示查询所有字段
示例2:条件查询¶
- 筛选年龄大于18岁的学生:
SELECT name, age FROM students WHERE age > 18;
- 按班级筛选(精确匹配):
SELECT * FROM students WHERE class = '一班';
- 多条件组合(年龄>17且班级=二班):
SELECT * FROM students WHERE age > 17 AND class = '二班';
示例3:排序和限制结果¶
- 按年龄降序排序(从大到小),取前2条:
SELECT * FROM students ORDER BY age DESC LIMIT 2;
- 按班级升序排序,按姓名去重:
SELECT DISTINCT class, name FROM students ORDER BY class ASC;
示例4:模糊查询¶
- 查询名字包含“小”的学生:
SELECT * FROM students WHERE name LIKE '%小%';
(%代表任意多个字符,_代表单个字符)
五、Update(更新数据):UPDATE语句¶
作用:修改表中已存在的记录。
语法格式:¶
UPDATE 表名 SET 字段1=值1, 字段2=值2, ... WHERE 条件;
关键:必须加
WHERE条件!否则会更新表中所有记录!
示例1:更新单个字段¶
将“小刚”的年龄改为18岁:
UPDATE students
SET age = 18
WHERE name = '小刚';
示例2:更新多个字段¶
将“小丽”的年龄改为21岁,班级改为“四班”:
UPDATE students
SET age = 21, class = '四班'
WHERE name = '小丽';
六、Delete(删除数据):DELETE语句¶
作用:从表中移除记录。
语法格式:¶
DELETE FROM 表名 WHERE 条件;
关键:必须加
WHERE条件!否则会删除全表数据!
示例1:删除符合条件的记录¶
删除年龄小于16岁的学生(若存在):
DELETE FROM students
WHERE age < 16;
示例2:删除所有数据(谨慎!)¶
若需清空表,可使用WHERE条件全表匹配(需确保安全):
DELETE FROM students WHERE 1=1; -- 等价于DELETE FROM students;
注意:
- 若需快速清空表结构,可使用TRUNCATE TABLE students;(但此操作不可逆,且不支持WHERE条件)。
-DELETE是行级删除,TRUNCATE是表级重建,性能差异较小,但DELETE支持事务回滚。
七、总结与注意事项¶
-
WHERE条件是核心:
UPDATE、DELETE、SELECT(筛选)都必须加WHERE,否则会操作全表数据,造成数据丢失! -
字符串与引号:
所有字符串类型的值(如姓名、班级)必须用单引号'包裹,如'小明'。 -
自增主键:
id字段为自增主键,插入时无需手动赋值,用NULL或省略即可。 -
多练习:
尝试在MySQL客户端执行上述示例,观察结果,熟悉语法规则。
CRUD是MySQL的基础操作,掌握它们就能完成大部分数据库交互需求。后续可学习更复杂的查询(如JOIN连接)、事务等,为进阶打下基础!