Skip to content

本笔记在原有内容基础上,增加了通俗解释和学习提示,帮助你理解“在干嘛 / 为什么这么写 / 什么时候用”。


一、数据库基础概念

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 优化