JavaRush /Blog Java /Random-PL /Część 1: Wprowadzenie do SQL
Marat Sadykov
Poziom 41

Część 1: Wprowadzenie do SQL

Opublikowano w grupie Random-PL

JDBC. Podłączenie bazy danych i utworzenie aplikacji konsolowej Java w IntelliJ IDEA

Wstęp

Artykuł ten otwiera krótką serię poświęconą podstawom interakcji z bazami danych w języku Java oraz wstępowi do języka SQL . Wiele programów jest zajętych przetwarzaniem i modyfikowaniem informacji oraz ich aktualizacją. Ponieważ dane są bardzo ważną częścią logiki programu, często przydziela się im osobną pamięć. Informacje w nich zawarte są ustrukturyzowane i podlegają specjalnym zasadom zapewniającym prawidłowe przetwarzanie i przechowywanie. Dostęp do danych i ich modyfikacja odbywa się za pomocą specjalnego języka zapytań - SQL (Structured Query Language).
Część 1. Wprowadzenie do SQL - 1
System zarządzania bazami danych to oprogramowanie zapewniające interakcję różnych programów zewnętrznych z danymi i usługami dodatkowymi (logowanie, odzyskiwanie, tworzenie kopii zapasowych itp.), w tym poprzez SQL. Oznacza to warstwę oprogramowania pomiędzy danymi a programami zewnętrznymi, które z nimi współpracują. W tej części odpowiemy na pytania czym jest SQL, czym jest serwer SQL oraz stworzymy pierwszy program do interakcji z systemem DBMS.

Rodzaje SZBD

Istnieje kilka typów DBMS w zależności od sposobu, w jaki organizują przechowywanie danych:
  • Hierarchiczny. Dane są zorganizowane w strukturę drzewa. Przykładem jest system plików, który zaczyna się od katalogu głównego dysku, a następnie rozrasta się wraz z gałęziami plików różnych typów i folderami o różnym stopniu zagnieżdżenia.
  • Sieć. Modyfikacja hierarchiczna, każdy węzeł może mieć więcej niż jednego rodzica.
  • Zorientowany obiektowo. Dane zorganizowane są w formie klas/obiektów z ich atrybutami i zasadami interakcji zgodnie z OOP.
  • Relacyjny. Dane tego typu DBMS są zorganizowane w tabelach. Tabele można ze sobą łączyć, informacje w nich zawarte są ustrukturyzowane.
W tej serii artykułów przyjrzymy się relacyjnym systemom DBMS (jako najpopularniejszym) na przykładzie H2 i stworzymy od podstaw aplikację, która emuluje coś podobnego do działania giełdy. Pytanie: Dlaczego nie PostgreSQL, MySQL, MSSQL lub Oracle? Odpowiedź: Aby nie rozpraszać się kwestiami instalacji osobnego zestawu programów. Dalsza konfiguracja, tworzenie bazy danych, zawiłości pracy w różnych systemach operacyjnych, wersjach. Aby pracować z H2, musisz wykonać minimum działań. Ale nic nie stoi na przeszkodzie, aby zmienić bieżący JDBC H2 na relacyjny DBMS innego producenta (zmienia się tylko linia adresowa serwera i nazwa klasy sterownika).

SQL-a

Programy zewnętrzne generują zapytania do SZBD w języku zarządzania danymi Structured Query Language. Czym jest SQL i czym różni się od konwencjonalnych języków programowania? Jedną z cech języka SQL jest deklaratywność. Oznacza to, że SQL jest językiem deklaratywnym . Oznacza to, że wpisując polecenia, czyli tworząc zapytania do serwera SQL, opisujemy, co dokładnie chcemy uzyskać, a nie w jaki sposób. Wysyłając żądanie do serwera SELECT * FROM CUSTOMER(przybliżone tłumaczenie z SQL na rosyjski: „dokonaj wyboru z tabeli COSTUMER, selekcja obejmuje wszystkie wiersze w tabeli” ), otrzymamy dane dla wszystkich użytkowników. Nie ma zupełnie znaczenia, w jaki sposób i skąd serwer pobiera i generuje interesujące nas dane. Najważniejsze jest prawidłowe sformułowanie wniosku.
  • Co to jest SQL Server i jak działa? Interakcja z systemem DBMS odbywa się na zasadzie klient-serwer. Jakiś zewnętrzny program wysyła żądanie w postaci operatorów i poleceń w języku SQL, DBMS je przetwarza i wysyła odpowiedź. Dla uproszczenia załóżmy, że SQL Server = DBMS.
Jeśli potrafisz jeździć samochodem jednej marki, najprawdopodobniej będziesz mógł jeździć innymi bez żadnych problemów. Podstawy jazdy są wszędzie takie same, z wyjątkiem drobnych szczegółów. To samo dotyczy serwerów SQL różnych producentów - każdy z nich ma swoją wersję SQL, ale spełnia określone standardy (SQL92, SQL2003...). Będziemy używać operatorów i poleceń w ramach SQL92. Podstawowe instrukcje SQL dzielą się na następujące grupy:
  • Język definicji danych ( DDL ) – definicje danych. Stworzenie struktury bazy danych i jej obiektów;
  • Data Manipulation Language ( DML ) – rzeczywista interakcja z danymi: wstawianie, usuwanie, modyfikacja i odczyt;
  • Transaction Control Language ( TCL ) – zarządzanie transakcjami;
  • Data Control Language ( DCL ) – zarządzanie prawami dostępu do danych i struktur baz danych.
W serii artykułów przyjrzymy się pierwszym trzem grupom, zwracając szczególną uwagę na DML.

JDBC

W latach 80-tych ubiegłego wieku rynek podbiły komputery osobiste typu PC XT/AT. Było to w dużej mierze spowodowane modułowością ich konstrukcji. Oznacza to, że użytkownik może dość łatwo zmienić jeden lub drugi element swojego komputera (procesor, kartę graficzną, dyski itp.). Ta cudowna właściwość została zachowana do dziś: zmieniamy kartę graficzną i aktualizujemy sterownik (czasami nawet aktualizuje się automatycznie). Najczęściej przy takich manipulacjach nie dzieje się nic złego, a istniejące programy będą nadal działać ze zaktualizowanym systemem bez ponownej instalacji. To samo dotyczy pracy w Javie z systemem DBMS. Aby ujednolicić pracę z serwerami SQL, interakcja z nimi może odbywać się poprzez jeden punkt - JDBC (Java DataBase Connectivity). Jest to implementacja pakietu java.sql do pracy z systemem DBMS. Producenci wszystkich popularnych serwerów SQL udostępniają dla nich sterowniki JDBC. Rozważ poniższy diagram. Aplikacja wykorzystuje instancje klas z Java.sql . Następnie przekazujemy niezbędne polecenia w celu pobrania/modyfikowania danych. Następnie Java.sql wchodzi w interakcję z systemem DBMS poprzez sterownik jdbc i zwraca nam gotowy wynik. Część 1. Wprowadzenie do SQL - 2 Aby przejść na DBMS innego producenta, często wystarczy zmienić JDBC i dokonać podstawowych ustawień. Pozostałe części programu nie ulegają zmianie.

Pierwszy program

Przejdźmy do części praktycznej. Stwórzmy projekt Java przy użyciu JetBrains IntelliJ IDEA IDE . Należy pamiętać, że wersja Ultimate Edition zawiera wspaniałe narzędzie do pracy z SQL i bazami danych - Data Grip . Jednak dla większości użytkowników jest to płatne. Dlatego do celów edukacyjnych możemy używać wyłącznie publicznie dostępnej wersji IntelliJ IDEA Community Edition . Więc:
  1. Uruchom IDE i utwórz nowy projekt:
    Część 1. Wprowadzenie do SQL - 3

  2. Wybierz projekt Java, wskaż wersję SDK (w przykładzie JDK8, ale nie jest to krytyczne):
    Część 1. Wprowadzenie do SQL - 4

  3. W kolejnym kroku wybierz aplikację konsolową jako typ :
    Część 1. Wprowadzenie do SQL - 5

  4. Podajemy nazwę projektu , pakiet i jego lokalizację na dysku (specjalnie do tego stworzyłem osobny katalog):
    Część 1. Wprowadzenie do SQL - 6

  5. Odłóżmy na chwilę IDE i pobierzmy z www.h2database.com plik JDBC niezbędny do pracy z H2 DBMS (pobierz ZIP niezależny od platformy):
    Часть 1. Введение в SQL - 7

  6. Wchodzimy do pobranego pliku (interesuje nas plik jar po ścieżce h2\bin , który będzie nam później potrzebny, skopiuj go):
    Часть 1. Введение в SQL - 8

  7. Wracamy do IDE i w katalogu głównym projektu tworzymy katalogi: db , w którym będą znajdować się pliki z danymi DBMS; lib – oto biblioteka JAR JDBC:
    Часть 1. Введение в SQL - 9

  8. Przenieś plik jar z kroku 6 do katalogu lib i dodaj go do projektu jako bibliotekę:
    Часть 1. Введение в SQL - 10

  9. Zmieńmy nazwę pliku Java na src/sql/demo na StockExchange.java (jeśli zapomniałeś, będziemy emulować prostą „wymianę”), zmieńmy jego zawartość i uruchommy:
    Часть 1. Введение в SQL - 11
Teraz możemy łączyć się i rozłączać z DBMS. Każdy krok jest odzwierciedlany w konsoli. Kiedy po raz pierwszy łączysz się z systemem DBMS, tworzony jest plik bazy danych stockExchange.mv.db .

Analiza kodu

Rzeczywisty kod:
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 !");
        }
    }
}

Stały blok:

  1. DB_Driver : Tutaj zdefiniowaliśmy nazwę sterownika, którą można znaleźć np. klikając na podłączoną bibliotekę i rozwijając jej strukturę w katalogu lib bieżącego projektu.
  2. DB_URL : Adres naszej bazy danych. Zawiera dane oddzielone dwukropkiem:
  3. Protokół=jdbc
  4. Dostawca (producent/nazwa) DBMS=h2
  5. Lokalizacja systemu DBMS, w naszym przypadku ścieżka do pliku (c:/JavaPrj/SQLDemo/db/stockExchange). W przypadku sieciowych systemów DBMS dodatkowo podawane są tutaj nazwy lub adresy IP serwerów zdalnych, numery portów TCP/UDP itd.

Przetwarzanie błędów:

Wywoływanie metod w naszym kodzie może zwracać błędy, na które warto zwrócić uwagę. Na tym etapie po prostu zgłaszamy je w konsoli. Należy pamiętać, że błędy podczas pracy z systemem DBMS to najczęściej wyjątek SQLException .

Logika działania:

  1. Class.forName (DB_Driver) – upewniamy się, że dostępny jest odpowiedni sterownik JDBC (który wcześniej pobraliśmy i zainstalowaliśmy).
  2. DriverManager.getConnection (DB_URL) – nawiąż połączenie z systemem DBMS. Korzystając z przekazanego adresu, JDBC sam określi typ i lokalizację naszego systemu DBMS i zwróci połączenie, za pomocą którego będziemy mogli komunikować się z bazą danych.
  3. połączenie.close() – zamknij połączenie z systemem DBMS i zakończ pracę z programem.
W kolejnej części cyklu zapoznamy się z operatorami DDL i typami danych SQL, a także stworzymy początkową strukturę naszej bazy danych i wypełnimy ją tabelami. Część druga Część trzecia
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION