[数据库] 《小白入门 MySQL 基础语句:从建库建表到增删改查一篇搞懂》

427 0
Honkers 2026-6-12 22:46:31 来自手机 | 显示全部楼层 |阅读模式

小白入门 MySQL 基础语句:从建库建表到增删改查一篇搞懂

一、什么是 MySQL?

MySQL 是一种关系型数据库管理系统,简单来说,它就是用来存储和管理数据的软件。

比如一个学生管理系统中,可能需要保存:

  • 学生姓名
  • 学号
  • 年龄
  • 班级
  • 成绩

这些数据就可以存放在 MySQL 数据库中。

MySQL 中常见的几个概念:

概念说明
数据库存放数据表的容器
数据表用来存储具体数据
字段表中的一列,比如姓名、年龄
记录表中的一行数据
SQL操作数据库的语言

二、查看已有数据库

连接 MySQL 后,可以先查看当前有哪些数据库。

  1. SHOW DATABASES;
复制代码

这个语句的作用是查看 MySQL 中已经存在的数据库。


三、创建数据库

创建一个名为 student_db 的数据库:

  1. CREATE DATABASE student_db;
复制代码

为了避免数据库已经存在时报错,可以写成:

  1. CREATE DATABASE IF NOT EXISTS student_db;
复制代码

推荐小白使用第二种写法,更安全。


四、选择数据库

创建数据库后,需要先进入这个数据库,才能在里面创建数据表。

  1. USE student_db;
复制代码

表示接下来所有操作都会在 student_db 数据库中进行。


五、删除数据库

删除数据库使用:

  1. DROP DATABASE student_db;
复制代码

更安全的写法:

  1. DROP DATABASE IF EXISTS student_db;
复制代码

注意:删除数据库会把里面的表和数据全部删除,实际开发中一定要谨慎使用。


六、创建数据表

下面创建一个学生表 students。

  1. CREATE TABLE students (
  2. id INT PRIMARY KEY AUTO_INCREMENT,
  3. name VARCHAR(50) NOT NULL,
  4. age INT,
  5. gender VARCHAR(10),
  6. score DECIMAL(5,2)
  7. );
复制代码

字段说明:

字段名含义类型
id学生编号整数,自增主键
name学生姓名字符串
age年龄整数
gender性别字符串
score成绩小数

其中:

  1. PRIMARY KEY
复制代码

表示主键,主键不能重复。

  1. AUTO_INCREMENT
复制代码

表示自动递增,一般用于编号字段。

  1. NOT NULL
复制代码

表示该字段不能为空。


七、查看当前数据库中的表

  1. SHOW TABLES;
复制代码

该语句可以查看当前数据库中有哪些数据表。


八、查看表结构

  1. DESC students;
复制代码

或者:

  1. DESCRIBE students;
复制代码

可以查看表中有哪些字段、字段类型、是否允许为空等信息。


九、插入数据

1. 插入完整数据

  1. INSERT INTO students (name, age, gender, score)
  2. VALUES ('张三', 18, '男', 89.5);
复制代码

因为 id 是自增字段,所以不需要手动填写。

2. 一次插入多条数据

  1. INSERT INTO students (name, age, gender, score)
  2. VALUES
  3. ('李四', 19, '女', 92.0),
  4. ('王五', 20, '男', 76.5),
  5. ('赵六', 18, '女', 88.0);
复制代码

一次插入多条数据比多次执行 INSERT 更方便。


十、查询数据

1. 查询所有数据

  1. SELECT * FROM students;
复制代码

* 表示查询所有字段。

2. 查询指定字段

  1. SELECT name, score FROM students;
复制代码

只查询学生姓名和成绩。

3. 给字段起别名

  1. SELECT name AS 姓名, score AS 成绩 FROM students;
复制代码

查询结果中的字段名会显示为“姓名”和“成绩”。


十一、条件查询

1. 查询年龄为 18 的学生

  1. SELECT * FROM students
  2. WHERE age = 18;
复制代码

2. 查询成绩大于 80 的学生

  1. SELECT * FROM students
  2. WHERE score > 80;
复制代码

3. 查询年龄不等于 18 的学生

  1. SELECT * FROM students
  2. WHERE age != 18;
复制代码

也可以写成:

  1. SELECT * FROM students
  2. WHERE age <> 18;
复制代码

十二、多个条件查询

1. AND:同时满足多个条件

查询年龄为 18 且成绩大于 80 的学生:

  1. SELECT * FROM students
  2. WHERE age = 18 AND score > 80;
