

👇 点击进入作者专栏:
《Java 技术精讲:并发与核心组件》 ✅
文章目录
-
- [一、先弄清 4 个基本概念](#一、先弄清 4 个基本概念)
-
- [MySQL 和 SQL 有什么区别?](#MySQL 和 SQL 有什么区别?)
- 二、创建第一个数据库
- 三、设计并创建学生表
- [四、掌握最核心的 CRUD](#四、掌握最核心的 CRUD)
-
- [1. 新增数据:`INSERT`](#1. 新增数据:
INSERT) - [2. 查询数据:`SELECT`](#2. 查询数据:
SELECT) - [3. 修改数据:`UPDATE`](#3. 修改数据:
UPDATE) - [4. 删除数据:`DELETE`](#4. 删除数据:
DELETE)
- [1. 新增数据:`INSERT`](#1. 新增数据:
- [五、初学者最容易踩的 5 个坑](#五、初学者最容易踩的 5 个坑)
-
- [1. 忘记选择数据库](#1. 忘记选择数据库)
- [2. 字符串没有加单引号](#2. 字符串没有加单引号)
- [3. `UPDATE` 或 `DELETE` 忘记写 `WHERE`](#3.
UPDATE或DELETE忘记写WHERE) - [4. 把 `NULL` 当成空字符串](#4. 把
NULL当成空字符串) - [5. 用姓名代替唯一编号定位学生](#5. 用姓名代替唯一编号定位学生)
- 六、基础语法速查
- 七、动手练习
- 八、写在最后
本文适合 MySQL 零基础、数据库课程学习、期末复习和后端入门。学完后,你可以独立创建数据库和数据表,并完成最常用的增、删、改、查操作。
第一次学 MySQL,最容易陷入一个误区:背了很多命令,却不知道这些命令为什么要这样写。
这篇文章不零散讲语法,而是围绕一个简化的"学生选课管理系统"完成第一轮实战:先设计一张学生表,再把数据写进去、查出来、改正确、删干净。
一、先弄清 4 个基本概念
假设学校需要保存学生信息,可以把数据组织成下面这张表:
| id | name | gender | age | class_name |
|---|---|---|---|---|
| 1 | 张三 | 男 | 19 | 软件1班 |
| 2 | 李四 | 女 | 20 | 软件1班 |
从这张表可以理解数据库中的四个核心概念:
- 数据库(Database) :存放和管理数据的仓库,例如
school_db。 - 数据表(Table) :保存某一类数据的结构,例如学生表
student。 - 字段(Column) :表中的一列,例如姓名字段
name。 - 记录(Row):表中的一行,例如张三的完整信息。
一句话记忆:一个数据库包含多张表,一张表包含多个字段和多条记录。

MySQL 和 SQL 有什么区别?
MySQL 是数据库管理系统,SQL 是操作关系型数据库的语言。我们安装和使用的是 MySQL,写下的 CREATE、INSERT、SELECT 等命令属于 SQL。
初学阶段常见的 SQL 可以简单分为:
| 类型 | 作用 | 常见命令 |
|---|---|---|
| DDL | 定义数据库结构 | CREATE、ALTER、DROP |
| DML | 增删改表中数据 | INSERT、UPDATE、DELETE |
| DQL | 查询数据 | SELECT |
不必急着背分类,先会使用,再回头总结会更自然。
二、创建第一个数据库
创建用于练习的数据库:
sql
CREATE DATABASE IF NOT EXISTS school_db
DEFAULT CHARACTER SET utf8mb4;
其中:
IF NOT EXISTS:数据库不存在时才创建,避免重复执行时报错;utf8mb4:能够完整保存中文和常见特殊字符。
创建后必须选择数据库,否则 MySQL 不知道接下来的表要放在哪里:
sql
USE school_db;
可以用下面的语句确认当前正在使用哪个数据库:
sql
SELECT DATABASE();
三、设计并创建学生表
建表前先确定"要存什么"和"用什么类型存"。
| 字段 | 类型 | 含义 | 设计理由 |
|---|---|---|---|
id |
INT |
学生编号 | 整数便于排序和关联 |
name |
VARCHAR(20) |
姓名 | 文本长度不固定 |
gender |
VARCHAR(10) |
性别 | 示例中直接保存文字 |
age |
TINYINT UNSIGNED |
年龄 | 非负且数值范围较小 |
class_name |
VARCHAR(30) |
班级 | 班级名称属于文本 |
创建表:
sql
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
gender VARCHAR(10),
age TINYINT UNSIGNED,
class_name VARCHAR(30)
);
这里先记住三个最常用的规则:
PRIMARY KEY:主键,每条记录的id必须唯一;AUTO_INCREMENT:插入数据时不写id,MySQL 会自动递增编号;NOT NULL:姓名不能为空。
查看表结构:
sql
DESC student;
建表不是把所有字段都写成
VARCHAR。数字是否要计算、文本最长多长、字段能否为空,都会影响类型选择。
四、掌握最核心的 CRUD
CRUD 是四类基础操作的缩写:Create(新增)、Read(查询)、Update(修改)、Delete(删除)。几乎所有管理系统都离不开它们。

1. 新增数据:INSERT
一次插入三名学生:
sql
INSERT INTO student (name, gender, age, class_name) VALUES
('张三', '男', 19, '软件1班'),
('李四', '女', 20, '软件1班'),
('王五', '男', 18, '软件2班');
推荐始终写出字段名。这样即使以后调整表结构,也能清楚知道每个值对应哪个字段。
2. 查询数据:SELECT
查看全部字段和全部记录:
sql
SELECT * FROM student;
实际开发中更推荐只查询需要的字段:
sql
SELECT name, class_name
FROM student;
按条件查询年龄不小于 19 岁的学生:
sql
SELECT id, name, age
FROM student
WHERE age >= 19;
WHERE 决定"操作哪些记录",是查询、修改和删除时最重要的条件关键字。
3. 修改数据:UPDATE
把张三的年龄改为 20:
sql
UPDATE student
SET age = 20
WHERE id = 1;
修改前最好先用相同条件查询:
sql
SELECT * FROM student WHERE id = 1;
确认查询结果正是目标记录,再执行 UPDATE,可以显著减少误操作。
4. 删除数据:DELETE
删除王五的记录:
sql
DELETE FROM student
WHERE id = 3;
DELETE 删除的是记录,不是数据表。删除表结构使用的是 DROP TABLE,两者不要混淆。
五、初学者最容易踩的 5 个坑
1. 忘记选择数据库
出现"No database selected"时,先执行:
sql
USE school_db;
2. 字符串没有加单引号
错误:
sql
INSERT INTO student (name) VALUES (张三);
正确:
sql
INSERT INTO student (name) VALUES ('张三');
数字通常直接写,字符串和日期通常使用单引号。
3. UPDATE 或 DELETE 忘记写 WHERE
sql
UPDATE student SET age = 20;
这条语句会把所有学生的年龄都改为 20。执行修改或删除前,应检查三件事:是否写了 WHERE、条件是否准确、是否先用 SELECT 验证过。
4. 把 NULL 当成空字符串
NULL 表示未知或缺失,'' 表示一个长度为 0 的字符串,它们不是一回事。判断空值应使用:
sql
SELECT * FROM student
WHERE gender IS NULL;
5. 用姓名代替唯一编号定位学生
真实系统可能存在同名学生,修改和删除时更稳妥的做法是使用主键 id,不要只凭姓名定位记录。
六、基础语法速查
| 需求 | SQL 模板 |
|---|---|
| 创建数据库 | CREATE DATABASE 数据库名; |
| 选择数据库 | USE 数据库名; |
| 创建表 | CREATE TABLE 表名 (...); |
| 插入数据 | INSERT INTO 表名 (字段) VALUES (值); |
| 查询数据 | SELECT 字段 FROM 表名 WHERE 条件; |
| 修改数据 | UPDATE 表名 SET 字段=值 WHERE 条件; |
| 删除数据 | DELETE FROM 表名 WHERE 条件; |
七、动手练习
不要只看代码,建议亲自完成下面 4 个任务:
- 新增学生"赵六",女,19 岁,软件2班;
- 查询软件1班学生的姓名和年龄;
- 把
id = 2的学生年龄改为 21; - 删除
id = 3的学生,并查询剩余数据。
参考答案:
sql
INSERT INTO student (name, gender, age, class_name)
VALUES ('赵六', '女', 19, '软件2班');
SELECT name, age
FROM student
WHERE class_name = '软件1班';
UPDATE student
SET age = 21
WHERE id = 2;
DELETE FROM student
WHERE id = 3;
SELECT * FROM student;
八、写在最后
学完这一篇,你已经完成了 MySQL 的第一条完整操作链:设计字段 → 创建数据库 → 创建数据表 → 插入数据 → 查询验证 → 修改和删除。
但真实系统不会只有一张表,也不会永远只查全部数据。下一篇将继续使用学生选课系统,讲清条件查询、排序、聚合、分组和多表连接,让你从"会查数据"进阶到"能从数据中得到结果"。

前路漫漫,同频的人终会奔赴同一个方向✨
如果这篇内容对你有所启发,麻烦点个赞👍、关注博主,干货建议先收藏避免之后找不到。后续还会持续输出更多实用教程📚
创作不易,还请多多支持!💖
专栏下一篇:《零基础学 MySQL(中):条件查询、分组统计与多表连接》