JavaRush /Java блогы /Random-KK /1-бөлім: SQL тіліне кіріспе
Marat Sadykov
Деңгей

1-бөлім: SQL тіліне кіріспе

Топта жарияланған

JDBC. IntelliJ IDEA жүйесінде дерекқорды қосу және Java консоль қосымшасын жасау

Кіріспе

Бұл мақала Java тіліндегі дерекқорлармен өзара әрекеттесу негіздеріне және SQL-ке кіріспеге арналған қысқаша топтаманы ашады . Көптеген бағдарламалар ақпаратты өңдеу және өзгерту және оны жаңартумен айналысады. Деректер бағдарлама логикасының өте маңызды бөлігі болғандықтан, оған жиі бөлек жад бөлінеді. Ондағы ақпарат дұрыс өңдеу мен сақтауды қамтамасыз ету үшін құрылымдалған және арнайы ережелерге бағынады. Деректерге қол жеткізу және өзгерту арнайы сұрау тілі – SQL (Structured Query Language) арқылы жүзеге асырылады.
1-бөлім. SQL-ге кіріспе - 1
Мәліметтер қорын басқару жүйесі – бұл әртүрлі сыртқы бағдарламалардың деректермен және қосымша қызметтермен (жүргізу, қалпына келтіру, сақтық көшірме жасау және т.б.) өзара әрекетін қамтамасыз ететін бағдарламалық қамтамасыз ету, оның ішінде SQL арқылы. Яғни, деректер мен онымен жұмыс істейтін сыртқы бағдарламалар арасындағы программалық деңгей. Бұл бөлімде біз SQL дегеніміз не, SQL serverі дегеніміз не деген сұрақтарға жауап береміз және ДҚБЖ-мен әрекеттесу үшін бірінші бағдарламаны жасаймыз.

ДҚБЖ түрлері

Деректерді сақтауды ұйымдастыру тәсіліне байланысты ДҚБЖ бірнеше түрлері бар:
  • Иерархиялық. Деректер ағаш құрылымында ұйымдастырылған. Мысал ретінде дискінің түбірінен басталып, содан кейін әртүрлі типтегі файлдардың тармақтарымен және әр түрлі ұя салу дәрежесіндегі қалталармен бірге өсетін файлдық жүйені келтіруге болады.
  • Желі. Иерархиялық модификация, әрбір түйінде біреуден көп ата-ана болуы мүмкін.
  • Объектіге бағытталған. Деректер OOP сәйкес атрибуттары мен өзара әрекеттесу принциптері бар сыныптар/an objectілер түрінде ұйымдастырылған.
  • Реляциялық. Бұл түрдегі ДҚБЖ деректері кестелерде ұйымдастырылған. Кестелерді бір-бірімен байланыстыруға болады, олардағы ақпарат құрылымдалған.
Осы мақалалар топтамасында мысал ретінде H2 қолданатын реляциялық ДҚБЖ (ең көп тарағандар ретінде) қарастырамыз және алмасу жұмысына ұқсас нәрсені эмуляциялайтын нөлден бастап қосымшаны жасаймыз. Сұрақ: Неліктен PostgreSQL, MySQL, MSSQL немесе Oracle емес? Жауап: Бағдарламалардың бөлек жинағын орнату мәселелеріне алаңдамау үшін. Әрі қарай конфигурациялау, мәліметтер қорын құру, әртүрлі ОЖ-да, нұсқаларда жұмыс істеудің күрделілігі. H2-мен жұмыс істеу үшін ең аз әрекеттерді орындау керек. Бірақ ағымдағы H2 JDBC басқа өндірушіден реляциялық ДҚБЖ өзгертуге ешнәрсе кедергі келтірмейді (тек server мекенжай жолы мен драйвер сыныбының атауы өзгереді).

SQL

