数据库的历史:数据库和DBMS
很久以前在美国的一个国家,在一家大型 IT 公司中,曾经出现过存储非常大量数据的任务。你问这有什么难的?毕竟,大公司有钱,这意味着你可以购买更多的硬盘——仅此而已。
好主意,但正如他们所说,细节决定成败。不仅需要存储大量数据,还需要对其进行更改,并从中制作各种样本。而且,你需要从不同的地方选择不同的数据,而且要做得又快又漂亮。
总的来说,一切都和往常一样:客户想要一些不存在的东西,这次购买硬盘的决定没有奏效。

于是,这家IT公司的程序员给自己敲了一个更大的预算,进行研究工作,当预算结束时,他们提出了一个演示文稿,提出将数据以数据库的形式存储。在数据库中,所有数据都存储在表中,每个表存储在一个单独的文件中。一切巧妙的事情都很简单,一切都有效。
但这样的介绍并不适合客户,挑剔继续:

- 钱在哪儿,莱博斯基?
- 为什么数据库比以一组文件的形式存储数据的好旧方法更好?
- 我们需要一个非常好的解决方案,仅此而已!
- 它花了整个预算?
演示室里一片死寂。然而,出乎所有人意料的是,一个初级开发人员挽救了局面,他说数据库附加了一个特殊程序——DBMS (数据库管理系统),它可以:
- 创建、修改和删除数据库
- 对数据库进行更改,即:添加新记录,删除旧记录并更改它们
- 而且还可以超快地执行任何数据的各种选择
而程序员们甚至正在设计一种专门用于过滤数据的超级语言——SQL。他们说,在这种神奇的 SQL 语言的帮助下,任何管理人员都可以轻松地从数据库中过滤和获取任何数据。

程序员只是还没有完成语言的设计,所以在演示文稿中只字未提 SQL 和 DBMS。
令每个人高兴的是,客户对他们听到的解释印象深刻,对这种新语言应该是什么样子表达了几种相互矛盾的想法,甚至为改进它拨出了预算。
经理和技术总监开始互相祝贺项目的顺利完成,并立即去庆祝这一事件,没有充分意识到整个故事中的初级程序员是最重要的人......
流行的 DBMS 和 MySQL
目前(2022 年夏季)有数百种流行的 DBMS,因此了解其中的一些会对您很有用。我应该从什么开始……
一方面,企业 DBMS 市场已经存在了几十年。因此,它既有公认的领导者,也有有前途的新人。另一方面,业务需求在不断增长,因此企业IT基础设施的建设方式也在不断变化。
现在,任何人都不会惊讶于拥有来自具有水平和垂直分片、分布式事务的数千台服务器集群的数据库,以及由数十名系统管理员组成的 IT 部门,他们会根据预定的时间表。
一般来说,如果你在一家大公司工作,那么他们很可能会为他们的数据库支付很多钱,并使用这样的东西:
甲骨文数据库

甲骨文于 1979 年(43 年前)发布了其第一个数据库。她立即命名为 Oracle 2.0,以说服客户该产品不是新产品,而是经过时间考验的产品。
数据库的当前版本为Oracle 21c ,其中字母c来自单词cloud,这似乎暗示Oracle与时俱进,其解决方案与所有云技术完美兼容。
微软SQL服务器

微软赚了很多钱的不是 Windows,而是大中型企业的服务器解决方案。Microsoft Office、Microsoft SharePoint、Microsoft Server 等。当然,所有这些都需要一个好的数据库。因此,许多使用微软产品和解决方案的公司被迫使用其数据库。
微软的DBMS简称为SQL Server,所以如果你在面试中听到“你用过SQL Server吗?”这个问题,就知道这不是抽象的DBMS,而是Microsoft SQL Server。
数据库

这是一款不错的免费DBMS,不仅中小型公司经常使用,大公司也经常使用。这是 Amazon AWS 作为数据库即服务提供的数据库之一。
MySQL

MySQL 是一个非常流行的免费开源数据库。它有据可查,运行速度快,并支持广泛的功能。迄今为止,该 DBMS 的第 8 个版本已经可用。
2008年被Sun收购,2009年被Oracle收购。这只会让她受益——产品在不断发展和改进。
我们将以MySQL Community Server 8.0为例学习如何使用数据库。
数据库中的表:列和列
不同的DBMS可以存储不同格式的数据,所以我们选择最简单最经典的选择——MySQL DBMS。
紧接着的问题是:例如,如何存储任何会计凭证?最简单的选择是将每个文档存储为 Excel 文件。然后所有相关文件都可以存储在一个文件夹中。这就是 MySQL 的工作原理。
另一个类比:在 Java 语言中,你的项目中有类和包,但同时类和包在磁盘上表示为文件和文件夹。MySQL 中存在类似的东西。
MySQL数据以表的形式存储,表组合成数据库,但同时表和数据库又以文件和文件夹的形式呈现在磁盘上。数据库是文件夹,里面的文件是表。
每个表由列和行组成。例子:

重要的!每列都有名称和数据类型,因此同一列中的所有单元格必须存储相同类型的值。
可以在 MySQL 中的表和 Java 中的类之间进行类比。一张表就是一个类,一张表就像一个类一样,有一个唯一的名字。表列是类字段;列与字段一样,具有唯一的名称和类型。表格行是 Java 中的类实例。
一个类可以没有对象而存在,一个表可以没有行而存在。在 Java 中,您可以创建一个新对象,而在 MySQL 中,您可以向表中添加一个新行。你可以改变一个对象的字段值,在MySQL中你可以改变一行中的值。
更正确的说法是表不是类,而是某个类对象的集合。如果在 MySQL 中我们有一个包含员工数据的 Employee 表,那么在 Java 中我们将使用ArrayList集合
当然,问题马上就来了:如何从这个集合中获取某些数据?
GO TO FULL VERSION