作者:许灼灼
数据库是什么?——Excel 的升级版
一、课堂故事
上节课,小婉用类写了个 GradeManager(成绩管理系统)。班主任试运行了一下,连连点头:"嗯,能加学生、能排名、能算平均分,不错不错。"
可第二天,班主任又找来了:"诶?昨天的成绩呢?怎么全空了?我昨天录的张三李四呢?"
小婉一拍脑门——昨天晚上关了程序,内存里的 list 全没了,今天打开又是个空系统,得重新录一遍。
班主任摇摇头:"我要的是'关了也还在'的系统。你这系统,一关就没,跟没记一样。"
小婉委屈:"可我代码明明写对了呀……"
没错,代码是写对了。问题出在——数据放在了"内存"里,没放到"硬盘"上。
二、概念解释
要搞懂这件事,先分清两个地方:
- 内存:程序运行时临时歇脚的地方。快,但一关程序、一断电,里面的东西全没了。就像黑板上的字,擦了就没。
- 硬盘:电脑里长期存东西的地方。关机、断电都在。就像笔记本,写上去就跑不了。
小婉的问题,就是成绩只写在了"黑板"(内存)上,没抄进"笔记本"(硬盘)。
那"数据库"是啥?
数据库(Database)= 一个专门用来存数据的地方,它把数据整整齐齐放在硬盘上,关了程序、关了机都还在,而且能让你"下命令"飞快查到想要的内容。
你可以把它理解成:Excel 的升级版档案室。
三、拆开看
数据库里面到底装了啥?记住三件套:
- 表(Table):一张大表,比如"学生成绩表"。一个数据库里可以有好多张表。
- 字段(Field,也叫列):表格的每一列,是一类信息。比如"姓名""语文""数学"。
- 记录(Record,也叫行):表格的每一行,是一条完整的数据。比如"张三,85,92"就是一条记录。
其实你早就见过这套结构了——就是 Excel!
那为啥不直接用 Excel,非要学数据库?三个理由:
- Excel 是人手翻,数据库是"下命令"
你要"语文大于 90 的人",Excel 得自己筛;数据库你发一句话(以后学的 SELECT),它立马给你结果。 - Excel 几千行就卡,数据库几十万行也不慌
不过别怕——咱们中职阶段用的 SQLite,连服务器都不用装,一个 .db 文件就搞定,双击都能带上走。这可比 MySQL 那种"得装个大家伙"的友好多了。
四、常见坑
坑 1:以为数据库 = Excel。
不对。Excel 是鼠标点的,数据库是"写命令操作"的。刚开始会有点不习惯,但习惯了你就回不去了。
坑 2:以为数据库很难,要装服务器。
SQLite 一个文件零配置,Python 自带 sqlite3 模块,import 就能用。别自己吓自己。
坑 3:以为"建了表就有数据"。
表就像空柜子,建好是空的,得往里"放东西"(插数据)才有内容。这事儿下节课讲。
坑 4:分不清"内存里的 list"和"数据库"。
这是小婉踩的坑。list 在内存里,关程序就没;.db 文件在硬盘上,关程序还在。一句话记住:list 是临时黑板,数据库是永久笔记本。
五、生活类比
把数据库想象成学校的档案室:
整间档案室 = 一个数据库 档案室里的柜子 = 一张表(table) 柜子里的格子 = 字段(field,姓名格、成绩格……) 一份完整的档案袋 = 一条记录(record)
你今天把档案袋放进去,关上门走了。明天、下周、明年再来,档案袋还好好躺在柜子里——这就是"持久化",也是小婉那个系统最缺的东西。
而你之前用 list 存成绩,相当于把档案袋放在走廊上,风一吹(关程序)就没了。
六、练一练
1. 填空
数据库里一张表由许多 ______(行 / 记录)组成,每一行又包含固定的 ______(字段 / 列)。
2. 判断
用 list 存的成绩,关掉程序后还在。
(答案:错。list 在内存里,关程序就丢了,得存进数据库文件才永久。)
3. 想一想
你手机里的"通讯录",算不算一种数据库?
(提示:关机还在不在?能不能按名字搜?——算!它就是一个迷你数据库。)
下节课预告:光知道"档案室"长啥样不够,下节我们亲手"建一个柜子"——用 SQL 的 CREATE TABLE 建表,再用 INSERT 把第一条记录放进去。准备好,真正动手了!
夜雨聆风