MySQL CRUD实操详解:插入、查询、修改、删除,附可直接运行示例

前言

CRUD是MySQL最基础、最常用的核心操作,对应插入(Create)、查询(Read)、修改(Update)、删除(Delete),也是新手入门MySQL的第一个实操重点。

很多新手刚学的时候,要么语句写错、要么条件遗漏,导致操作失败。这篇文章全程用「可直接复制运行」的示例,手把手教你CRUD每一步,搭配避坑提示,新手也能零错误上手。

先准备测试表(所有示例均基于此表,复制即可创建):

sql 复制代码
-- 创建测试表:user(用户表)
CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
    name VARCHAR(20) NOT NULL,          -- 用户名(非空)
    age INT,                            -- 年龄
    gender TINYINT,                     -- 性别(1=男,2=女)
    email VARCHAR(50) UNIQUE,           -- 邮箱(唯一)
    create_time DATETIME DEFAULT NOW()  -- 创建时间(默认当前时间)
);

一、插入操作(Create):INSERT

1. 基础插入(指定字段)

最常用、最安全的方式,明确指定要插入的字段,避免字段顺序错乱导致报错。

sql 复制代码
-- 插入1条数据
INSERT INTO user (name, age, gender, email) 
VALUES ('张三', 20, 1, 'zhangsan@163.com');

-- 插入多条数据(逗号分隔,效率更高)
INSERT INTO user (name, age, gender, email) 
VALUES 
('李四', 22, 1, 'lisi@163.com'),
('王五', 19, 2, 'wangwu@163.com'),
('赵六', 21, 1, 'zhaoliu@163.com');

2. 简化插入(不指定字段)

需严格按照表中字段顺序插入,且不能遗漏非空字段,不推荐新手使用。

sql 复制代码
INSERT INTO user 
VALUES (NULL, '孙七', 23, 2, 'sunqi@163.com', DEFAULT);
-- 说明:主键自增可填NULL,DEFAULT表示使用字段默认值(此处为当前时间)

插入避坑

❌ 错误:插入非空字段(如name)时不赋值,会报错;

❌ 错误:插入唯一字段(如email)时,值重复,会报错;

✅ 正确:插入前确认非空字段、唯一字段的值合规。


二、查询操作(Read):SELECT

查询是开发中使用频率最高的操作,先掌握基础查询,后续再学进阶用法。

1. 查询所有数据(全表查询)

sql 复制代码
-- 查用户名、年龄、邮箱
SELECT name, age, email FROM user;

2. 查询指定字段

只查需要的字段,避免全表查询浪费性能,推荐使用。

sql 复制代码
-- 查用户名、年龄、邮箱
SELECT name, age, email FROM user;

3. 去重查询(DISTINCT)

当字段有重复值时,只显示唯一值。

sql 复制代码
-- 查所有不重复的性别
SELECT DISTINCT gender FROM user;

三、修改操作(Update):UPDATE

修改表中已存在的数据,必须加WHERE条件,否则会修改全表数据,极其危险!

1. 基础修改(指定条件)

sql 复制代码
-- 修改张三的年龄为21
UPDATE user 
SET age = 21 
WHERE name = '张三';

-- 修改王五的邮箱和性别
UPDATE user 
SET email = 'wangwu@qq.com', gender = 1 
WHERE id = 3;  -- 用主键作为条件,更精准、更安全

2. 批量修改(谨慎使用)

多条件匹配,批量修改符合条件的数据,务必确认条件无误。

sql 复制代码
-- 修改所有年龄>20的用户,性别改为1
UPDATE user 
SET gender = 1 
WHERE age > 20;

修改避坑

❌ 错误:忘记加WHERE条件,导致全表数据被修改;

❌ 错误:修改唯一字段时,值重复,会报错;

✅ 正确:修改前先执行SELECT查询,确认条件匹配的是目标数据。


四、删除操作(Delete):DELETE

删除表中数据,同样必须加WHERE条件,否则会删除全表数据,无法恢复(无备份情况下)。

1. 基础删除(指定条件)

sql 复制代码
-- 删除名字为孙七的用户
DELETE FROM user 
WHERE name = '孙七';

-- 删除id为4的用户(主键删除,最安全)
DELETE FROM user 
WHERE id = 4;

2. 批量删除

sql 复制代码
-- 删除年龄<20的用户
DELETE FROM user 
WHERE age < 20;

3. 清空表(TRUNCATE)

清空全表数据,且重置自增主键(和DELETE删除全表的区别:DELETE不重置自增)。

sql 复制代码
-- 清空user表所有数据,自增主键从1重新开始
TRUNCATE TABLE user;

删除避坑

❌ 错误:忘记加WHERE条件,删除全表数据;

❌ 错误:用DELETE清空表后,自增主键不会重置;

✅ 正确:日常删除用DELETE+WHERE,清空表用TRUNCATE(确认无需保留数据)。


五、CRUD总结

  1. 插入:INSERT INTO ... VALUES ...(多数据用逗号分隔);

  2. 查询:SELECT 字段 FROM 表名(* 表示所有字段);

  3. 修改:UPDATE 表名 SET 字段=值 WHERE 条件(必加WHERE);

  4. 删除:DELETE FROM 表名 WHERE 条件(必加WHERE),清空用TRUNCATE。

相关推荐
阿演19 分钟前
DataDjinn 新版本更新:国产数据库支持、连接树体验、AI 查询和表格编辑继续增强
数据库·人工智能·ai·ai编程
一只fish42 分钟前
Oracle官方文档翻译《Database Concepts 26ai》附录-术语表
数据库·oracle
一只fish1 小时前
Oracle官方文档翻译《Database Concepts 26ai》第23章-数据库开发者概念
数据库·oracle
todoitbo1 小时前
从 MySQL 到 KingbaseES:Database、Schema、User 一次讲透
数据库·mysql·国产数据库·kingbasees
勇往直前plus2 小时前
Redis&Python 梳理
数据库·redis·python
千云2 小时前
100w大表0停机回滚:我们为什么放弃Undo Log,选择表名切换?
数据库·后端·mysql
SXJR2 小时前
使用docker 部署向量数据库Milvus
数据库·docker·容器·milvus·向量数据库
这个DBA有点耶2 小时前
时序数据库深度对比:2026 年主流 TSDB 架构演进与选型指南
数据库·sql·云原生·架构·运维开发·时序数据库
AC赳赳老秦2 小时前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
计算机安禾2 小时前
【数据库系统原理】第9篇:SQL的结构化思维:DDL、DML与DCL的职责分离
数据库·sql·oracle