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