Appearance
本笔记在原有内容基础上,增加了通俗解释和学习提示,帮助你理解“在干嘛 / 为什么这么写 / 什么时候用”。
一、数据库基础概念
1. 什么是数据库(Database)
- 👉 一句话理解:数据库 = 一个“更聪明的 Excel”,但能存很多数据、很多人一起用
- 用于长期保存数据,不会像程序变量一样断电就没
- 特点:
- 持久化:数据存在磁盘中
- 高效查询:用 SQL 快速找数据
- 安全性:权限控制、避免数据乱改
2. 数据库分类(了解)
- 关系型数据库(RDBMS)⭐(我们重点学这个)
- MySQL、Oracle、SQL Server
- 数据放在二维表中(行 + 列)
- 非关系型数据库(NoSQL)
- Redis、MongoDB(后面再学)
3. MySQL 是什么
- 开源、免费、用得最多的关系型数据库
- Web 项目里常用来存:用户、订单、商品等数据
二、MySQL 基本操作
1. 登录 / 退出
sql
mysql -u 用户名 -p- 👉
-p表示要输入密码
sql
exit;2. 查看 / 使用数据库
sql
SHOW DATABASES; -- 查看所有数据库
USE db_name; -- 进入某一个数据库👉 先 USE,后面所有操作才知道你在哪个库
3. 创建 / 删除数据库
sql
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4;- utf8mb4:支持中文 + emoji(推荐)
sql
DROP DATABASE test_db;⚠️ 删除不可恢复
三、表(Table)基础
1. 表是什么
- 👉 表 = Excel 表格
- 行:一条数据(一个用户)
- 列:字段(用户名、年龄)
2. 常见数据类型(重点记)
数值
- INT:整数(最常用)
- DECIMAL:精确小数(金额一定用它)
字符串
- VARCHAR(n):最常用,长度灵活
- CHAR(n):固定长度(很少用)
- TEXT:大文本
日期时间
- DATETIME ⭐:创建时间、下单时间
四、DDL(表结构操作)
👉 DDL = 对“表结构”动手
1. 创建表
sql
CREATE TABLE user (
id INT,
username VARCHAR(50),
age INT,
created_at DATETIME
);- 这里只是定义“表长什么样”,还没数据
2. 查看表结构
sql
DESC user; -- 快速看字段
SHOW CREATE TABLE user; -- 看完整建表语句3. 修改表
sql
ALTER TABLE user ADD email VARCHAR(100); -- 加字段
ALTER TABLE user DROP email; -- 删字段五、DML(数据操作)
👉 DML = 对“表里的数据”动手
1. 插入数据
sql
INSERT INTO user (username, age)
VALUES ('tom', 20);- 推荐写字段名,防止顺序出错
2. 修改数据
sql
UPDATE user SET age = 21 WHERE username = 'tom';⚠️ 没有 WHERE = 全表修改(危险)
3. 删除数据
sql
DELETE FROM user WHERE id = 1;六、查询(DQL)⭐重点
👉 实际开发 90% 时间在写 SELECT
1. 基本查询
sql
SELECT * FROM user; -- 查全部
SELECT username, age FROM user; -- 查指定列2. 条件查询
sql
SELECT * FROM user WHERE age > 18;常用条件记忆:
- = 精确匹配
- BETWEEN:范围
- IN:多选
- IS NULL:判断空值
3. 模糊查询
sql
SELECT * FROM user WHERE username LIKE 't%';- t%:以 t 开头
4. 排序 + 分页
sql
SELECT * FROM user ORDER BY age DESC LIMIT 0, 10;👉 分页固定写法,面试常问
七、聚合与分组
👉 用来“做统计”
sql
SELECT age, COUNT(*)
FROM user
GROUP BY age
HAVING COUNT(*) > 1;- WHERE:分组前过滤
- HAVING:分组后过滤
八、约束(非常重要)
👉 约束 = 给表加规则,防止脏数据
常见约束
sql
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
status INT DEFAULT 1- 主键:唯一 + 非空
- 自增:不用手动传 id
- NOT NULL:必须有值
- UNIQUE:不能重复
九、多表关系(理解即可)
- 一对多:用户 → 订单(最常见)
sql
user(id) → orders(user_id)十、多表查询(JOIN)⭐
sql
SELECT u.username, o.id
FROM user u
LEFT JOIN orders o ON u.id = o.user_id;- LEFT JOIN:左表全保留(最常用)
十一、子查询
👉 一个查询的结果,作为另一个查询的条件
sql
SELECT * FROM user
WHERE id IN (SELECT user_id FROM orders);十二、视图(了解)
👉 视图 = 保存好的 SQL(不存数据)
sql
CREATE VIEW v_user AS
SELECT id, username FROM user;十三、备份
sql
mysqldump -u username -p database_name > backup_file.sql到这里为止,就是 MySQL 索引之前必须掌握的内容
📌 下一步建议学习顺序: 1️⃣ 索引(B+Tree,面试重点) 2️⃣ 事务(ACID) 3️⃣ 锁 4️⃣ SQL 优化