數據庫的歷史:數據庫和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