Сыртқы бағдарламалар ДҚБЖ сұрауларын деректерді басқару тілінде құрылымдық сұраныстар тілінде жасайды. SQL дегеніміз не және оның қарапайым бағдарламалау тілдерінен айырмашылығы неде? SQL ерекшеліктерінің бірі – декларативтілік. Яғни, SQL декларативті тіл болып табылады . Бұл командаларды енгізу кезінде, яғни SQL serverіне сұраныстарды жасауда біз қандай жолмен емес, нақты нені алғымыз келетінін сипаттайтынымызды білдіреді. Серверге сұрау жіберу арқылы SELECT * FROM CUSTOMER(SQL тілінен орыс тіліне шамамен аудармасы: «COSTUMER кестесінен таңдау жасаңыз, таңдау кестедегі барлық жолдардан тұрады» ) біз барлық пайдаланушылар үшін деректерді аламыз. Сервер бізді қызықтыратын деректерді қалай және қай жерден жүктеп алып, жасайтыны мүлдем маңызды емес. Ең бастысы - сұранысты дұрыс тұжырымдау.
  • SQL Server дегеніміз не және ол қалай жұмыс істейді? ДҚБЖ-мен өзара әрекеттесу клиент-server принципінде жүзеге асады. Кейбір сыртқы бағдарламалар сұрауды операторлар және командалар түрінде SQL тілінде жібереді, ДҚБЖ оны өңдеп, жауап жібереді. Қарапайымдылық үшін SQL Server = ДҚБЖ деп алайық.
Егер сіз бір маркалы көлікті жүргізе алсаңыз, басқаларды еш қиындықсыз жүргізе аласыз. Ұсақ бөлшектерді қоспағанда, көлік жүргізу негіздері барлық жерде бірдей. Әртүрлі өндірушілердің SQL serverлері үшін де солай - олардың әрқайсысында SQL-тің өзіндік нұсқасы бар, бірақ ол көрсетілген стандарттарға сәйкес келеді (SQL92, SQL2003...). Біз SQL92 шеңберіндегі операторлар мен командаларды қолданамыз. Негізгі SQL операторлары келесі топтарға бөлінеді:
  • Data Definition Language ( DDL ) – деректер анықтамалары. Мәліметтер қорының құрылымын және оның an objectілерін құру;
  • Data Manipulation Language( DML ) – деректермен нақты әрекеттесу: кірістіру, жою, өзгерту және оқу;
  • Transaction Control Language ( TCL ) – транзакцияны басқару;
  • Data Control Language( DCL ) – деректерге және дерекқор құрылымдарына қол жеткізу құқықтарын басқару.
Бірқатар мақалаларда біз DML-ге ерекше назар аудара отырып, алғашқы үш топты қарастырамыз.

JDBC

Өткен ғасырдың 80-жылдарында PC XT/AT типті дербес компьютерлер нарықты жаулап алды. Бұл көбінесе олардың дизайнының модульділігіне байланысты болды. Бұл пайдаланушы өз компьютерінің бір немесе басқа құрамдас бөліктерін (процессор, видеокарта, дискілер және т.б.) оңай өзгерте алатынын білдіреді. Бұл керемет қасиет бүгінгі күнге дейін сақталған: біз видеокартаны өзгертеміз және драйверді жаңартамыз (кейде ол өзі автоматты түрде жаңартылады). Көбінесе мұндай манипуляциялармен жаман ештеңе болмайды және бар бағдарламалар қайта орнатусыз жаңартылған жүйемен жұмыс істей береді. Бұл Java тілінде ДҚБЖ-мен жұмыс істеуге де қатысты. SQL serverлерімен жұмысты стандарттау үшін онымен өзара әрекеттесу бір нүкте – JDBC (Java DataBase Connectivity) арқылы жүзеге асырылуы мүмкін. Бұл ДҚБЖ-мен жұмыс істеуге арналған java.sql пакетін іске асыру. Барлық танымал SQL serverлерінің өндірушілері олар үшін JDBC драйверлерін шығарады. Төмендегі диаграмманы қарастырыңыз. Қолданба java.sql сыныптарының даналарын пайдаланады . Содан кейін деректерді алу/өзгерту үшін қажетті пәрмендерді береміз. Содан кейін java.sql jdbc драйвері арқылы ДҚБЖ-мен әрекеттеседі және бізге дайын нәтижені қайтарады. 1-бөлім. SQL-ге кіріспе - 2 Басқа өндірушінің ДҚБЖ-ға ауысу үшін жиі JDBC өзгерту және негізгі параметрлерді орындау жеткілікті. Бағдарламаның қалған бөліктері өзгермейді.

Бірінші бағдарлама

Практикалық бөлікке көшейік. JetBrains IntelliJ IDEA IDE көмегімен Java жобасын жасайық . Ultimate Edition құрамында 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-ді бір minutesқа қалдырайық және www.h2database.com сайтынан H2 ДҚБЖ- мен жұмыс істеу үшін қажетті JDBC файлын жүктеп алайық (платформаны тәуелсіз ZIP жүктеп алу):
    1-бөлім. SQL-ге кіріспе - 7

  6. Жүктелген файлдың ішіне кіреміз (бізді h2\bin жолындағы jar файлы қызықтырады , ол бізге кейінірек қажет болады, оны көшіріңіз):
    1-бөлім. SQL-ге кіріспе - 8

  7. Біз IDE-ге ораламыз және жобаның түбірінде каталогтарды жасаймыз: db , онда ДҚБЖ деректері бар файлдар орналасады; lib – мұнда JDBC JAR кітапханасы:
    1-бөлім. SQL-ге кіріспе - 9

  8. jar файлын 6- қадамнан lib каталогына жылжытыңыз және оны жобаға кітапхана ретінде қосыңыз:
    1-бөлім: SQL - 10-ға кіріспе

  9. Java файлының атын src/sql/demo деп StockExchange.java деп өзгертейік (егер сіз ұмытып қалсаңыз, біз қарапайым «алмасуды» эмуляциялаймыз), оның мазмұнын өзгертіп, іске қосыңыз:
    1-бөлім. SQL - 11-ге кіріспе
Енді біз ДҚБЖ-ға қосылып, ажырата аламыз. Әрбір қадам консольде көрсетіледі. ДҚБЖ бірінші рет қосылған кезде stockExchange.mv.db дерекқор файлы жасалады .

Кодты талдау

Нақты 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 !");
        }
    }
}

Тұрақты блок:

  1. DB_Driver : Мұнда біз драйвердің атын анықтадық , оны мысалы, қосылған кітапхананы басу және ағымдағы жобаның lib каталогында оның құрылымын кеңейту арқылы табуға болады.
  2. DB_URL : Біздің дерекқор мекенжайымыз. Қос нүктемен бөлінген деректерден тұрады:
  3. Protocol=jdbc
  4. Жеткізуші (өндіруші/атауы) ДҚБЖ=h2
  5. ДҚБЖ орны, біздің жағдайда файлға жол (c:/JavaPrj/SQLDemo/db/stockExchange). Желілік ДҚБЖ үшін қашықтағы serverлердің аттары немесе IP мекенжайлары, TCP/UDP порт нөмірлері және т.б. мұнда қосымша көрсетілген.

Өңдеу қатесі:

Біздің codeтағы шақыру әдістері назар аудару керек қателерді қайтаруы мүмкін. Бұл кезеңде біз оларды консольде жай ғана хабарлаймыз. ДҚБЖ-мен жұмыс істеу кезіндегі қателер көбінесе SQLException болатынын ескеріңіз .

Операция логикасы:

  1. Class.forName (DB_Driver) – сәйкес JDBC драйверінің қолжетімді екеніне көз жеткіземіз (біз оны бұрын жүктеп алып, орнатқанбыз).
  2. DriverManager.getConnection (DB_URL) – ДҚБЖ қосылымын орнату. Өткізілген мекенжайды пайдалана отырып, JDBC өзі біздің ДҚБЖ түрі мен орнын анықтайды және дерекқормен байланысу үшін пайдалана алатын Қосылымды қайтарады.
  3. connection.close() – ДҚБЖ қосылымын жабу және бағдарламамен жұмысты аяқтау.
Серияның келесі бөлімінде біз DDL операторларымен және SQL деректер түрлерімен танысамыз, сонымен қатар деректер базамыздың бастапқы құрылымын жасап, оны кестелермен толтырамыз. Екінші бөлім Үшінші бөлім
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION