JavaRush /Java Blogu /Random-AZ /1-ci hissə: SQL-ə giriş
Marat Sadykov
Səviyyə

1-ci hissə: SQL-ə giriş

Qrupda dərc edilmişdir

JDBC. Verilənlər bazasını birləşdirmək və IntelliJ IDEA-da Java konsol tətbiqini yaratmaq

Giriş

Bu məqalə Java-da verilənlər bazası ilə qarşılıqlı əlaqənin əsaslarına və SQL-ə girişə həsr olunmuş qısa seriyanı açır . Bir çox proqramlar məlumatın işlənməsi və dəyişdirilməsi və onu yeni saxlamaqla məşğuldur. Məlumatlar proqram məntiqinin çox vacib hissəsi olduğundan, onun üçün çox vaxt ayrıca yaddaş ayrılır. Ondakı məlumatlar düzgün işlənməni və saxlanmasını təmin etmək üçün strukturlaşdırılmışdır və xüsusi qaydalara tabedir. Məlumatlar xüsusi sorğu dili - SQL (Structured Query Language) vasitəsilə əldə edilir və dəyişdirilir.
Hissə 1. SQL-ə giriş - 1
Verilənlər bazasını idarəetmə sistemi müxtəlif xarici proqramların verilənlər və əlavə xidmətlərlə (giriş, bərpa, ehtiyat nüsxə və s.), o cümlədən SQL vasitəsilə qarşılıqlı əlaqəsini təmin edən proqram təminatıdır. Yəni verilənlər və onunla işləyən xarici proqramlar arasında proqram layı. Bu hissədə biz SQL nədir, SQL server nədir kimi suallara cavab verəcəyik və DBMS ilə qarşılıqlı əlaqə üçün ilk proqramı yaradacağıq.

DBMS növləri

Məlumatların saxlanmasını təşkil etmə üsuluna əsasən bir neçə növ DBMS var:
  • İerarxik. Məlumatlar ağac strukturunda təşkil edilir. Nümunə olaraq diskin kökündən başlayan və sonra müxtəlif tipli faylların filialları və müxtəlif yuvalanma dərəcələrinə malik qovluqlar ilə böyüyən fayl sistemini göstərmək olar.
  • Şəbəkə. İerarxik modifikasiya, hər bir node birdən çox valideyn ola bilər.
  • Obyekt yönümlü. Məlumatlar OOP-a uyğun olaraq atributları və qarşılıqlı əlaqə prinsipləri ilə siniflər/obyektlər şəklində təşkil edilir.
  • Əlaqəli. Bu tip DBMS-lərin məlumatları cədvəllərdə təşkil edilir. Cədvəllər bir-biri ilə əlaqələndirilə bilər, onlarda olan məlumatlar strukturlaşdırılmışdır.
Bu məqalələr silsiləsində biz H2-dən nümunə kimi istifadə edərək əlaqəli DBMS-lərə (ən çox yayılmış olanlar kimi) baxacağıq və mübadilə necə işlədiyinə bənzər bir şeyi təqlid edən sıfırdan proqram yaradacağıq. Sual: PostgreSQL, MySQL, MSSQL və ya Oracle niyə olmasın? Cavab: Ayrı bir proqram dəsti quraşdırmaq məsələlərindən yayınmamaq üçün. Əlavə konfiqurasiya, verilənlər bazası yaratmaq, müxtəlif OS-lərdə, versiyalarda işləməyin incəlikləri. H2 ilə işləmək üçün minimum hərəkətlər etməlisiniz. Lakin heç bir şey sizə cari H2 JDBC-ni başqa istehsalçının relational DBMS-ə dəyişməsinə mane olmur (yalnız server ünvan xətti və sürücü sinifinin adı dəyişir).

SQL

Xarici proqramlar verilənlərin idarə edilməsi dilində Strukturlaşdırılmış Sorğu Dilində DBMS-ə sorğular yaradır. SQL nədir və adi proqramlaşdırma dillərindən nə ilə fərqlənir? SQL-in xüsusiyyətlərindən biri deklarativlikdir. Yəni, SQL deklarativ dildir . Bu o deməkdir ki, əmrləri daxil edərkən, yəni SQL serverinə sorğular yaradanda biz hansı yolla deyil, dəqiq nəyi əldə etmək istədiyimizi təsvir edirik. Serverə sorğu göndərməklə SELECT * FROM CUSTOMER(SQL-dən rus dilinə təxmini tərcümə: “MÜŞTƏRİCİ cədvəlindən seçim et, seçim cədvəldəki bütün sətirlərdən ibarətdir” ) biz bütün istifadəçilər üçün məlumat alacağıq. Serverin bizi maraqlandıran məlumatları necə və haradan endirməsinin və yaratmasının heç bir əhəmiyyəti yoxdur. Əsas odur ki, sorğunu düzgün formalaşdırmaqdır.
  • SQL Server nədir və necə işləyir? DBMS ilə qarşılıqlı əlaqə müştəri-server prinsipi əsasında baş verir. Bəzi xarici proqramlar SQL dilində operatorlar və əmrlər şəklində sorğu göndərir, DBMS onu emal edir və cavab göndərir. Sadəlik üçün Fərz edək ki, SQL Server = DBMS.
Bir markalı avtomobili idarə edə bilsəniz, çox güman ki, başqalarını problemsiz idarə edə biləcəksiniz. Xırda detallar istisna olmaqla, avtomobil sürməyin əsasları hər yerdə eynidir. Eyni şey müxtəlif istehsalçıların SQL serverlərinə də aiddir - onların hər birinin öz SQL versiyası var, lakin o, müəyyən edilmiş standartlara (SQL92, SQL2003...) cavab verir. SQL92 çərçivəsində operatorlar və əmrlərdən istifadə edəcəyik. Əsas SQL ifadələri aşağıdakı qruplara bölünür:
  • Data Definition Language ( DDL ) – verilənlərin tərifləri. Verilənlər bazası strukturunun və onun obyektlərinin yaradılması;
  • Data Manipulation Language( DML ) – verilənlərlə faktiki qarşılıqlı əlaqə: daxil etmək, silmək, dəyişdirmək və oxumaq;
  • Transaction Control Language ( TCL ) – əməliyyatların idarə edilməsi;
  • Data Control Language ( DCL ) – verilənlərə və verilənlər bazası strukturlarına giriş hüquqlarının idarə edilməsi.
Bir sıra məqalələrdə DML-ə xüsusi diqqət yetirməklə ilk üç qrupa baxacağıq.

JDBC

Ötən əsrin 80-ci illərində PC XT/AT tipli fərdi kompüterlər bazarı fəth etdi. Bu, əsasən onların dizaynının modulluğu ilə bağlı idi. Bu o deməkdir ki, istifadəçi öz kompüterinin bu və ya digər komponentini (prosessor, video kart, disklər və s.) olduqca asanlıqla dəyişə bilər. Bu gözəl xüsusiyyət bu günə qədər qorunub saxlanılmışdır: biz video kartı dəyişdiririk və sürücünü yeniləyirik (bəzən hətta avtomatik olaraq özünü yeniləyir). Çox vaxt bu cür manipulyasiyalarla pis bir şey baş vermir və mövcud proqramlar yenidən quraşdırmadan yenilənmiş sistemlə işləməyə davam edəcəkdir. Eyni şey Java-da DBMS ilə işləməyə də aiddir. SQL serverləri ilə işi standartlaşdırmaq üçün onunla qarşılıqlı əlaqə bir nöqtə - JDBC (Java DataBase Connectivity) vasitəsilə həyata keçirilə bilər. Bu , DBMS ilə işləmək üçün java.sql paketinin tətbiqidir . Bütün məşhur SQL serverlərinin istehsalçıları onlar üçün JDBC sürücülərini buraxırlar. Aşağıdakı diaqramı nəzərdən keçirin. Tətbiq java.sql -dən sinif nümunələrindən istifadə edir . Sonra məlumatları əldə etmək/dəyişdirmək üçün lazımi əmrləri veririk. Sonra, java.sql jdbc drayveri vasitəsilə DBMS ilə qarşılıqlı əlaqədə olur və hazır nəticəni bizə qaytarır. Hissə 1. SQL-ə giriş - 2 Başqa istehsalçının DBMS-ə keçmək üçün JDBC-ni dəyişdirmək və əsas parametrləri yerinə yetirmək kifayətdir. Proqramın qalan hissələri dəyişmir.

Birinci proqram

