数据库的历史:数据库和DBMS
很久以前在美国的一个国家,在一家大型 IT 公司中,曾经出现过存储非常大量数据的任务。你问这有什么难的?毕竟,大公司有钱,这意味着你可以购买更多的硬盘——仅此而已。
好主意,但正如他们所说,细节决定成败。不仅需要存储大量数据,还需要对其进行更改,并从中制作各种样本。而且,你需要从不同的地方选择不同的数据,而且要做得又快又漂亮。
总的来说,一切都和往常一样:客户想要一些不存在的东西,这次购买硬盘的决定没有奏效。
![](https://cdn.codegym.cc/images/article/ffb700f7-60b3-4cfc-a274-a1a35a6b1f31/512.jpeg)
于是,这家IT公司的程序员给自己敲了一个更大的预算,进行研究工作,当预算结束时,他们提出了一个演示文稿,提出将数据以数据库的形式存储。在数据库中,所有数据都存储在表中,每个表存储在一个单独的文件中。一切巧妙的事情都很简单,一切都有效。
但这样的介绍并不适合客户,挑剔继续:
![](https://cdn.codegym.cc/images/article/a7850c1c-b3ee-403d-8453-dcc511174b7b/512.jpeg)
- 钱在哪儿,莱博斯基?
- 为什么数据库比以一组文件的形式存储数据的好旧方法更好?
- 我们需要一个非常好的解决方案,仅此而已!
- 它花了整个预算?
演示室里一片死寂。然而,出乎所有人意料的是,一个初级开发人员挽救了局面,他说数据库附加了一个特殊程序——DBMS (数据库管理系统),它可以:
- 创建、修改和删除数据库
- 对数据库进行更改,即:添加新记录,删除旧记录并更改它们
- 而且还可以超快地执行任何数据的各种选择
而程序员们甚至正在设计一种专门用于过滤数据的超级语言——SQL。他们说,在这种神奇的 SQL 语言的帮助下,任何管理人员都可以轻松地从数据库中过滤和获取任何数据。
![](https://cdn.codegym.cc/images/article/216e75d9-299a-44a8-9e0a-0cc1d26717a8/512.jpeg)
程序员只是还没有完成语言的设计,所以在演示文稿中只字未提 SQL 和 DBMS。
令每个人高兴的是,客户对他们听到的解释印象深刻,对这种新语言应该是什么样子表达了几种相互矛盾的想法,甚至为改进它拨出了预算。
经理和技术总监开始互相祝贺项目的顺利完成,并立即去庆祝这一事件,没有充分意识到整个故事中的初级程序员是最重要的人......
流行的 DBMS 和 MySQL
目前(2022 年夏季)有数百种流行的 DBMS,因此了解其中的一些会对您很有用。我应该从什么开始……
一方面,企业 DBMS 市场已经存在了几十年。因此,它既有公认的领导者,也有有前途的新人。另一方面,业务需求在不断增长,因此企业IT基础设施的建设方式也在不断变化。
现在,任何人都不会惊讶于拥有来自具有水平和垂直分片、分布式事务的数千台服务器集群的数据库,以及由数十名系统管理员组成的 IT 部门,他们会根据预定的时间表。
一般来说,如果你在一家大公司工作,那么他们很可能会为他们的数据库支付很多钱,并使用这样的东西:
甲骨文数据库
![](https://cdn.codegym.cc/images/article/8a53ac38-0a59-466a-9597-f3e6bf618a43/800.jpeg)
甲骨文于 1979 年(43 年前)发布了其第一个数据库。她立即命名为 Oracle 2.0,以说服客户该产品不是新产品,而是经过时间考验的产品。
数据库的当前版本为Oracle 21c ,其中字母c来自单词cloud,这似乎暗示Oracle与时俱进,其解决方案与所有云技术完美兼容。
微软SQL服务器
![](https://cdn.codegym.cc/images/article/532a4cde-2214-4bec-96db-bff84eb41af6/512.jpeg)
微软赚了很多钱的不是 Windows,而是大中型企业的服务器解决方案。Microsoft Office、Microsoft SharePoint、Microsoft Server 等。当然,所有这些都需要一个好的数据库。因此,许多使用微软产品和解决方案的公司被迫使用其数据库。
微软的DBMS简称为SQL Server,所以如果你在面试中听到“你用过SQL Server吗?”这个问题,就知道这不是抽象的DBMS,而是Microsoft SQL Server。
数据库
![](https://cdn.codegym.cc/images/article/b31cfc41-69af-488e-8079-5433fa502551/512.jpeg)
这是一款不错的免费DBMS,不仅中小型公司经常使用,大公司也经常使用。这是 Amazon AWS 作为数据库即服务提供的数据库之一。
MySQL
![](https://cdn.codegym.cc/images/article/0ea0a78a-41d2-43c3-8cd0-b4c72d4c142a/512.jpeg)
MySQL 是一个非常流行的免费开源数据库。它有据可查,运行速度快,并支持广泛的功能。迄今为止,该 DBMS 的第 8 个版本已经可用。
2008年被Sun收购,2009年被Oracle收购。这只会让她受益——产品在不断发展和改进。
我们将以MySQL Community Server 8.0为例学习如何使用数据库。
数据库中的表:列和列
不同的DBMS可以存储不同格式的数据,所以我们选择最简单最经典的选择——MySQL DBMS。
紧接着的问题是:例如,如何存储任何会计凭证?最简单的选择是将每个文档存储为 Excel 文件。然后所有相关文件都可以存储在一个文件夹中。这就是 MySQL 的工作原理。
另一个类比:在 Java 语言中,你的项目中有类和包,但同时类和包在磁盘上表示为文件和文件夹。MySQL 中存在类似的东西。
MySQL数据以表的形式存储,表组合成数据库,但同时表和数据库又以文件和文件夹的形式呈现在磁盘上。数据库是文件夹,里面的文件是表。
每个表由列和行组成。例子:
![](https://cdn.codegym.cc/images/article/ef9c797e-174d-4b27-a109-ff88a837ac5a/512.jpeg)
重要的!每列都有名称和数据类型,因此同一列中的所有单元格必须存储相同类型的值。
可以在 MySQL 中的表和 Java 中的类之间进行类比。一张表就是一个类,一张表就像一个类一样,有一个唯一的名字。表列是类字段;列与字段一样,具有唯一的名称和类型。表格行是 Java 中的类实例。
一个类可以没有对象而存在,一个表可以没有行而存在。在 Java 中,您可以创建一个新对象,而在 MySQL 中,您可以向表中添加一个新行。你可以改变一个对象的字段值,在MySQL中你可以改变一行中的值。
更正确的说法是表不是类,而是某个类对象的集合。如果在 MySQL 中我们有一个包含员工数据的 Employee 表,那么在 Java 中我们将使用ArrayList集合
当然,问题马上就来了:如何从这个集合中获取某些数据?
GO TO FULL VERSION