先回顾一下数据库,希望大家一想到数据库就能够想到图书馆的这个比喻,图书馆就是一个数据库、书架就是数据表、书就是数据表的一行数据、然后索取号对应的就是数据库中的索引。
本篇我们来讲讲数据表 —— 也就是书架。我们同样通过类比的形式来理解数据表,数据表的英文名称是Data Table,简单地理解,就是表格。没错,我们熟知的Excel一样的表格。我们把书架上的书整理成表格,就得到大概下面的一张表。
这张表和我们的Excel表格没什么区别,表头部分其实对应的是我们常说的字段,下面每一行数据对应的就是我们的一个业务对象,这里是一本书的信息。实际上Excel本身也是一种数据表。Excel能进行的操作,数据表都可以做。比如数据筛选、排序、批量替换等等。所以,如果你不懂数据库知识,没关系,大部分时候你可以拿Excel来类比就能够搞懂数据表能做哪些操作了。
那有人会问,既然有了Excel这样的数据表,为什么还需要数据库中的数据表呢?这就要回到数据表相比Excel的优势了。Excel文件最大的问题是只能整个文件打开,所以当Excel的行数过多的时候,这个文件基本上就废了 —— 电脑卡顿得不行,根本没办法再查看或编辑。
数据库的数据表在这方面表现就好多了,比如MySQL的单张数据表可以支持上千万行的数据。数据表数据过多的时候,数据库会将数据表拆分到多个分区,操作数据的时候可以从一个小分区操作,因此速度会快很多。当然,如果你不慎进行了从上千万的数据表一条一条查找的数据表操作,那么一样会很慢 ——这在技术上,叫全表扫描。全表扫描意味着数据库没办法准备定位到某个数据表区域,只能傻傻地一行一行数据查找,因此效率相当低。
我们来看一下为什么效率会很低。这就好比我们去图书馆找一本书,我们只知道书名,没有别的信息的话,我们就只能挨个楼层、挨个书架去找。如果图书馆里有上万本书,那么你可能找一天都找不到你要的书。然而,如果你有个工具,可以先通过书名查到书在哪一层哪个书架上,那么你可能只需要花半个小时就能找到这本书了。这个工具就叫数据表索引,我们后续会单独拿一篇那介绍索引。
所以,数据表是什么?一图胜千言,我们看一下下面这张图就知道数据表是什么了。
数据表是一个有序的业务对象集合,这些业务对象拥有相同的字段属性。数据表就如同一个书架,书架上整齐地摆放着很多本书。通过书架,我们可以快速地找到书本的位置。