JavaRush /Java blogi /Random-UZ /1-qism: SQL-ga kirish

1-qism: SQL-ga kirish

Guruhda nashr etilgan

JDBC. IntelliJ IDEA-da ma'lumotlar bazasini ulash va Java konsol ilovasini yaratish

Kirish

Ushbu maqola Java-da ma'lumotlar bazalari bilan o'zaro ishlash asoslariga va SQL-ga kirishga bag'ishlangan qisqa seriyani ochadi . Ko'pgina dasturlar ma'lumotlarni qayta ishlash va o'zgartirish va ularni yangilab turish bilan band. Ma'lumotlar dastur mantig'ining juda muhim qismi bo'lganligi sababli, ko'pincha ular uchun alohida xotira ajratiladi. Undagi ma'lumotlar to'g'ri qayta ishlash va saqlashni ta'minlash uchun tuzilgan va maxsus qoidalarga bo'ysunadi. Ma'lumotlarga kirish va o'zgartirish maxsus so'rovlar tili - SQL (Structured Query Language) yordamida amalga oshiriladi.
1-qism. SQLga kirish - 1
Ma'lumotlar bazasini boshqarish tizimi - bu turli xil tashqi dasturlarning ma'lumotlar va qo'shimcha xizmatlar (ro'yxatga olish, tiklash, zaxiralash va boshqalar) bilan o'zaro ta'sirini ta'minlaydigan dasturiy ta'minot, shu jumladan SQL orqali. Ya'ni, ma'lumotlar va u bilan ishlaydigan tashqi dasturlar o'rtasidagi dasturiy ta'minot qatlami. Bu qismda biz SQL nima, SQL server nima degan savollarga javob beramiz va ma'lumotlar bazasi bilan ishlash uchun birinchi dasturni yaratamiz.

DBMS turlari

Ma'lumotlarni saqlashni tashkil qilish usuliga ko'ra ma'lumotlar bazasining bir necha turlari mavjud:
  • Ierarxik. Ma'lumotlar daraxt tuzilishida tashkil etilgan. Misol tariqasida diskning ildizidan boshlanib, so'ngra har xil turdagi fayllar shoxlari va har xil darajadagi joylashtirish papkalari bilan o'sadigan fayl tizimidir.
  • Tarmoq. Ierarxik modifikatsiya, har bir tugun bir nechta ota-onaga ega bo'lishi mumkin.
  • Ob'ektga yo'naltirilgan. Ma'lumotlar OOP bo'yicha atributlari va o'zaro ta'sir tamoyillari bilan sinflar/ob'ektlar shaklida tashkil etilgan.
  • Aloqaviy. Ushbu turdagi DBMS ma'lumotlari jadvallar shaklida tuzilgan. Jadvallar bir-biri bilan bog'lanishi mumkin, ulardagi ma'lumotlar tuzilgan.
Ushbu maqolalar turkumida biz misol sifatida H2 dan foydalangan holda relyatsion DBMSlarni (eng keng tarqalganlari sifatida) ko'rib chiqamiz va birja qanday ishlashiga o'xshash narsani taqlid qiluvchi noldan dastur yaratamiz. Savol: Nima uchun PostgreSQL, MySQL, MSSQL yoki Oracle emas? Javob: Alohida dasturlar to'plamini o'rnatish masalalari bilan chalg'imaslik uchun. Keyingi konfiguratsiya, ma'lumotlar bazasini yaratish, turli OTlarda ishlashning nozik tomonlari, versiyalar. H2 bilan ishlash uchun siz minimal harakatlarni bajarishingiz kerak. Biroq joriy H2 JDBC ni boshqa ishlab chiqaruvchining relyatsion DBMS ga o'zgartirishingizga hech narsa to'sqinlik qilmaydi (faqat server manzil satri va drayver sinfi nomi o'zgaradi).

SQL

Tashqi dasturlar ma'lumotlar bazasiga so'rovlarni Structured Query Language tilida ma'lumotlarni boshqarish tilida yaratadi. SQL nima va u oddiy dasturlash tillaridan nimasi bilan farq qiladi? SQL ning xususiyatlaridan biri deklarativlikdir. Ya'ni, SQL deklarativ tildir . Bu shuni anglatadiki, buyruqlarni kiritishda, ya'ni SQL serveriga so'rovlar yaratishda biz qanday yo'l bilan emas, balki aynan nimani olishni xohlayotganimizni tasvirlaymiz. Serverga so'rov yuborish orqali SELECT * FROM CUSTOMER(SQL-dan rus tiliga taxminiy tarjima: "COSTUMER jadvalidan tanlov qiling, tanlov jadvaldagi barcha qatorlardan iborat" ), biz barcha foydalanuvchilar uchun ma'lumotlarni olamiz. Server bizni qiziqtirgan ma'lumotlarni qanday va qayerdan yuklab olishi va yaratishi umuman muhim emas. Asosiysi, so'rovni to'g'ri shakllantirish.
  • SQL Server nima va u qanday ishlaydi? DBMS bilan o'zaro aloqa mijoz-server tamoyili asosida amalga oshiriladi. Ba'zi bir tashqi dasturlar so'rovni operatorlar va buyruqlar shaklida SQL tilida yuboradi, ma'lumotlar bazasi uni qayta ishlaydi va javob yuboradi. Oddiylik uchun SQL Server = DBMS deb faraz qilaylik.
Agar siz bitta rusumdagi avtomobilni boshqara olsangiz, boshqalarni hech qanday muammosiz haydashingiz mumkin. Haydash asoslari hamma joyda bir xil, kichik detallar bundan mustasno. Xuddi shu narsa turli ishlab chiqaruvchilarning SQL serverlari uchun ham amal qiladi - ularning har biri o'z SQL versiyasiga ega, ammo u belgilangan standartlarga javob beradi (SQL92, SQL2003...). Biz SQL92 doirasidagi operatorlar va buyruqlardan foydalanamiz. Asosiy SQL iboralari quyidagi guruhlarga bo'lingan:
  • Ma'lumotlarni aniqlash tili ( DDL ) - ma'lumotlar ta'riflari. Ma'lumotlar bazasi strukturasini va uning ob'ektlarini yaratish;
  • Ma'lumotlarni manipulyatsiya qilish tili ( DML ) - ma'lumotlar bilan haqiqiy o'zaro ta'sir: kiritish, o'chirish, o'zgartirish va o'qish;
  • Transaction Control Language ( TCL ) – tranzaktsiyalarni boshqarish;
  • Ma'lumotlarni boshqarish tili ( DCL ) - ma'lumotlar va ma'lumotlar bazasi tuzilmalariga kirish huquqlarini boshqarish.
Bir qator maqolalarda biz DML-ga alohida e'tibor berib, dastlabki uchta guruhni ko'rib chiqamiz.

JDBC

O'tgan asrning 80-yillarida PC XT/AT tipidagi shaxsiy kompyuterlar bozorni zabt etdi. Bu asosan ularning dizayni modulliligi bilan bog'liq edi. Bu shuni anglatadiki, foydalanuvchi o'z kompyuterining u yoki bu komponentini (protsessor, video karta, disklar va boshqalar) osongina o'zgartirishi mumkin. Bu ajoyib xususiyat bugungi kungacha saqlanib qolgan: biz video kartani o'zgartiramiz va drayverni yangilaymiz (ba'zida u o'zini avtomatik ravishda yangilaydi). Ko'pincha, bunday manipulyatsiyalar bilan hech qanday yomon narsa bo'lmaydi va mavjud dasturlar qayta o'rnatmasdan yangilangan tizim bilan ishlashda davom etadi. Xuddi shu narsa Java-da DBMS bilan ishlash uchun ham amal qiladi. SQL serverlari bilan ishlashni standartlashtirish uchun u bilan o'zaro aloqa bitta nuqta - JDBC (Java DataBase Connectivity) orqali amalga oshirilishi mumkin. Bu ma'lumotlar bazasi bilan ishlash uchun java.sql paketining amalga oshirilishi . Barcha mashhur SQL serverlarini ishlab chiqaruvchilar ular uchun JDBC drayverlarini chiqaradilar. Quyidagi diagrammani ko'rib chiqing. Ilova java.sql dan sinflar misollaridan foydalanadi . Keyin ma'lumotlarni olish/o'zgartirish uchun kerakli buyruqlarni beramiz. Keyinchalik java.sql jdbc drayveri orqali DBMS bilan o'zaro aloqada bo'ladi va tayyor natijani bizga qaytaradi. 1-qism. SQL-ga kirish - 2 Boshqa ishlab chiqaruvchining ma'lumotlar bazasiga o'tish uchun ko'pincha JDBC-ni o'zgartirish va asosiy sozlamalarni bajarish kifoya. Dasturning qolgan qismlari o'zgarmaydi.

Birinchi dastur

Keling, amaliy qismga o'tamiz. Keling , JetBrains IntelliJ IDEA IDE yordamida Java loyihasini yarataylik . E'tibor bering, Ultimate Edition SQL va ma'lumotlar bazalari bilan ishlash uchun ajoyib vositani o'z ichiga oladi - Data Grip . Biroq, ko'pchilik foydalanuvchilar uchun to'lanadi. Shunday qilib, ta'lim maqsadlarida biz faqat ochiq IntelliJ IDEA Community Edition dan foydalanishimiz mumkin . Shunday qilib:
  1. IDE-ni ishga tushiring va yangi loyiha yarating:
    1-qism. SQL-ga kirish - 3

  2. Java loyihasini tanlang, SDK versiyasini ko'rsating (JDK8 misolida, lekin bu muhim emas):
    1-qism. SQL-ga kirish - 4

  3. Keyingi bosqichda konsol ilovasini turi sifatida tanlang :
    1-qism. SQL-ga kirish - 5

  4. Biz loyiha nomini , paketini va uning diskdagi joylashuvini ko'rsatamiz (buning uchun men alohida katalog yaratdim):
    1-qism. SQL-ga kirish - 6

  5. Keling, IDE-ni bir daqiqaga chetga surib qo'yamiz va www.h2database.com saytidan H2 DBMS bilan ishlash uchun zarur bo'lgan JDBC faylini yuklab olamiz (yuklab olish platformasi mustaqil ZIP):
    1-qism. SQL-ga kirish - 7

  6. Biz yuklab olingan faylning ichiga kiramiz (bizni h2\bin yo'li bo'ylab jar fayli qiziqtiradi , keyinroq kerak bo'ladi, uni nusxalash):
    1-qism. SQL-ga kirish - 8

  7. Biz IDE ga qaytamiz va loyihaning ildizida kataloglarni yaratamiz: db , bu erda DBMS ma'lumotlari bo'lgan fayllar joylashadi; lib - bu erda JDBC JAR kutubxonasi:
    1-qism. SQL-ga kirish - 9

  8. Jar faylini 6- bosqichdan lib katalogiga o'tkazing va uni loyihaga kutubxona sifatida qo'shing:
    1-qism: SQL ga kirish - 10

  9. Keling, java faylini src/sql/demo nomini StockExchange.java ga o‘zgartiraylik (agar siz unutgan bo‘lsangiz, biz oddiy “almashinuv”ga taqlid qilamiz), uning mazmunini o‘zgartiramiz va ishga tushiramiz:
    1-qism. SQL-ga kirish - 11
Endi biz DBMSga ulanishimiz va undan uzishimiz mumkin. Har bir qadam konsolda aks ettirilgan. DBMSga birinchi marta ulanganingizda stockExchange.mv.db ma'lumotlar bazasi fayli yaratiladi .

Kodni tahlil qilish

Haqiqiy 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 !");
        }
    }
}

Doimiy blok:

  1. DB_Driver : Bu erda biz drayverning nomini aniqladik , masalan, ulangan kutubxonani bosish va joriy loyihaning lib katalogida uning tuzilishini kengaytirish orqali topish mumkin.
  2. DB_URL : Bizning ma'lumotlar bazasi manzilimiz. Ikki nuqta bilan ajratilgan ma'lumotlardan iborat:
  3. Protokol = jdbc
  4. Sotuvchi (ishlab chiqaruvchi/nom) DBMS=h2
  5. DBMSning joylashuvi, bizning holatlarimizda faylga yo'l (c:/JavaPrj/SQLDemo/db/stockExchange). Tarmoq ma'lumotlar bazasi uchun bu erda qo'shimcha ravishda masofaviy serverlarning nomlari yoki IP manzillari, TCP/UDP port raqamlari va boshqalar ko'rsatilgan.

Qayta ishlashda xatolik:

Bizning kodimizdagi qo'ng'iroq usullari siz e'tibor berishingiz kerak bo'lgan xatolarni qaytarishi mumkin. Ushbu bosqichda biz ularni shunchaki konsolda xabar qilamiz. E'tibor bering, DBMS bilan ishlashda xatolar ko'pincha SQLException hisoblanadi .

Operatsion mantiq:

  1. Class.forName (DB_Driver) – tegishli JDBC drayveri mavjudligiga ishonch hosil qilamiz (biz avval yuklab olgan va o‘rnatganmiz).
  2. DriverManager.getConnection (DB_URL) – DBMS ulanishini o'rnatish. O'tkazilgan manzildan foydalanib, JDBC o'zi bizning DBMS turi va joylashuvini aniqlaydi va biz ma'lumotlar bazasi bilan bog'lanish uchun foydalanishimiz mumkin bo'lgan Ulanishni qaytaradi.
  3. connection.close() – DBMSga ulanishni yopish va dastur bilan ishlashni tugatish.
Seriyaning keyingi qismida biz DDL operatorlari va SQL ma'lumotlar turlari bilan tanishamiz, shuningdek, ma'lumotlar bazamizning boshlang'ich strukturasini yaratamiz va uni jadvallar bilan to'ldiramiz. Ikkinchi qism Uchinchi qism
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION