从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

  • 数据库

    • 教程概述
    • 数据的存储
      • 数据管理技术的产生和发展
      • 什么是数据库
      • 学习数据库的必要性
      • 小结
    • 数据库的安装
    • 数据库的启停与连接
    • 数据库的管理
    • SQL 概述
    • 表的管理
    • SELECT 基础
    • 运算符
    • 聚合查询
    • 数据的排序
    • 数据的插入
    • 数据的删除
    • 数据的更新
    • 事务
    • 视图
    • 子查询
    • 函数
    • 谓词
    • CASE 表达式
    • 集合运算
    • 联结查询-JOIN
    • SQL 入门小结
    • 更多数据库
    • MySQL 的数据类型
    • 命令行的一些用法
    • 用户与权限管理
    • MySQL 的权限管理
    • mysqldump
    • mysqladmin
    • Liquibase
    • 表注释与字段注释
    • 编码类型
  • 编程工具

  • 装机

  • 计算机基础
  • 数据库
2023-11-11
目录

数据的存储

# 10.数据的存储

在讲什么是数据库之前,先讲讲数据库诞生之前的背景,以及使用数据库的好处。

‍ ‍

# 数据管理技术的产生和发展

数据管理技术主要经历了 3 个阶段:

  • 人工管理阶段
  • 文件系统阶段
  • 数据库系统阶段 ‍

# 人工管理阶段

在 20 世纪 50 年代中期之前,计算机主要是用于科学计算。

当时的硬件状况:主要用纸带、卡片、磁带等来存储数据(磁盘还没出现)。

当时的软件状况:没有操作系统,没有专门管理数据的软件,主要依靠人工来管理数据。特点如下:

  • 数据不保存:当时的计算机主要是用来计算,一般不需要长期保存数据,计算完就撤走程序。
  • 数据需要应用程序自己定义和管理(例如定义一个常量)。
  • 数据不共享:多个程序之间数据是不共享的,而是各自定义 ‍

# 文件系统阶段

时期:20 世纪 50 年代后期 ~ 20 世纪 60 年代中期

当时的硬件状况:此时已经有了硬盘,磁带等设备

当时的软件状况:操作系统出现了,并且有了专门的文件处理模块,一般称为文件系统。特点:

  • 文件可以长期保存:操作系统可以通过读取磁盘等设备来查询,修改数据

  • 由文件系统来管理数据。文件系统可以将数据组织成相互独立的文件,并且程序可以按文件名来访问文件。 ‍ 但是,文件系统也有缺点:

  • 共享性差:一般一个文件对应一个程序。当不同程序具有部分相同的数据,也得建立各自的文件,冗余度高。此外,文件是存储在电脑上的,如果不是在同一个网络,共享起来也很麻烦。

  • 数据独立性差:文件是为某一个特定程序使用的,文件内的逻辑结构是针对应用来设计的。如果数据结构改了,程序也得改,耦合度高。

  • 无法应对突发事故:当文件被误删、硬盘出现故障等导致无法读取的时候,可能会造成重要数据丢失,同时数据还可能被他人轻易读取或窃用。

  • 如果数据量比较大(例如双十一,订单量达数百万),那么还得切割文件,用几个文件来存储数据 ‍ 举个例子:

笔者开发一个商城系统,此时用 txt 文件来存储数据。那么其他应用能共享这个文件吗?非常不建议!如果多个应用同时要改这个文件呢,非常容易出现冲突,严重的话可能会造成数据丢失。

此外,该 txt 文件内,存储的数据是有顺序的,例如这是文件的内容,一行就代表一个商品:

商品编号    商品名    商品价格
0001        篮球      2.5
1
2

如果想要读取全部商品数据,要怎么做?

  1. 首先是读取一行数据,然后用空格分隔开所有字段
  2. 用不同的变量分别保存数据,第一个字段是商品编号、第二个是商品名、第三个是商品价格.....
  3. 读取下一行数据,继续第 2 步.....

如果文件的逻辑结构改变了,例如增加了一个进货日期:

商品编号    商品名    商品价格    进货日期
0001        篮球      2.5         2022-05-20
1
2

那么我们得修改代码,增加一个变量用来保存进货日期,然后增加代码来处理该变量。

这还仅仅是一个文件的情况,如果有多个文件,例如存储了订单信息的 txt,存储了商铺信息的 txt.... 那么程序和文件的逻辑结构的耦合度太高了,维护成本很高

除了用 txt 来存储,也有的应用程序是用二进制来操作数据的,用 Excel 来操作数据的,不同应用程序之间的代码截然不同。

# 数据库系统阶段

在 20 世纪 60 年代后期以来,计算机管理应用范围越来越广泛,数据量急剧增长,以文件系统作为数据管理手段已经不能满足应用的需求。

为了解决多用户,多应用共享数据的需求,使数据为尽可能多的应用服务,数据库技术应运而生。 ‍

# 什么是数据库

在文件系统阶段,想要读取数据,得结合文件的逻辑结构,自己手动编写代码来存储、查询、修改和删除数据。

而数据库,相当于已经帮我们写好了这些代码。我们只需告诉数据库,要做什么,数据库就会帮我们存储、查询、修改和删除数据。(有点像调用函数,由函数帮我们完成数据的操作,我们只需传参即可)

​​ ‍

# SQL

至于我们如何告诉数据库要做什么?计算机是听不懂人话的,得用一套专门的语言:SQL(Structured Query Language)。

那么在数据库中,是如何存储数据的?在逻辑上,我们可以认为其是用表格来存储数据的(类似 Excel 表)。一个数据库中可以存储多个表(类似一个 Excel 表可以由多个 sheet 页)。

例如这是一个商品表 product,存储了商品的信息:

商品编号 商品名称 商品种类 销售单价 进货单价 登记日期
0001 T 恤衫 衣服 1000 500 2009-9-20
0002 打孔器 办公用品 500 320 2009-9-11
0003 运动 T 恤 衣服 4000 2800
0004 菜刀 厨房用具 3000 2800 2009-9-20
0005 高压锅 厨房用具 6800 5000 2009-1-15
0006 叉子 厨房用具 500 2009-9-20
0007 擦菜板 厨房用具 880 790 2008-4-28
0008 圆珠笔 办公用品 100 2009-11-11

在物理上,存储的数据最终还是以文件的方式,存储在磁盘上的。

那么如何操作数据呢?比如想要查询所有商品的编号,类似的 SQL 如下:

select 商品编号  from product;
1

select:选择的意思,可以理解为选择某一列的数据。

from:来自哪里的意思,在本 SQL 中的作用是告知数据库,要查询的数据来自哪个表。

该 SQL 的意思:从 product 表,选择商品编号列的数据。

除了 select 外,还有 insert 关键字用来插入数据,delete 关键字来删除数据。

这就是 SQL,也是我们后续学习的重点。 ‍

# 多程序共享

由于所有的数据都是通过表来存储数据的,因此可以很好的解决数据独立性差的问题,任何应用都能通过读取表格的方式来操作数据(而不是有的读取 txt,有的读取二进制文件,各自为政)。

并且目前有多种数据库备份机制,可以应对硬盘出现故障等突发事故。 ‍

# 通过网络来访问数据库

数据库通常是采用了 C/S 结构(客户端 /服务器)。例如可以将数据库装在一个云服务器上,每个客户端都可以连接数据库并操作数据,这样就很好的解决了数据共享的问题。

​​​​ ‍

# 学习数据库的必要性

几乎所有的软件、App 都需要使用数据库,多学点总没错。 ‍

# 小结

本文简单讲解了下数据库诞生的背景,以及数据库的基本概念,下一篇就边实战边讲解。

相关文章:最通俗易懂的理解什么是数据库 (opens new window)

上次更新: 2025/5/9 14:55:39
教程概述
数据库的安装

← 教程概述 数据库的安装→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式