JavaRush /Java-Blog /Random-DE /Teil 1: Einführung in SQL
Marat Sadykov
Level 41

Teil 1: Einführung in SQL

Veröffentlicht in der Gruppe Random-DE

JDBC. Anschließen einer Datenbank und Erstellen einer Java-Konsolenanwendung in IntelliJ IDEA

Einführung

Dieser Artikel eröffnet eine kurze Reihe, die den Grundlagen der Interaktion mit Datenbanken in Java und einer Einführung in SQL gewidmet ist . Viele Programme sind damit beschäftigt, Informationen zu verarbeiten, zu verändern und auf dem neuesten Stand zu halten. Da Daten ein sehr wichtiger Teil der Programmlogik sind, wird ihnen häufig separater Speicher zugewiesen. Die darin enthaltenen Informationen sind strukturiert und unterliegen besonderen Regeln, um eine korrekte Verarbeitung und Speicherung sicherzustellen. Der Zugriff auf und die Änderung der Daten erfolgt über eine spezielle Abfragesprache – SQL (Structured Query Language).
Teil 1. Einführung in SQL - 1
Ein Datenbankverwaltungssystem ist eine Software, die die Interaktion verschiedener externer Programme mit Daten und Zusatzdiensten (Protokollierung, Wiederherstellung, Sicherung usw.) sicherstellt, auch über SQL. Das heißt, eine Softwareschicht zwischen den Daten und externen Programmen, die damit arbeiten. In diesem Teil beantworten wir die Fragen dazu, was SQL ist, was ein SQL-Server ist, und erstellen das erste Programm, das mit dem DBMS interagiert.

Arten von DBMS

Es gibt verschiedene Arten von DBMS, je nachdem, wie sie die Datenspeicherung organisieren:
  • Hierarchisch. Die Daten sind in einer Baumstruktur organisiert. Ein Beispiel ist ein Dateisystem, das im Stammverzeichnis der Festplatte beginnt und dann mit Zweigen von Dateien unterschiedlichen Typs und Ordnern mit unterschiedlichem Verschachtelungsgrad wächst.
  • Netzwerk. Als Modifikation der Hierarchie kann jeder Knoten mehr als einen übergeordneten Knoten haben.
  • Objektorientierte. Daten werden in Form von Klassen/Objekten mit ihren Attributen und Interaktionsprinzipien gemäß OOP organisiert.
  • Relational. Die Daten dieses DBMS-Typs sind in Tabellen organisiert. Tabellen können miteinander verknüpft werden, die darin enthaltenen Informationen werden strukturiert.
In dieser Artikelserie werden wir uns am Beispiel von H2 mit relationalen DBMS (als den gebräuchlichsten) befassen und eine Anwendung von Grund auf erstellen, die etwas Ähnliches wie eine Börse emuliert. Frage: Warum nicht PostgreSQL, MySQL, MSSQL oder Oracle? Antwort: Um nicht durch die Installation eines separaten Programmsatzes abgelenkt zu werden. Weitere Konfiguration, Erstellen einer Datenbank, die Feinheiten der Arbeit in verschiedenen Betriebssystemen und Versionen. Um mit H2 arbeiten zu können, müssen Sie ein Minimum an Aktionen ausführen. Aber nichts hindert Sie daran, den aktuellen H2-JDBC auf ein relationales DBMS eines anderen Herstellers umzustellen (nur die Serveradresszeile und der Name der Treiberklasse ändern sich).

SQL

Externe Programme generieren Abfragen an das DBMS in der Datenverwaltungssprache Structured Query Language. Was ist SQL und wie unterscheidet es sich von herkömmlichen Programmiersprachen? Eines der Merkmale von SQL ist die Deklarativität. Das heißt, SQL ist eine deklarative Sprache . Das bedeutet, dass wir bei der Eingabe von Befehlen, also beim Erstellen von Abfragen an den SQL-Server, genau beschreiben, was wir erhalten möchten, und nicht auf welche Weise. Durch Senden einer Anfrage an den Server SELECT * FROM CUSTOMER(ungefähre Übersetzung von SQL ins Russische: „Treffen Sie eine Auswahl aus der Tabelle COSTUMER, die Auswahl besteht aus allen Zeilen in der Tabelle“ ) erhalten wir Daten für alle Benutzer. Es spielt überhaupt keine Rolle, wie und von wo der Server die für uns interessanten Daten herunterlädt und generiert. Die Hauptsache ist, die Anfrage richtig zu formulieren.
  • Was ist SQL Server und wie funktioniert es? Die Interaktion mit dem DBMS erfolgt nach dem Client-Server-Prinzip. Ein externes Programm sendet eine Anfrage in Form von Operatoren und Befehlen in SQL-Sprache, das DBMS verarbeitet sie und sendet eine Antwort. Nehmen wir der Einfachheit halber an, dass SQL Server = DBMS ist.
Wenn Sie eine Automarke fahren können, werden Sie höchstwahrscheinlich auch andere problemlos fahren können. Die Grundlagen des Autofahrens sind bis auf kleine Details überall gleich. Das Gleiche gilt für SQL-Server verschiedener Hersteller – jeder von ihnen verfügt über eine eigene SQL-Version, die jedoch den angegebenen Standards (SQL92, SQL2003...) entspricht. Wir werden Operatoren und Befehle innerhalb des SQL92-Frameworks verwenden. Grundlegende SQL-Anweisungen sind in die folgenden Gruppen unterteilt:
  • Data Definition Language ( DDL ) – Datendefinitionen. Erstellung der Datenbankstruktur und ihrer Objekte;
  • Data Manipulation Language ( DML ) – tatsächliche Interaktion mit Daten: Einfügen, Löschen, Ändern und Lesen;
  • Transaction Control Language ( TCL ) – Transaktionsmanagement;
  • Data Control Language ( DCL ) – Verwaltung von Zugriffsrechten auf Daten und Datenbankstrukturen.
In einer Artikelserie werden wir uns mit den ersten drei Gruppen befassen und dabei besonderes Augenmerk auf DML legen.

JDBC

In den 80er Jahren des letzten Jahrhunderts eroberten Personalcomputer vom Typ PC XT/AT den Markt. Dies war vor allem auf die Modularität ihres Designs zurückzuführen. Dies bedeutet, dass der Benutzer ganz einfach die eine oder andere Komponente seines Computers (Prozessor, Grafikkarte, Festplatten usw.) ändern kann. Diese wunderbare Eigenschaft ist bis heute erhalten geblieben: Wir wechseln die Grafikkarte und aktualisieren den Treiber (manchmal aktualisiert er sich sogar automatisch). Meistens passiert bei solchen Manipulationen nichts Schlimmes und vorhandene Programme funktionieren ohne Neuinstallation weiterhin mit dem aktualisierten System. Gleiches gilt für die Arbeit in Java mit einem DBMS. Um die Arbeit mit SQL-Servern zu standardisieren, kann die Interaktion mit ihm über einen einzigen Punkt erfolgen – JDBC (Java DataBase Connectivity). Es handelt sich um eine Implementierung des java.sql- Pakets für die Arbeit mit einem DBMS. Hersteller aller gängigen SQL-Server veröffentlichen JDBC-Treiber für sie. Betrachten Sie das Diagramm unten. Die Anwendung verwendet Instanzen von Klassen aus java.sql . Anschließend übergeben wir die erforderlichen Befehle zum Abrufen/Ändern der Daten. Als nächstes interagiert java.sql über den JDBC-Treiber mit dem DBMS und gibt das fertige Ergebnis an uns zurück. Teil 1. Einführung in SQL - 2 Um auf ein DBMS eines anderen Herstellers umzusteigen, reicht es oft aus, JDBC zu wechseln und Grundeinstellungen vorzunehmen. Die übrigen Teile des Programms ändern sich nicht.

Erstes Programm

Kommen wir zum praktischen Teil. Lassen Sie uns ein Java-Projekt mit der JetBrains IntelliJ IDEA-IDE erstellen . Beachten Sie, dass die Ultimate Edition ein wunderbares Tool für die Arbeit mit SQL und Datenbanken enthält – Data Grip . Allerdings ist es für die meisten Nutzer kostenpflichtig. Für Bildungszwecke können wir daher nur die öffentlich verfügbare IntelliJ IDEA Community Edition verwenden . Also:
  1. Starten Sie die IDE und erstellen Sie ein neues Projekt:
    Teil 1. Einführung in SQL - 3

  2. Wählen Sie ein Java-Projekt aus und geben Sie die SDK- Version an (im Beispiel JDK8, dies ist jedoch nicht kritisch):
    Teil 1. Einführung in SQL - 4

  3. Wählen Sie im nächsten Schritt Konsolenanwendung als Typ aus :
    Teil 1. Einführung in SQL - 5

  4. Wir geben den Projektnamen , das Paket und seinen Speicherort auf der Festplatte an (ich habe speziell dafür ein separates Verzeichnis erstellt):
    Teil 1. Einführung in SQL - 6

  5. Lassen Sie uns die IDE für eine Minute beiseite legen und von www.h2database.com die notwendige JDBC-Datei für die Arbeit mit dem H2 DBMS herunterladen (plattformunabhängige ZIP-Datei herunterladen):
    Teil 1. Einführung in SQL - 7

  6. Wir gehen in die heruntergeladene Datei (uns interessiert die JAR-Datei im Pfad h2\bin , die wir später benötigen werden, kopieren Sie sie):
    Teil 1. Einführung in SQL - 8

  7. Wir kehren zur IDE zurück und erstellen Verzeichnisse im Stammverzeichnis des Projekts: db , wo sich Dateien mit DBMS-Daten befinden; lib – hier ist die JDBC-JAR-Bibliothek:
    Teil 1. Einführung in SQL - 9

  8. Verschieben Sie die JAR-Datei aus Schritt 6 in das lib- Verzeichnis und fügen Sie sie dem Projekt als Bibliothek hinzu:
    Teil 1: Einführung in SQL – 10

  9. Benennen wir die Java-Datei in src/sql/demo in StockExchange.java um (falls Sie es vergessen haben, emulieren wir einen einfachen „Austausch“), ändern Sie ihren Inhalt und führen Sie Folgendes aus:
    Teil 1. Einführung in SQL - 11
Jetzt können wir uns mit dem DBMS verbinden und trennen. Jeder Schritt wird in der Konsole angezeigt. Wenn Sie sich zum ersten Mal mit dem DBMS verbinden, wird eine Datenbankdatei stockExchange.mv.db erstellt .

Code-Analyse

Der eigentliche Code:
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 !");
        }
    }
}

Konstanter Block:

  1. DB_Driver : Hier haben wir den Namen des Treibers definiert, der beispielsweise gefunden werden kann, indem man auf die verbundene Bibliothek klickt und deren Struktur im lib-Verzeichnis des aktuellen Projekts erweitert.
  2. DB_URL : Unsere Datenbankadresse. Besteht aus durch einen Doppelpunkt getrennten Daten:
  3. Protokoll=jdbc
  4. Anbieter (Hersteller/Name) DBMS=h2
  5. Der Speicherort des DBMS, in unserem Fall der Pfad zur Datei (c:/JavaPrj/SQLDemo/db/stockExchange). Bei Netzwerk-DBMS werden hier zusätzlich die Namen oder IP-Adressen von Remote-Servern, TCP/UDP-Portnummern usw. angegeben.

Fehlerbearbeitung:

Aufrufende Methoden in unserem Code können Fehler zurückgeben, auf die Sie achten sollten. Zu diesem Zeitpunkt melden wir sie einfach in der Konsole. Beachten Sie, dass Fehler beim Arbeiten mit einem DBMS am häufigsten SQLException sind .

Betriebslogik:

  1. Class.forName (DB_Driver) – wir stellen sicher, dass der entsprechende JDBC-Treiber verfügbar ist (den wir zuvor heruntergeladen und installiert haben).
  2. DriverManager.getConnection (DB_URL) – stellt eine DBMS-Verbindung her. Anhand der übergebenen Adresse bestimmt JDBC selbst den Typ und Standort unseres DBMS und gibt eine Verbindung zurück, über die wir mit der Datenbank kommunizieren können.
  3. Connection.close() – Verbindung zum DBMS schließen und die Arbeit mit dem Programm beenden.
Im nächsten Teil der Serie werden wir uns mit DDL-Operatoren und SQL-Datentypen vertraut machen, außerdem die Ausgangsstruktur unserer Datenbank erstellen und diese mit Tabellen füllen. Zweiter Teil Dritter Teil
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION