JavaRush /Java Blog /Random-TW /第 1 部分:SQL 簡介
Marat Sadykov
等級 41

第 1 部分:SQL 簡介

在 Random-TW 群組發布

JDBC。在 IntelliJ IDEA 中連接資料庫並建立 Java 控制台應用程式

介紹

本文開啟了一個簡短的系列,專門介紹Java 中與資料庫互動的基礎知識以及SQL 的簡介。許多程式都忙於處理和修改資訊並使其保持最新。由於資料是程式邏輯中非常重要的一部分,因此通常會為其分配單獨的儲存。其中的資訊是結構化的,並受特殊規則的約束,以確保正確的處理和儲存。使用特殊的查詢語言-SQL(結構化查詢語言)來存取和修改資料。
第 1 部分:SQL 簡介 - 1
資料庫管理系統是確保各種外部程式與資料和附加服務(日誌記錄、復原、備份等)互動的軟體,包括透過 SQL。也就是說,資料和使用它的外部程式之間的軟體層。在這一部分中,我們將回答什麼是 SQL、什麼是 SQL 伺服器的問題,並建立第一個與 DBMS 互動的程式。

資料庫管理系統的類型

根據組織資料儲存的方式,DBMS 有多種類型:
  • 分層的。資料以樹狀結構組織。一個例子是檔案系統,它從磁碟的根開始,然後隨著不同類型的檔案和不同嵌套程度的資料夾的分支而成長。
  • 網路。層次結構的一種修改,每個節點可以有多個父節點。
  • 面向對象。根據 OOP,資料以類別/物件的形式組織,並具有它們的屬性和互動原則。
  • 關係型。這種類型的 DBMS 的資料以表格的形式組織。表格可以相互鏈接,其中的資訊是結構化的。
在本系列文章中,我們將使用 H2 作為範例來了解關係 DBMS(最常見的 DBMS),並從頭開始建立一個模擬類似於交換工作方式的應用程式。 問題:為什麼不是 PostgreSQL、MySQL、MSSQL 或 Oracle? 答:為了不被安裝一組單獨的程式的問題分散注意力。進一步配置、建立資料庫、在不同作業系統、版本中工作的複雜性。要使用 H2,您需要執行最少的操作。但沒有什麼可以阻止您將目前的 H2 JDBC 變更為其他製造商的關係型 DBMS(僅伺服器位址行和驅動程式類別名稱發生變更)。

SQL

外部程式以資料管理語言結構化查詢語言產生對 DBMS 的查詢。什麼是 SQL?它與傳統程式語言有何不同?SQL 的特徵之一是聲明性。也就是說,SQL是一種聲明性語言。這意味著,當輸入命令時,即向 SQL 伺服器建立查詢時,我們描述的是我們到底想要得到什麼,而不是以什麼方式得到。透過向伺服器發送請求SELECT * FROM CUSTOMER(從 SQL 大致翻譯為俄語:“從 COSTUMER 表中進行選擇,該選擇包含表中的所有行”),我們將收到所有用戶的資料。伺服器如何以及從哪裡下載並產生我們感興趣的數據並不重要。最主要的是正確地提出請求。
  • 什麼是 SQL Server 以及它如何運作?與 DBMS 的交互遵循客戶端-伺服器原則。某些外部程式以 SQL 語言中的運算子和命令的形式發送請求,DBMS 會對其進行處理並發送回應。為簡單起見,我們假設 SQL Server = DBMS。
如果您可以駕駛一種品牌的汽車,那麼您很可能能夠毫無問題地駕駛其他品牌的汽車。除了小細節外,駕駛的基本原理在任何地方都是相同的。對於不同製造商的 SQL 伺服器也是如此 - 每個製造商都有自己的 SQL 版本,但都符合指定的標準(SQL92、SQL2003...)。我們將在 SQL92 框架內使用運算子和命令。 基本 SQL 語句分為以下幾組:
  • 資料定義語言 ( DDL ) – 資料定義。建立資料庫結構及其物件;
  • 資料操作語言(DML)-與資料的實際互動:插入、刪除、修改與讀取;
  • 事務控制語言(TCL)-事務管理;
  • 資料控制語言(DCL)-資料和資料庫結構存取權限的管理。
在一系列文章中,我們將討論前三組,特別關注 DML。

資料庫連線

在1980年代,PC XT/AT類型的個人電腦佔領了市場。這很大程度上是由於其設計的模組化。這意味著使用者可以輕鬆地更改電腦的一個或另一個元件(處理器、顯示卡、磁碟等)。這個奇妙的功能一直保留到今天:我們更換顯示卡並更新驅動程式(有時它甚至會自動更新)。大多數情況下,此類操作不會發生任何不良情況,並且現有程式將繼續在更新的系統上運行,而無需重新安裝。這同樣適用於使用 Java 和 DBMS 進行工作。為了標準化 SQL 伺服器的工作,可以透過單點JDBC(Java 資料庫連線)與其進行互動。它是用於使用 DBMS 的java.sql包的實作。所有流行 SQL 伺服器的製造商都為其發布了 JDBC 驅動程式。考慮下圖。該應用程式使用java.sql中的類別實例。然後我們傳遞必要的命令來檢索/修改資料。接下來java.sql透過jdbc驅動與DBMS進行交互,並將完成的結果傳回給我們。 第 1 部分:SQL 簡介 - 2 要切換到其他製造商的 DBMS,通常更改 JDBC 並執行基本設定就足夠了。程序的其餘部分不變。

第一個節目

讓我們進入實際部分。讓我們使用JetBrains IntelliJ IDEA IDE建立一個 Java 專案。請注意,終極版包含一個用於處理 SQL 和資料庫的出色工具 - Data Grip。然而,大多數用戶都是付費的。因此,出於教育目的,我們只能使用公開的IntelliJ IDEA Community Edition。所以:
  1. 啟動 IDE 並建立新專案:
    第 1 部分:SQL 簡介 - 3

  2. 選擇一個Java項目,指明SDK版本(範例中為JDK8,但這並不重要):
    第 1 部分:SQL 簡介 - 4

  3. 在下一步中,選擇控制台應用程式作為類型:
    第 1 部分:SQL 簡介 - 5

  4. 我們指出項目名稱套件及其在磁碟上的位置(我專門為此創建了一個單獨的目錄):
    第 1 部分:SQL 簡介 - 6

  5. 讓我們將 IDE 放在一邊,從www.h2database.com下載使用H2 DBMS所需的JDBC 檔案(下載獨立於平台的 ZIP):
    第 1 部分:SQL 簡介 - 7

  6. 我們進入下載的檔案(我們對h2\bin路徑下的jar 檔案感興趣,稍後我們將需要它,複製它):
    第 1 部分:SQL 簡介 - 8

  7. 我們返回 IDE 並在專案的根目錄中建立目錄:db,其中包含 DBMS 資料的檔案; lib – 這是 JDBC JAR 函式庫:
    第 1 部分:SQL 簡介 - 9

  8. 將步驟6中的 jar 檔案移至lib目錄,並將其作為庫新增至專案:
    第 1 部分:SQL 簡介 - 10

  9. 讓我們將 java 檔案src/sql/demo重新命名為StockExchange.java(以防您忘記,我們將模擬一個簡單的「交換」),更改其內容並執行:
    第 1 部分:SQL 簡介 - 11
現在我們可以連接到 DBMS 或斷開連接。每個步驟都會反映在控制台中。當您首次連線到 DBMS 時,會建立一個資料庫檔案stockExchange.mv.db

程式碼解析

實際代碼:
package sql.demo;

import java.sql.*;

public class StockExchangeDB {
    // Блок объявления констант
    public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
    public static final String DB_Driver = "org.h2.Driver";

    public static void main(String[] args) {
        try {
            Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД
            Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД
            System.out.println("Соединение с СУБД выполнено.");
            connection.close();       // отключение от БД
            System.out.println("Отключение от СУБД выполнено.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); // обработка ошибки  Class.forName
            System.out.println("JDBC драйвер для СУБД не найден!");
        } catch (SQLException e) {
            e.printStackTrace(); // обработка ошибок  DriverManager.getConnection
            System.out.println("Ошибка SQL !");
        }
    }
}

常量塊:

  1. DB_Driver:這裡我們定義了驅動程式的名稱,例如可以透過點擊連接的庫並在目前專案的 lib 目錄中展開其結構來找到該驅動程式的名稱。
  2. DB_URL:我們的資料庫位址。由冒號分隔的資料組成:
  3. 協定=jdbc
  4. 供應商(製造商/名稱)DBMS=h2
  5. DBMS 的位置,在我們的範例中是檔案的路徑 (c:/JavaPrj/SQLDemo/db/stockExchange)。對於網路 DBMS,此處還額外指示遠端伺服器的名稱或 IP 位址、TCP/UDP 連接埠號碼等。

錯誤處理:

在我們的程式碼中呼叫方法可能會傳回錯誤,您應該注意。在此階段,我們只需在控制台中報告它們即可。請注意,使用 DBMS 時的錯誤最常見的是SQLException

操作邏輯:

  1. Class.forName (DB_Driver) – 我們確保對應的 JDBC 驅動程式可用(我們之前下載並安裝過)。
  2. DriverManager.getConnection (DB_URL) – 建立 DBMS 連線。使用傳遞的位址,JDBC 本身將確定 DBMS 的類型和位置,並傳回一個 Connection,我們可以使用它與資料庫進行通訊。
  3. connection.close() – 關閉與 DBMS 的連線並完成程式的工作。
在本系列的下一部分中,我們將熟悉 DDL 運算子和 SQL 資料類型,並建立資料庫的初始結構並用表格填入它。 第二部分 第三部分
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION