JavaRush /Java Blog /Random-TW /我們分析資料庫和 SQL 語言 - “Java 專案從 A 到 Z”
Roman Beekeeper
等級 35

我們分析資料庫和 SQL 語言 - “Java 專案從 A 到 Z”

在 Random-TW 群組發布
有關建立 Java 專案的系列文章中的一篇。其目標是分析關鍵技術,結果是編寫一個電報機器人。介紹部分就在這裡 阿囉哈,軟體工程師。今天我們談論資料庫和SQL語言。「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 1這篇文章的目標讀者是誰?對所有有興趣的人來說是的。有些人可以從這篇文章開始他們的旅程,其他人將能夠刷新他們對有趣事實的記憶。這部分純粹是理論性的。在我們告訴您什麼是資料庫和 SQL 語法之前,我們需要理解並確定為什麼要研究它們。在此階段,我們將討論SQL 資料庫:在本系列文章中我們不會考慮 NoSQL。

資料庫:它是什麼

「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 2資料庫(以下簡稱DB)是儲存結構化資料的地方,可以使用查詢語言來取得結構化資料。資料庫不僅可以儲存、還可以處理和更改大量資訊。注意:嘗試根據某些條件快速變更 Excel 中的一組值。原則上,沒什麼複雜的。不像我們非數位化的現實世界。例如,重新命名車道、街道、城市。如果一切都是虛擬的並輸入資料庫,它將被標準化,這將是一些小事。事實上,許多儲存媒體都因無法自動變更而受到影響。在這種情況下,資料庫的 SQL 是一種資料庫可以理解並做出相應回應的語言。比方說,重命名這座城市並不困難;將第聶伯羅彼得羅夫斯克重命名為第聶伯羅會看起來像這樣:
UPDATE city SET name = “Днипро” WHERE id = 1231;
對系統的所有後續請求都已經產生了我們需要的名稱。

為什麼需要資料庫?

正如我已經說過的,使用資料庫可以儲存資料。但這個數據是什麼?為了理解現實生活中的例子,我們可以討論一些應用程式。例如,關於同一個電報機器人。我們想知道有多少人在使用該機器人。如何實施?在常規 Java 應用程式中,您可以建立許多獨特的元素 - Set,它將儲存使用者的暱稱或聊天 ID。這行得通嗎?將要。直到 Java 應用程式停止,一旦再次啟動,唯一元素集將為空。也就是說,儲存在正在運行的應用程式中的資料就消失了。你能為這個做什麼?您可以將系統狀態(資料)的儲存空間從 Java 應用程式移至其他位置。您可以將其以 CSV 格式儲存在電腦上的常規檔案中。您可以在單獨文件中的一行中完成此操作。您可以執行此操作,然後在 Java 應用程式停止之前覆寫此資料。雖然錄製成功的保證遠遠沒有達到100%,因為你只要拔掉伺服器的電源線就不會發生錄製。這種方法有一個顯著的缺點:沒有在檔案層級取得、聚合和搜尋資訊的功能。是的,當然,您可以讀取文件並為其創建對象,但您必須每次都將所有資料注入應用程式。而且可能有很多,例如幾千兆位元組。透過將資料儲存在資料庫中可以避免這種情況。如何?透過表格和它們之間的關係。這是所有關係資料庫的基礎。

SQL:資料庫理解的語言

有資料庫管理系統(以下簡稱DBMS),它們所理解的語言是SQL。SQL 是一種用於操作和管理資料庫的程式語言。為了理解它是如何運作的,讓我們看一下圖:「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 3使用者向 DBMS 發送 SQL 查詢,DBMS 理解需要做什麼,然後執行它,如果請求是獲取數據,則傳回它。因此,身為開發人員,我們需要掌握SQL查詢語言。你可能會想,「哦,另一種語言。感謝上帝的幫助,我在這裡幾乎不懂 Java,而你們立即為我提供了另一種語言。” 這是不正確的:SQL 是作為 DBMS 的規範語言而發明的,以便遠離資料庫和一般程式設計的會計師可以使用這種語言進行編寫。這意味著學習它不會那麼困難。最重要的是練習-練習-練習。今天是理論,下一篇是實踐。由於關係資料庫是一組二維數組表以及它們之間的關係,因此工作將圍繞它們進行。如果我們談論一個例子,我們可以顯示兩個表 - “國家”和“城市”以及它們如何連接。「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 4在這個階段,我們必須了解表中的記錄是有關 Java 世界中某個物件的資料。例如,這兩個表在Java中可以這樣描述:
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
嗯,不是很漂亮嗎?資料庫可以儲存任意數量的表。在我們的例子中,有兩個。

表結構

我認為每個人都以某種方式接觸過 Excel 表格,並且您了解術語“行”“列”。在資料庫的上下文中,我們更常討論記錄和欄位:「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 5因此,事實證明,City 類別的每個物件都是資料庫表中的一筆記錄。

首要的關鍵

「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 6資料庫中的欄位經常具有相同的值。例如,在社交網路中,可以透過姓名甚至父名找到多個人。關聯式資料庫需要一個可用於存取記錄的唯一欄位。這稱為第一個鍵或主鍵。通常,ID(id) 欄位用作這樣的鍵 - 這是標識符的縮寫。這就是為什麼您需要為每個表添加一個ID欄位。「Java 專案從頭到尾」:分析資料庫與 SQL 語言 - 7

外鍵

在我們的範例中,此類欄位位於 City 表中,該表使用 Country 中的鍵。它的工作原理是這樣的:每個城市都知道其國家/地區的唯一資訊標識符,如果我們使用它並在資料庫中建立查詢,我們將收到有關該國家/地區的全面資訊。如圖所示,兩個表之間存在關係:「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 8這裡展示了外鍵的原理。

SQL中有哪些部分?

順便說一下,面試時常被問到 SQL 有哪些操作:
  • DDL(資料定義語言)是一組變更/建立表格及其結構等的運算子。即建立表、刪除表、建立/刪除表中的欄位;建立新的主鍵等等;
  • DML(資料操作語言)是一組管理資料修改的操作符。這些都是更改資料庫中資料的操作:新增、取得、更改和刪除;
  • DCL(資料控制語言)是一種確認使用者執行操作的權限的手段。向特定使用者提供存取和權限的操作,以便他可以執行 DDL/DML 操作。

SQL中有哪些資料類型

表可以儲存和處理某些類型的資料。這裡的一切都與我們在 Java 中使用的東西相似。我們來談談主要的吧。只有三個,我們將根據需要和/或期望添加其他:「Java 專案從頭到尾」:分析資料庫與 SQL 語言 - 9從圖片中可以看出,它們是:
  • INT - 整數值。用於唯一識別碼和簡單整數;
  • VARCHAR是我們的字串
  • DATE是我們的本地日期。
到目前為止一切都很簡單,對吧?欄位類型是在建立表格時指定的。顯然,不可能將不同類型的值寫入該欄位。

什麼是 SQL 運算符

運算符是執行某些操作的單獨命令。運算子由句子組成,而句子又由查詢中使用的關鍵字組成。讓我們來看一個例子:「Java 專案從頭到尾」:分析資料庫和 SQL 語言 - 10這裡更有趣,這裡已經建立了一個查詢。他們在那裡做什麼?很簡單,它說:“從 Clients 表中獲取三個字段(Name、Age 和 CreatedDate),僅選擇 name 等於 Roman 的記錄。”

結論

在這篇文章中我們開始學習資料庫。我們了解它是什麼以及為什麼我們需要它。接下來,我們回顧了 SQL 的最初跡象,我們將在下一篇文章中更詳細地討論這些跡象。像往常一樣,我建議在 GitHub 上註冊並關注我的帳戶,以關注本系列以及我在那裡從事的其他專案。

家庭作業

為了增加JRTB系列文章的興趣,我們會不時佈置家庭作業。例如,如果沒有今天的作業,下一篇文章會更難理解,因為那裡會有很多練習。因此,任務是在電腦上安裝 MySQL DBMS 並透過控制台或其他解決方案登入資料庫。感謝大家的閱讀,我們很快再見!

此系列所有資料的清單位於本文開頭。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION