JavaRush /Java Blog /Random-ID /Bagian 1: Pengantar SQL
Marat Sadykov
Level 41

Bagian 1: Pengantar SQL

Dipublikasikan di grup Random-ID

JDBC. Menghubungkan database dan membuat aplikasi konsol Java di IntelliJ IDEA

Perkenalan

Artikel ini membuka seri pendek yang membahas dasar-dasar interaksi dengan database di Java dan pengenalan SQL . Banyak program sibuk memproses dan memodifikasi informasi serta menjaganya tetap mutakhir. Karena data adalah bagian yang sangat penting dari logika program, penyimpanan terpisah sering kali dialokasikan untuknya. Informasi di dalamnya terstruktur dan tunduk pada aturan khusus untuk memastikan pemrosesan dan penyimpanan yang benar. Data diakses dan dimodifikasi menggunakan bahasa kueri khusus - SQL (Structured Query Language).
Bagian 1. Pengantar SQL - 1
Sistem manajemen basis data adalah perangkat lunak yang memastikan interaksi berbagai program eksternal dengan data dan layanan tambahan (logging, pemulihan, pencadangan, dll.), termasuk melalui SQL. Artinya, lapisan perangkat lunak antara data dan program eksternal yang bekerja dengannya. Pada bagian ini, kita akan menjawab pertanyaan tentang apa itu SQL, apa itu SQL server, dan membuat program pertama untuk berinteraksi dengan DBMS.

Jenis DBMS

Ada beberapa jenis DBMS berdasarkan cara mereka mengatur penyimpanan data:
  • Hierarki. Data disusun dalam struktur pohon. Contohnya adalah sistem file yang dimulai dari root disk dan kemudian berkembang dengan cabang-cabang file dari berbagai jenis dan folder dengan tingkat sarang yang berbeda-beda.
  • Jaringan. Modifikasi hierarki, setiap node dapat memiliki lebih dari satu orang tua.
  • Berorientasi pada objek. Data disusun dalam bentuk kelas/objek beserta atribut dan prinsip interaksinya menurut OOP.
  • Relasional. Data DBMS jenis ini disusun dalam tabel. Tabel dapat dihubungkan satu sama lain, informasi di dalamnya terstruktur.
Dalam rangkaian artikel ini, kita akan melihat DBMS relasional (sebagai yang paling umum) menggunakan H2 sebagai contoh dan membuat aplikasi dari awal yang mengemulasi sesuatu yang mirip dengan cara kerja pertukaran. Pertanyaan: Mengapa bukan PostgreSQL, MySQL, MSSQL atau Oracle? Jawaban: Agar tidak terganggu oleh masalah penginstalan serangkaian program terpisah. Konfigurasi lebih lanjut, pembuatan database, seluk-beluk bekerja di berbagai OS, versi. Untuk bekerja dengan H2, Anda perlu melakukan tindakan minimum. Namun tidak ada yang menghalangi Anda untuk mengubah JDBC H2 saat ini ke DBMS relasional dari pabrikan lain (hanya baris alamat server dan nama kelas driver yang berubah).

SQL

Program eksternal menghasilkan kueri ke DBMS dalam bahasa manajemen data Structured Query Language. Apa itu SQL dan apa bedanya dengan bahasa pemrograman konvensional? Salah satu fitur SQL adalah deklaratif. Artinya, SQL adalah bahasa deklaratif . Artinya, saat memasukkan perintah, yaitu membuat kueri ke server SQL, kami menjelaskan apa sebenarnya yang ingin kami terima, dan bukan dengan cara apa. Dengan mengirimkan permintaan ke server SELECT * FROM CUSTOMER(perkiraan terjemahan dari SQL ke bahasa Rusia: “buat pilihan dari tabel KOSTUMER, pilihan terdiri dari semua baris dalam tabel” ), kami akan menerima data untuk semua pengguna. Tidak masalah bagaimana dan dari mana server mengunduh dan menghasilkan data yang kami minati. Yang utama adalah merumuskan permintaan dengan benar.
  • Apa itu SQL Server dan bagaimana cara kerjanya? Interaksi dengan DBMS terjadi berdasarkan prinsip client-server. Beberapa program eksternal mengirimkan permintaan dalam bentuk operator dan perintah dalam bahasa SQL, DBMS memprosesnya dan mengirimkan respon. Untuk mempermudah, mari kita asumsikan bahwa SQL Server = DBMS.
Jika Anda bisa mengendarai satu merek mobil, kemungkinan besar Anda bisa mengendarai mobil lain tanpa masalah. Dasar-dasar mengemudi sama di semua tempat, kecuali detail-detail kecil. Hal yang sama berlaku untuk server SQL dari produsen yang berbeda - masing-masing memiliki versi SQL sendiri, namun memenuhi standar yang ditentukan (SQL92, SQL2003...). Kami akan menggunakan operator dan perintah dalam kerangka SQL92. Pernyataan SQL dasar dibagi menjadi beberapa kelompok berikut:
  • Bahasa Definisi Data ( DDL ) – definisi data. Pembuatan struktur database dan objeknya;
  • Bahasa Manipulasi Data ( DML ) – interaksi aktual dengan data: penyisipan, penghapusan, modifikasi, dan pembacaan;
  • Bahasa Kontrol Transaksi ( TCL ) – manajemen transaksi;
  • Bahasa Kontrol Data ( DCL ) – pengelolaan hak akses terhadap data dan struktur database.
Dalam serangkaian artikel kita akan melihat tiga kelompok pertama, dengan memberikan perhatian khusus pada DML.

JDBC

Pada tahun 80-an abad terakhir, komputer pribadi tipe PC XT/AT menaklukkan pasar. Hal ini sebagian besar disebabkan oleh modularitas desain mereka. Ini berarti bahwa pengguna dapat dengan mudah mengubah satu atau beberapa komponen komputernya (prosesor, kartu video, disk, dll.). Properti luar biasa ini bertahan hingga hari ini: kami mengganti kartu video dan memperbarui driver (terkadang bahkan memperbarui dirinya sendiri, secara otomatis). Seringkali, tidak ada hal buruk yang terjadi dengan manipulasi seperti itu, dan program yang ada akan terus bekerja dengan sistem yang diperbarui tanpa menginstal ulang. Hal yang sama berlaku untuk bekerja di Java dengan DBMS. Untuk menstandarisasi pekerjaan dengan server SQL, interaksi dengannya dapat dilakukan melalui satu titik - JDBC (Java DataBase Connectivity). Ini adalah implementasi dari paket java.sql untuk bekerja dengan DBMS. Produsen semua server SQL populer merilis driver JDBC untuk mereka. Perhatikan diagram di bawah ini. Aplikasi ini menggunakan instance kelas dari java.sql . Kami kemudian meneruskan perintah yang diperlukan untuk mengambil/memodifikasi data. Selanjutnya, java.sql berinteraksi dengan DBMS melalui driver jdbc dan mengembalikan hasil akhirnya kepada kami. Bagian 1. Pengantar SQL - 2 Untuk beralih ke DBMS dari pabrikan lain, seringkali cukup dengan mengubah JDBC dan melakukan pengaturan dasar. Bagian program lainnya tidak berubah.

Program pertama

Mari kita beralih ke bagian praktisnya. Mari buat proyek Java menggunakan JetBrains IntelliJ IDEA IDE . Perhatikan bahwa Edisi Ultimate berisi alat luar biasa untuk bekerja dengan SQL dan database - Data Grip . Namun, itu berbayar untuk sebagian besar pengguna. Jadi untuk tujuan pendidikan kita hanya dapat menggunakan IntelliJ IDEA Community Edition yang tersedia untuk umum . Jadi:
  1. Luncurkan IDE dan buat proyek baru:
    Bagian 1. Pengantar SQL - 3

  2. Pilih proyek Java, tunjukkan versi SDK (dalam contoh JDK8, tapi ini tidak penting):
    Bagian 1. Pengantar SQL - 4

  3. Pada langkah selanjutnya, pilih aplikasi konsol sebagai tipe :
    Bagian 1. Pengantar SQL - 5

  4. Kami menunjukkan nama proyek , paket dan lokasinya pada disk (saya membuat direktori terpisah khusus untuk ini):
    Bagian 1. Pengantar SQL - 6

  5. Mari kita kesampingkan IDE sebentar dan unduh dari www.h2database.com file JDBC yang diperlukan untuk bekerja dengan H2 DBMS (unduh ZIP independen platform):
    Bagian 1. Pengantar SQL - 7

  6. Kami masuk ke dalam file yang diunduh (kami tertarik dengan file jar di sepanjang jalur h2\bin , yang nanti kami perlukan, salin):
    Bagian 1. Pengantar SQL - 8

  7. Kami kembali ke IDE dan membuat direktori di root proyek: db , tempat file dengan data DBMS akan ditempatkan; lib – ini adalah perpustakaan JDBC JAR:
    Bagian 1. Pengantar SQL - 9

  8. Pindahkan file jar dari langkah 6 ke direktori lib dan tambahkan ke proyek sebagai perpustakaan:
    Bagian 1: Pengantar SQL - 10

  9. Mari kita ganti nama file java menjadi src/sql/demo menjadi StockExchange.java (jika Anda lupa, kami akan meniru “pertukaran” sederhana), ubah isinya dan jalankan:
    Bagian 1. Pengantar SQL - 11
Sekarang kita dapat terhubung dan memutuskan sambungan dari DBMS. Setiap langkah tercermin di konsol. Saat Anda pertama kali terhubung ke DBMS, file database stockExchange.mv.db dibuat .

Penguraian kode

Kode sebenarnya:
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 !");
        }
    }
}

Blok konstan:

  1. DB_Driver : Di sini kami menentukan nama driver, yang dapat ditemukan, misalnya, dengan mengklik perpustakaan yang terhubung dan memperluas strukturnya di direktori lib proyek saat ini.
  2. DB_URL : Alamat basis data kami. Terdiri dari data yang dipisahkan oleh titik dua:
  3. Protokol=jdbc
  4. Vendor (produsen/nama) DBMS=h2
  5. Lokasi DBMS, dalam kasus kami jalur ke file (c:/JavaPrj/SQLDemo/db/stockExchange). Untuk DBMS jaringan, nama atau alamat IP server jarak jauh, nomor port TCP/UDP, dan sebagainya juga ditunjukkan di sini.

Pemrosesan kesalahan:

Memanggil metode dalam kode kami mungkin menghasilkan kesalahan yang harus Anda perhatikan. Pada tahap ini kami cukup melaporkannya di konsol. Perhatikan bahwa kesalahan saat bekerja dengan DBMS paling sering adalah SQLException .

Logika operasi:

  1. Class.forName (DB_Driver) – kami memastikan bahwa driver JDBC yang sesuai tersedia (yang sebelumnya kami unduh dan instal).
  2. DriverManager.getConnection (DB_URL) – membuat koneksi DBMS. Dengan menggunakan alamat yang diteruskan, JDBC sendiri akan menentukan jenis dan lokasi DBMS kita dan mengembalikan Koneksi, yang dapat kita gunakan untuk berkomunikasi dengan database.
  3. connection.close() – menutup koneksi ke DBMS dan menyelesaikan pekerjaan dengan program.
Di bagian selanjutnya dari seri ini, kita akan mengenal operator DDL dan tipe data SQL, serta membuat struktur awal database kita dan mengisinya dengan tabel. Bagian Kedua Bagian Ketiga
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION