数据库:我不是只会Excel的表弟
"数据库?那不就是个高级Excel吗?" "不就是存数据的表格吗?"
如果你也这么想,那数据库可要哭晕在厕所了。
今天我们来聊聊这个"比Excel复杂一万倍"的数据管理神器。
一、数据库到底是什么?
先说个生活中的例子:
Excel:你家的鞋柜
放几十双鞋没问题 但如果你有10万双鞋呢? 想找"去年夏天穿的蓝色运动鞋"呢? 想让全家人同时找鞋呢?
数据库:大型仓储物流中心
几百万件商品轻松管理 毫秒级查询 万人同时访问 自动备份、安全可靠
数据库 = 存储数据的"仓库"
+ 管理的"系统"
+ 检索的"引擎"
二、数据库的类型
1. 关系型数据库(RDBMS)
SQL数据库,数据存在表格里,表和表之间可以有关系。
常见选手:
- MySQL:开源界的扛把子
- PostgreSQL:功能最全的开源数据库
- Oracle:企业级大佬,钱包刺客
- SQL Server:微软家的亲儿子
2. NoSQL数据库
非关系型数据库,不用SQL,不局限于表格。
文档数据库:MongoDB(存JSON文档)
键值数据库:Redis(缓存、排行榜)
列式数据库:Cassandra(大数据)
图数据库:Neo4j(社交关系、知识图谱)
三、关系型数据库的核心概念
表(Table)—— Excel的表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
class_id INT
);
students表:
┌────┬───────┬─────┬─────────┐
│ id │ name │ age │ class_id │
├────┼───────┼─────┼─────────┤
│ 1 │ 张三 │ 18 │ 1 │
│ 2 │ 李四 │ 17 │ 1 │
│ 3 │ 王五 │ 19 │ 2 │
└────┴───────┴─────┴─────────┘
字段(Column)—— 列
# 字段定义包含:
# 字段名 + 数据类型 + 约束
name VARCHAR(50) -- 可变字符串,最多50字符
age INT-- 整数
记录(Row/Record)—— 行
一行 = 一条完整的学生信息
id=1, name=张三, age=18, class_id=1
主键(Primary Key)—— 身份证号
# 每个学生都有唯一的ID,就像身份证号
id INT PRIMARY KEY
-- 不能重复,不能为空
外键(Foreign Key)—— 关联其他表
# class_id 引用 classes 表的 id
FOREIGN KEY (class_id) REFERENCES classes(id)
四、SQL:数据库的"普通话"
**SQL(Structured Query Language)**是操作数据库的标准语言。
增删改查(CRUD)
-- 1. 插入数据(Create)
INSERT INTO students (name, age, class_id)
VALUES ('赵六', 18, 2);
-- 2. 查询数据(Read)
SELECT * FROM students WHERE age >= 18;
-- 3. 更新数据(Update)
UPDATE students SET age = 19 WHERE id = 1;
-- 4. 删除数据(Delete)
DELETE FROM students WHERE id = 3;
高级查询
-- 多表查询:查学生及其班级
SELECT students.name, classes.name
FROM students
JOIN classes ON students.class_id = classes.id;
-- 聚合查询:统计每个班有多少人
SELECT class_id, COUNT(*) as count
FROM students
GROUP BY class_id;
-- 子查询:查人数最多的班
SELECT * FROM classes
WHERE id = (
SELECT class_id
FROM students
GROUP BY class_id
ORDER BY COUNT(*) DESC
LIMIT 1
);
五、表关系:数据库的灵魂
一对一(1:1)
人 ↔ 身份证
一个人只有一个身份证,一个身份证只属于一个人
一对多(1:N)
班级 ↔ 学生
一个班级有很多学生,一个学生只属于一个班
多对多(M:N)
学生 ↔ 课程
一个学生可以选多门课,一门课可以有多个学生
需要中间表来关联
-- 中间表:学生选课关系
CREATE TABLE student_course (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id)
);
六、为什么要用数据库?Excel不香吗?
举个例子
Excel:查"所有18岁以上的女生,按姓名排序"
→ 你要手动筛选、排序
数据库:
SELECT * FROM students
WHERE age >= 18 AND gender = '女'
ORDER BY name;
→ 一行SQL,瞬间完成
七、数据库的"保护机制"
事务(Transaction)
转账场景:
A账户转100给B账户
正确流程:
1. A账户-100
2. B账户+100
3. 提交(commit)
如果中途出错:
→ 自动回滚(rollback)
→ 两个账户都不变
ACID特性
A - Atomicity(原子性)
要么全成功,要么全失败
C - Consistency(一致性)
转账前后总金额不变
I - Isolation(隔离性)
并发转账互不影响
D - Durability(持久性)
提交后数据不会丢失
八、实战:MySQL快速上手
-- 1. 创建数据库
CREATE DATABASE school_db;
-- 2. 使用数据库
USE school_db;
-- 3. 创建表
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender ENUM('男', '女'),
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 4. 插入数据
INSERT INTO students (name, gender, age) VALUES
('张三', '男', 18),
('李四', '女', 17),
('王五', '男', 19);
-- 5. 查询
SELECT name, age FROM students WHERE gender = '男' ORDER BY age;
九、什么时候该用数据库?
用Excel够了:
✅ 数据量<10万行
✅ 单人使用
✅ 简单表格,不需要复杂查询
✅ 不需要多人协作
用数据库:
✅ 数据量>10万行
✅ 需要复杂查询
✅ 多人同时访问
✅ 数据安全要求高
✅ 需要备份和恢复
总结:数据库不是Excel Plus
Excel = 家用小轿车
简单易用,适合日常
数据库 = 集装箱货轮
复杂强大,适合海量数据
选择原则:
- 小数据、个人用 → Excel
- 大数据、团队用 → 数据库
记住:数据库是处理"海量数据"的利器,不仅仅是"会SQL的Excel"!
核心要点:
数据库是专业的数据管理系统,比Excel强大得多 关系型数据库用表存储数据,表之间可以关联 SQL是操作数据库的标准语言 数据库提供事务、并发、备份等高级功能

夜雨聆风