Gəlin praktik hissəyə keçək. JetBrains IntelliJ IDEA IDE istifadə edərək Java layihəsi yaradaq . Qeyd edək ki, Ultimate Edition SQL və verilənlər bazası ilə işləmək üçün gözəl aləti ehtiva edir - Data Grip . Bununla belə, əksər istifadəçilər üçün ödənişlidir. Beləliklə, təhsil məqsədləri üçün biz yalnız ictimaiyyətə açıq olan IntelliJ IDEA Community Edition-dan istifadə edə bilərik . Belə ki:
  1. IDE-ni işə salın və yeni layihə yaradın:
    Hissə 1. SQL-ə giriş - 3

  2. Java layihəsini seçin, SDK versiyasını göstərin (məsələn, JDK8, lakin bu kritik deyil):
    Hissə 1. SQL-ə giriş - 4

  3. Növbəti addımda növ kimi konsol tətbiqini seçin :
    Hissə 1. SQL-ə giriş - 5

  4. Layihənin adını , paketini və diskdəki yerini göstəririk (mən bunun üçün xüsusi bir kataloq yaratdım):
    Hissə 1. SQL-ə giriş - 6

  5. Gəlin IDE-ni bir dəqiqə kənara qoyaq və www.h2database.com saytından H2 DBMS ilə işləmək üçün lazım olan JDBC faylını yükləyək (platformadan müstəqil ZIP yükləyin):
    Hissə 1. SQL-ə giriş - 7

  6. Yüklənmiş faylın içərisinə daxil oluruq ( h2\bin yolu boyunca jar faylı ilə maraqlanırıq , sonra bizə lazım olacaq, kopyalayın):
    Hissə 1. SQL-ə giriş - 8

  7. Biz IDE-ə qayıdırıq və layihənin kökündə qovluqlar yaradırıq: db , DBMS məlumatları olan faylların yerləşəcəyi yer; lib - burada JDBC JAR kitabxanası:
    Hissə 1. SQL-ə giriş - 9

  8. Jar faylını 6-cı addımdan lib qovluğuna köçürün və onu kitabxana kimi layihəyə əlavə edin:
    1-ci hissə: SQL-ə giriş - 10

  9. Gəlin java faylının adını src/sql/demo olaraq StockExchange.java olaraq dəyişdirək (unutduğunuz halda, biz sadə bir “mübadilə” i təqlid edəcəyik), məzmununu dəyişdirin və işə salın:
    Hissə 1. SQL-ə giriş - 11
İndi biz DBMS-ə qoşula və ondan ayrıla bilərik. Hər bir addım konsolda əks olunur. DBMS-ə ilk dəfə qoşulduqda stockExchange.mv.db verilənlər bazası faylı yaradılır .

Kodun təhlili

Həqiqi 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 !");
        }
    }
}

Daimi blok:

  1. DB_Driver : Burada sürücünün adını müəyyən etdik , məsələn, bağlı kitabxanaya klikləməklə və cari layihənin lib kataloqunda onun strukturunu genişləndirməklə tapmaq olar.
  2. DB_URL : Bizim verilənlər bazası ünvanımız. İki nöqtə ilə ayrılmış məlumatlardan ibarətdir:
  3. Protokol=jdbc
  4. Satıcı (istehsalçı/adı) DBMS=h2
  5. DBMS-nin yeri, bizim vəziyyətimizdə fayla gedən yol (c:/JavaPrj/SQLDemo/db/stockExchange). Şəbəkə DBMS-ləri üçün burada əlavə olaraq uzaq serverlərin adları və ya IP ünvanları, TCP/UDP port nömrələri və sair göstərilir.

Emal zamanı xəta:

Kodumuzdakı zəng üsulları diqqət etməli olduğunuz səhvləri qaytara bilər. Bu mərhələdə biz onları sadəcə konsolda məlumatlandırırıq. Qeyd edək ki, DBMS ilə işləyərkən səhvlər ən çox SQLException olur .

Əməliyyat məntiqi:

  1. Class.forName (DB_Driver) – müvafiq JDBC drayverinin mövcud olduğundan əmin oluruq (əvvəllər onu yükləyib quraşdırmışıq).
  2. DriverManager.getConnection (DB_URL) – DBMS bağlantısı qurun. Keçirilmiş ünvandan istifadə edərək, JDBC özü DBMS-nin növünü və yerini təyin edəcək və verilənlər bazası ilə əlaqə saxlamaq üçün istifadə edə biləcəyimiz Əlaqəni qaytaracaq.
  3. connection.close() – DBMS ilə əlaqəni bağlayın və proqramla işi bitirin.
Silsilənin növbəti hissəsində biz DDL operatorları və SQL məlumat növləri ilə tanış olacaq, həmçinin verilənlər bazamızın ilkin strukturunu yaradıb cədvəllərlə dolduracağıq. İkinci hissə Üçüncü hissə
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION