MySQL入门:一篇搞定 SQL 基础操作
一、先建个数据库玩玩
学 SQL 嘛,第一步肯定是先有个数据库。来,跟着我敲:
CREATE DATABASE test01;
USE test01;这就相当于创建了一个"文件夹",然后进入这个文件夹。接下来咱们在里面建张表,用来存学生信息:
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'Id',
name VARCHAR(50) NOT NULL COMMENT '学生名',
gender VARCHAR(10) NOT NULL COMMENT '性别',
age INT NOT NULL COMMENT '年龄',
class VARCHAR(50) NOT NULL COMMENT '班级名',
score INT NOT NULL COMMENT '分数'
) CHARSET=utf8mb4;小贴士:
AUTO_INCREMENT让 id 自动增长,不用手动填NOT NULL表示这个字段不能为空COMMENT是给字段加注释,方便以后维护CHARSET=utf8mb4支持中文和 emoji,强烈建议用这个
二、CRUD 四大基础操作
CRUD 就是 增删改查,这是数据库操作的核心,必须掌握!
1. 查(Select)
SELECT * FROM student;* 表示查询所有列,相当于"我全都要"。
2. 增(Insert)
INSERT INTO student (name, gender, age, class, score)
VALUES
('张三', '男', 18, '一班', 90),
('李四', '女', 19, '二班', 85),
('王五', '男', 20, '三班', 70);可以一次性插入多条数据,效率更高哦!
3. 改(Update)
UPDATE student SET name='Sullivan' WHERE id = 2;⚠️ 注意: 一定要加 WHERE 条件!不然整张表的数据都会被更新,那可就惨了...
4. 删(Delete)
DELETE FROM student WHERE id=3;同样,WHERE 条件不能少!还有更狠的:
DROP TABLE student; -- 直接删表,慎用!三、查询进阶:让数据听话
1. 指定列查询
SELECT name, age FROM student;只查需要的列,效率更高。
2. 给列起别名
SELECT name AS 名字, age AS 年龄, score AS 分数 FROM student;用 AS 可以让结果更友好,前端展示也更方便。
3. 条件查询(WHERE)
-- 分数大于80的
SELECT * FROM student WHERE score > 80;
-- 分数大于90的女性
SELECT * FROM student WHERE score > 90 AND gender = '女';常用操作符:>、<、=、!=、AND、OR
4. 模糊查询(LIKE)
-- 名字中包含"十"的
SELECT * FROM student WHERE name LIKE '%十%';%表示任意字符_表示单个字符- 比如
LIKE '张%'匹配姓张的,LIKE '_四'匹配两个字且第二个字是四的
5. 集合查询(IN / NOT IN)
-- 查询二班和三班的
SELECT * FROM student WHERE class IN ('三班', '二班');
-- 查询除了二班和三班的
SELECT * FROM student WHERE class NOT IN ('三班', '二班');比写一堆 OR 简洁多了!
四、分页和排序
1. 分页查询(LIMIT)
-- 查前5条
SELECT * FROM student LIMIT 5;
-- 从第0条开始,查5条(第一页)
SELECT * FROM student LIMIT 0, 5;
-- 从第5条开始,查5条(第二页)
SELECT * FROM student LIMIT 5, 5;分页公式: 起始位置 = (页码 - 1) × 每页数量
2. 排序(ORDER BY)
-- 按分数升序,分数相同再按年龄降序
SELECT * FROM student ORDER BY score ASC, age DESC;ASC升序(从小到大)DESC降序(从大到小)
五、分组统计(GROUP BY)
这个功能超级实用,比如要统计每个班的平均成绩:
SELECT class AS 班级, AVG(score) AS 平均成绩
FROM student
GROUP BY class
ORDER BY 平均成绩 DESC;完整语法结构:
SELECT 列名, 聚合函数(列)
FROM 表名
WHERE 条件 -- 分组前过滤
GROUP BY 分组列
HAVING 分组条件 -- 分组后过滤
ORDER BY 排序列
LIMIT 数量;常用聚合函数
| 函数 | 作用 | 例子 |
|---|---|---|
COUNT() | 统计数量 | COUNT(*) |
AVG() | 平均值 | AVG(score) |
SUM() | 求和 | SUM(score) |
MAX() | 最大值 | MAX(score) |
MIN() | 最小值 | MIN(score) |
综合示例:
SELECT
AVG(score) AS 平均成绩,
COUNT(*) AS 人数,
SUM(score) AS 总成绩,
MIN(score) AS 最低分,
MAX(score) AS 最高分
FROM student;HAVING vs WHERE
WHERE:分组前过滤HAVING:分组后过滤
-- 查询平均成绩大于80的班级
SELECT class, AVG(score) AS avg_score
FROM student
GROUP BY class
HAVING avg_score > 80;去重(DISTINCT)
-- 查看所有有哪些班级
SELECT DISTINCT class FROM student;六、内置函数大全
1. 字符串函数
SELECT
CONCAT(name, '-') AS 拼接, -- 字符串拼接
SUBSTR(name, 1, 1) AS 首字, -- 截取字符串
LENGTH(name) AS 长度, -- 字符串长度
UPPER('aaa') AS 大写, -- 转大写
LOWER('BBB') AS 小写 -- 转小写
FROM student;2. 数值函数
SELECT
ROUND(2.5), -- 四舍五入 → 3
CEIL(3.9), -- 向上取整 → 4
FLOOR(4.1), -- 向下取整 → 4
ABS(-5), -- 绝对值 → 5
MOD(6, 5); -- 取模 → 13. 日期函数
SELECT
YEAR('2023-06-01 22:06:03'), -- 年 → 2023
MONTH('2023-06-01 22:06:03'), -- 月 → 6
DAY('2023-06-01 22:06:03'), -- 日 → 1
DATE('2023-06-01 22:06:03'), -- 日期部分
TIME('2023-06-01 22:06:03'); -- 时间部分4. 条件函数
IF 函数(适合单条件):
SELECT name, IF(score >= 60, '及格', '不及格') FROM student;CASE 函数(适合多条件):
SELECT
name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 60 THEN '良好'
ELSE '差'
END AS '档次'
FROM student;这个跟 JavaScript 里的 if-else 和 switch 很像,很好理解!
5. 系统函数
SELECT VERSION(), DATABASE(), USER();VERSION():MySQL 版本DATABASE():当前数据库名USER():当前用户
6. 其他实用函数
-- NULLIF:相等返回NULL,不等返回第一个值
SELECT NULLIF(1, 1), NULLIF(1, 2);
-- COALESCE:返回第一个非NULL的值
SELECT COALESCE(NULL, 1), COALESCE(NULL, NULL, 2);
-- GREATEST/LEAST:返回最大/最小值
SELECT GREATEST(1, 2, 3), LEAST(1, 2, 3, 4);7. 类型转换
-- 字符串转数字再比较
SELECT GREATEST(1, CONVERT('123', SIGNED), 3);
SELECT GREATEST(1, CAST('123' AS SIGNED), 3);可转换的类型:
SIGNED:整型UNSIGNED:无符号整型DECIMAL:浮点型CHAR:字符类型DATE/TIME/DATETIME:日期时间类型
七、引号使用小贴士
这个容易踩坑,记一下:
| 用途 | 使用方式 | 例子 |
|---|---|---|
| 字符串值 | 单引号 ' 或双引号 " | '张三' |
| 表名/列名 | 反引号 ` 或不加 | `student` 或 student |
总结一下
今天咱们覆盖了 MySQL 的核心知识点:
✅ 数据库和表的创建
✅ CRUD 基础操作
✅ 条件查询(WHERE、LIKE、IN)
✅ 分页和排序(LIMIT、ORDER BY)
✅ 分组统计(GROUP BY、HAVING、聚合函数)
✅ 各类内置函数(字符串、数值、日期、条件等)
学习建议:
- 多动手敲代码,光看不练假把式
- 理解每个语句的执行顺序
- 注意
WHERE和HAVING的区别 - 删除和更新操作一定要加条件!

Comments | NOTHING