访问数据库
1. 为什么需要数据库
- 程序运行时数据在内存中;程序终止时通常需要把数据保存到磁盘(本地或通过网络存到服务器)。
- 若自己定义存储格式(如 CSV 一行一条、JSON 数组):
- 存储和读取要自己实现;自定义格式五花八门,不如标准统一。
- 无法按条件快速查询:只能把数据全部读入内存再遍历;数据量超过内存时无法全部读入。
- 数据库(Database):专门用于集中存储和查询的软件,便于程序保存/读取数据,并能通过条件快速查询指定数据。
2. 关系数据库与关系模型
- 数据库历史悠久(约 1950 年代);经历了网状、层次数据库;关系数据库于 20 世纪 70 年代基于关系模型诞生。
- 关系模型:基于表(Table)的结构 ;表与表之间有一对多等映射关系。例如:
- Grade 表(年级)一行 → Class 表(班级)多行,通过 Grade_ID 关联;
- Class 表一行 → Student 表多行。
- 按条件查询使用 SQL 语句,例如根据年级 ID 查所有班级:
SELECT * FROM classes WHERE grade_id = '1';
- 结果也是表形式(多行多列)
3. NoSQL
- 很多 NoSQL 宣传在速度、规模上远超关系数据库。
- 不要被忽悠:连 SQL 都不明白,很难真正搞懂 NoSQL;先掌握关系数据库与 SQL 更稳妥。
4. 数据库类别与选型
商用付费数据库
- Oracle、SQL Server(微软)、DB2(IBM)、Sybase 等;不开源、付费。
- 好处:花钱可找厂商支持;但在 Web 场景常需部署大量数据库服务器,成本高,故 Google、Facebook、BAT 等普遍选用免费开源数据库。
免费开源关系数据库
| 数据库 | 特点 |
|---|---|
| MySQL | 使用广泛,一般错不了 |
| PostgreSQL | 学术气息较重,实力不错,知名度不如 MySQL |
| SQLite | 嵌入式数据库,适合桌面与移动应用;无需单独安装,直接可用 |
小结
| 要点 | 说明 |
|---|---|
| 为何用数据库 | 持久化 + 按条件快速查询,避免自造格式、全量读内存 |
| 关系数据库 | 基于表与表之间关系;用 SQL 查询 |
| NoSQL | 先学好 SQL 再谈 NoSQL |
| SQLite | 嵌入式、免安装,适合学习与桌面/移动 |
| 生产 | MySQL 或 PostgreSQL |
记忆:数据要落盘、要能查 → 用数据库;关系库用表+SQL;入门用 SQLite,生产用 MySQL/PostgreSQL。