跳到主要内容

访问数据库

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. 数据库类别与选型

商用付费数据库

  • OracleSQL Server(微软)、DB2(IBM)、Sybase 等;不开源、付费
  • 好处:花钱可找厂商支持;但在 Web 场景常需部署大量数据库服务器,成本高,故 Google、Facebook、BAT 等普遍选用免费开源数据库。

免费开源关系数据库

数据库特点
MySQL使用广泛,一般错不了
PostgreSQL学术气息较重,实力不错,知名度不如 MySQL
SQLite嵌入式数据库,适合桌面与移动应用;无需单独安装,直接可用

小结

要点说明
为何用数据库持久化 + 按条件快速查询,避免自造格式、全量读内存
关系数据库基于表与表之间关系;用 SQL 查询
NoSQL先学好 SQL 再谈 NoSQL
SQLite嵌入式、免安装,适合学习与桌面/移动
生产MySQL 或 PostgreSQL

记忆:数据要落盘、要能查 → 用数据库;关系库用表+SQL;入门用 SQLite,生产用 MySQL/PostgreSQL。