复制代码

2. OR:满足其中一个条件

查询年龄为 18 或成绩大于 90 的学生:

  1. SELECT * FROM students
  2. WHERE age = 18 OR score > 90;
复制代码

3. BETWEEN:范围查询

查询成绩在 80 到 90 之间的学生:

  1. SELECT * FROM students
  2. WHERE score BETWEEN 80 AND 90;
复制代码

4. IN:指定多个值

查询年龄为 18 或 20 的学生:

  1. SELECT * FROM students
  2. WHERE age IN (18, 20);
复制代码

十三、模糊查询 LIKE

模糊查询常用于搜索功能。

1. 查询姓“张”的学生

  1. SELECT * FROM students
  2. WHERE name LIKE '张%';
复制代码

% 表示任意多个字符。

2. 查询名字中包含“三”的学生

  1. SELECT * FROM students
  2. WHERE name LIKE '%三%';
复制代码

3. 查询名字为两个字,并且第二个字是“四”的学生

  1. SELECT * FROM students
  2. WHERE name LIKE '_四';
复制代码

_ 表示任意一个字符。


十四、排序查询 ORDER BY

1. 按成绩升序排序

  1. SELECT * FROM students
  2. ORDER BY score ASC;
复制代码

ASC 表示升序,可以省略。

2. 按成绩降序排序

  1. SELECT * FROM students
  2. ORDER BY score DESC;
复制代码

3. 先按年龄升序,再按成绩降序

  1. SELECT * FROM students
  2. ORDER BY age ASC, score DESC;
复制代码

十五、分页查询 LIMIT

分页查询在项目开发中非常常见。

1. 查询前 3 条数据

  1. SELECT * FROM students
  2. LIMIT 3;
复制代码

2. 从第 3 条开始,查询 2 条数据

  1. SELECT * FROM students
  2. LIMIT 2, 2;
复制代码

说明:

  1. LIMIT 起始位置, 查询条数
复制代码

注意:起始位置从 0 开始。

例如:

页码SQL
第 1 页,每页 5 条LIMIT 0, 5
第 2 页,每页 5 条LIMIT 5, 5
第 3 页,每页 5 条LIMIT 10, 5

十六、修改数据 UPDATE

1. 修改指定学生的成绩

  1. UPDATE students
  2. SET score = 95
  3. WHERE id = 1;
复制代码

2. 同时修改多个字段

  1. UPDATE students
  2. SET age = 21, score = 90
  3. WHERE id = 2;
复制代码

注意:使用 UPDATE 时一定要加 WHERE 条件。

如果不加 WHERE:

  1. UPDATE students
  2. SET score = 100;
复制代码

这会把整张表中所有学生的成绩都改成 100,非常危险。


十七、删除数据 DELETE

1. 删除指定数据

  1. DELETE FROM students
  2. WHERE id = 3;
复制代码

2. 删除成绩小于 60 的学生

  1. DELETE FROM students
  2. WHERE score < 60;
复制代码

注意:使用 DELETE 时也一定要加 WHERE 条件。

如果写成:

  1. DELETE FROM students;
复制代码

会删除整张表中的所有数据。


十八、常用聚合函数

聚合函数常用于统计数据。

1. 统计学生总数

  1. SELECT COUNT(*) FROM students;
复制代码

2. 查询最高分

  1. SELECT MAX(score) FROM students;
复制代码

3. 查询最低分

  1. SELECT MIN(score) FROM students;
复制代码

4. 查询平均分

  1. SELECT AVG(score) FROM students;
复制代码

5. 查询总分

  1. SELECT SUM(score) FROM students;
复制代码

十九、分组查询 GROUP BY

查询不同性别的人数:

  1. SELECT gender, COUNT(*) AS 人数
  2. FROM students
  3. GROUP BY gender;
复制代码

查询不同年龄的平均成绩:

  1. SELECT age, AVG(score) AS 平均成绩
  2. FROM students
  3. GROUP BY age;
复制代码

二十、分组后筛选 HAVING

WHERE 是分组前筛选,HAVING 是分组后筛选。

查询平均分大于 85 的年龄组:

  1. SELECT age, AVG(score) AS avg_score
  2. FROM students
  3. GROUP BY age
  4. HAVING avg_score > 85;
复制代码

二十一、WHERE 和 HAVING 的区别

对比项WHEREHAVING
使用位置GROUP BY 之前GROUP BY 之后
作用对象原始数据分组后的结果
是否能使用聚合函数一般不能可以

示例:

  1. SELECT age, AVG(score) AS avg_score
  2. FROM students
  3. WHERE score >= 60
  4. GROUP BY age
  5. HAVING avg_score > 80;
复制代码

这条 SQL 的含义是:

先筛选出成绩大于等于 60 的学生,再按照年龄分组,最后找出平均分大于 80 的年龄组。


二十二、修改表结构

1. 添加字段

  1. ALTER TABLE students
  2. ADD phone VARCHAR(20);
复制代码

2. 修改字段类型

  1. ALTER TABLE students
  2. MODIFY phone VARCHAR(30);
复制代码

3. 修改字段名

  1. ALTER TABLE students
  2. CHANGE phone telephone VARCHAR(30);
复制代码

4. 删除字段

  1. ALTER TABLE students
  2. DROP telephone;
复制代码

二十三、删除表

  1. DROP TABLE students;
复制代码

安全写法:

  1. DROP TABLE IF EXISTS students;
复制代码

删除表会把表结构和表中数据全部删除,不能随便使用。


二十四、清空表数据

  1. TRUNCATE TABLE students;
复制代码

TRUNCATE 会清空整张表的数据,并且通常会重置自增主键。

和 DELETE FROM students; 相比,TRUNCATE 更偏向于直接清空整张表。


二十五、小白最容易踩的坑

1. 忘记使用数据库

如果没有先执行:

  1. USE student_db;
复制代码

可能会出现找不到表的问题。

2. 字符串忘记加引号

错误写法:

  1. INSERT INTO students (name) VALUES (张三);
复制代码

正确写法:

  1. INSERT INTO students (name) VALUES ('张三');
复制代码

3. UPDATE 忘记加 WHERE

危险写法:

  1. UPDATE students SET score = 100;
复制代码

这会修改所有数据。

4. DELETE 忘记加 WHERE

危险写法:

  1. DELETE FROM students;
复制代码

这会删除表中所有数据。

5. 中英文符号混用

SQL 中的括号、逗号、引号建议使用英文符号,否则可能报错。


二十六、完整练习代码

下面是一套完整的练习代码,小白可以直接复制到 MySQL 中运行。

  1. CREATE DATABASE IF NOT EXISTS student_db;
  2. USE student_db;
  3. DROP TABLE IF EXISTS students;
  4. CREATE TABLE students (
  5. id INT PRIMARY KEY AUTO_INCREMENT,
  6. name VARCHAR(50) NOT NULL,
  7. age INT,
  8. gender VARCHAR(10),
  9. score DECIMAL(5,2)
  10. );
  11. INSERT INTO students (name, age, gender, score)
  12. VALUES
  13. ('张三', 18, '男', 89.5),
  14. ('李四', 19, '女', 92.0),
  15. ('王五', 20, '男', 76.5),
  16. ('赵六', 18, '女', 88.0),
  17. ('钱七', 21, '男', 59.5);
  18. SELECT * FROM students;
  19. SELECT name, score FROM students;
  20. SELECT * FROM students
  21. WHERE score > 80;
  22. SELECT * FROM students
  23. WHERE age = 18 AND score > 80;
  24. SELECT * FROM students
  25. WHERE name LIKE '张%';
  26. SELECT * FROM students
  27. ORDER BY score DESC;
  28. SELECT gender, COUNT(*) AS 人数
  29. FROM students
  30. GROUP BY gender;
  31. SELECT age, AVG(score) AS 平均成绩
  32. FROM students
  33. GROUP BY age;
  34. UPDATE students
  35. SET score = 95
  36. WHERE id = 1;
  37. DELETE FROM students
  38. WHERE id = 5;
复制代码

二十七、总结

本文主要介绍了 MySQL 中最基础、最常用的 SQL 语句,包括数据库操作、数据表操作、数据新增、查询、修改、删除、排序、分页、分组和聚合函数等内容。

对于刚入门的小白来说,学习 MySQL 不需要一开始就追求复杂知识,而是应该先熟练掌握基础语句,尤其是:

  1. CREATE DATABASE
  2. CREATE TABLE
  3. INSERT
  4. SELECT
  5. UPDATE
  6. DELETE
  7. WHERE
  8. ORDER BY
  9. GROUP BY
  10. LIMIT
复制代码

只要把这些基础语句掌握清楚,就已经可以完成大部分简单项目中的数据库操作。后续可以继续学习主键、外键、索引、事务、多表查询、数据库设计规范以及 SQL 性能优化等内容。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行