JavaRush /Blog Java /Random-MS /Bahagian 1: Pengenalan kepada SQL

Bahagian 1: Pengenalan kepada SQL

Diterbitkan dalam kumpulan

JDBC. Menyambung pangkalan data dan mencipta aplikasi konsol Java dalam IntelliJ IDEA

pengenalan

Artikel ini membuka siri pendek yang dikhaskan kepada asas berinteraksi dengan pangkalan data dalam Java dan pengenalan kepada SQL . Banyak program sedang sibuk memproses dan mengubah suai maklumat dan memastikan ia dikemas kini. Memandangkan data adalah bahagian yang sangat penting dalam logik program, storan berasingan sering diperuntukkan untuknya. Maklumat di dalamnya berstruktur dan tertakluk kepada peraturan khas untuk memastikan pemprosesan dan penyimpanan yang betul. Data diakses dan diubah suai menggunakan bahasa pertanyaan khas - SQL (Bahasa Pertanyaan Berstruktur).
Bahagian 1. Pengenalan kepada SQL - 1
Sistem pengurusan pangkalan data ialah perisian yang memastikan interaksi pelbagai program luaran dengan data dan perkhidmatan tambahan (pembalakan, pemulihan, sandaran, dll.), termasuk melalui SQL. Iaitu, lapisan perisian antara data dan program luaran yang berfungsi dengannya. Dalam bahagian ini, kami akan menjawab soalan tentang apa itu SQL, apakah pelayan SQL, dan mencipta program pertama untuk berinteraksi dengan DBMS.

Jenis DBMS

Terdapat beberapa jenis DBMS berdasarkan cara mereka mengatur storan data:
  • berhierarki. Data disusun dalam struktur pokok. Contohnya ialah sistem fail yang bermula dari akar cakera dan kemudian berkembang dengan cawangan fail pelbagai jenis dan folder dengan pelbagai peringkat sarang.
  • Rangkaian. Pengubahsuaian hierarki, setiap nod boleh mempunyai lebih daripada satu induk.
  • Berorientasikan objek. Data disusun dalam bentuk kelas/objek dengan atribut dan prinsip interaksinya mengikut OOP.
  • perhubungan. Data jenis DBMS ini disusun dalam jadual. Jadual boleh dikaitkan antara satu sama lain, maklumat di dalamnya berstruktur.
Dalam siri artikel ini, kita akan melihat DBMS hubungan (sebagai yang paling biasa) menggunakan H2 sebagai contoh dan mencipta aplikasi dari awal yang meniru sesuatu yang serupa dengan cara pertukaran berfungsi. Soalan: Mengapa tidak PostgreSQL, MySQL, MSSQL atau Oracle? Jawapan: Agar tidak terganggu oleh isu memasang set program yang berasingan. Konfigurasi lanjut, mencipta pangkalan data, selok-belok bekerja dalam OS yang berbeza, versi. Untuk bekerja dengan H2, anda perlu melakukan tindakan minimum. Tetapi tiada apa yang menghalang anda daripada menukar H2 JDBC semasa kepada DBMS hubungan daripada pengeluar lain (hanya baris alamat pelayan dan nama kelas pemandu yang berubah).

SQL

Program luaran menjana pertanyaan kepada DBMS dalam bahasa pengurusan data Bahasa Pertanyaan Berstruktur. Apakah SQL dan bagaimana ia berbeza daripada bahasa pengaturcaraan konvensional? Salah satu ciri SQL ialah deklaratif. Iaitu, SQL ialah bahasa perisytiharan . Ini bermakna apabila memasukkan arahan, iaitu, mencipta pertanyaan kepada pelayan SQL, kami menerangkan apa sebenarnya yang kami mahu dapatkan, dan bukan dengan cara apa. Dengan menghantar permintaan kepada pelayan SELECT * FROM CUSTOMER(terjemahan anggaran dari SQL ke dalam bahasa Rusia: “buat pilihan daripada jadual COSTUMER, pemilihan terdiri daripada semua baris dalam jadual” ), kami akan menerima data untuk semua pengguna. Tidak kira sama sekali bagaimana dan dari mana pelayan memuat turun dan menjana data yang kami minati. Perkara utama ialah merumuskan permintaan dengan betul.
  • Apakah SQL Server dan bagaimana ia berfungsi? Interaksi dengan DBMS berlaku pada prinsip pelayan-pelanggan. Sesetengah program luaran menghantar permintaan dalam bentuk pengendali dan arahan dalam bahasa SQL, DBMS memprosesnya dan menghantar respons. Untuk kesederhanaan, mari kita anggap bahawa SQL Server = DBMS.
Jika anda boleh memandu satu jenama kereta, kemungkinan besar anda akan dapat memandu kereta lain tanpa sebarang masalah. Asas pemanduan adalah sama di mana-mana, kecuali butiran kecil. Perkara yang sama berlaku untuk pelayan SQL daripada pengeluar yang berbeza - setiap daripada mereka mempunyai versi SQL sendiri, tetapi ia memenuhi piawaian yang ditentukan (SQL92, SQL2003...). Kami akan menggunakan pengendali dan arahan dalam rangka kerja SQL92. Pernyataan SQL asas dibahagikan kepada kumpulan berikut:
  • Bahasa Definisi Data ( DDL ) – definisi data. Penciptaan struktur pangkalan data dan objeknya;
  • Bahasa Manipulasi Data( DML ) – interaksi sebenar dengan data: sisipan, pemadaman, pengubahsuaian dan pembacaan;
  • Bahasa Kawalan Transaksi ( TCL ) – pengurusan transaksi;
  • Bahasa Kawalan Data( DCL ) – pengurusan hak akses kepada data dan struktur pangkalan data.
Dalam satu siri artikel kita akan melihat tiga kumpulan pertama, memberi perhatian khusus kepada DML.

JDBC

Pada tahun 80-an abad yang lalu, komputer peribadi jenis PC XT/AT telah menakluki pasaran. Ini sebahagian besarnya disebabkan oleh modulariti reka bentuk mereka. Ini bermakna pengguna boleh menukar satu atau komponen lain komputernya dengan mudah (pemproses, kad video, cakera, dll.). Harta yang indah ini telah dipelihara sehingga hari ini: kami menukar kad video dan mengemas kini pemandu (kadang-kadang ia mengemas kini sendiri, secara automatik). Selalunya, tiada perkara buruk berlaku dengan manipulasi sedemikian, dan program sedia ada akan terus berfungsi dengan sistem yang dikemas kini tanpa pemasangan semula. Perkara yang sama berlaku untuk bekerja di Java dengan DBMS. Untuk menyeragamkan kerja dengan pelayan SQL, interaksi dengannya boleh dilakukan melalui satu titik - JDBC (Java DataBase Connectivity). Ia adalah pelaksanaan pakej java.sql untuk bekerja dengan DBMS. Pengeluar semua pelayan SQL yang popular mengeluarkan pemacu JDBC untuk mereka. Pertimbangkan rajah di bawah. Aplikasi ini menggunakan contoh kelas daripada java.sql . Kami kemudiannya memberikan arahan yang diperlukan untuk mendapatkan/mengubah suai data. Seterusnya, java.sql berinteraksi dengan DBMS melalui pemacu jdbc dan mengembalikan hasil siap kepada kami. Bahagian 1. Pengenalan kepada SQL - 2 Untuk bertukar kepada DBMS daripada pengilang lain, selalunya cukup untuk menukar JDBC dan melaksanakan tetapan asas. Baki bahagian program tidak berubah.

Program pertama

Mari kita beralih ke bahagian praktikal. Mari buat projek Java menggunakan JetBrains IntelliJ IDEA IDE . Ambil perhatian bahawa Edisi Ultimate mengandungi alat yang hebat untuk bekerja dengan SQL dan pangkalan data - Data Grip . Walau bagaimanapun, ia dibayar untuk kebanyakan pengguna. Jadi untuk tujuan pendidikan, kami hanya boleh menggunakan IntelliJ IDEA Community Edition yang tersedia secara terbuka . Jadi:
  1. Lancarkan IDE dan buat projek baharu:
    Bahagian 1. Pengenalan kepada SQL - 3

  2. Pilih projek Java, nyatakan versi SDK (dalam contoh JDK8, tetapi ini tidak kritikal):
    Bahagian 1. Pengenalan kepada SQL - 4

  3. Dalam langkah seterusnya, pilih aplikasi konsol sebagai jenis :
    Bahagian 1. Pengenalan kepada SQL - 5

  4. Kami menunjukkan nama projek , pakej dan lokasinya pada cakera (saya mencipta direktori berasingan khusus untuk ini):
    Bahagian 1. Pengenalan kepada SQL - 6

  5. Mari letakkan IDE untuk seminit dan muat turun dari www.h2database.com fail JDBC yang diperlukan untuk bekerja dengan H2 DBMS (muat turun platform ZIP bebas):
    Bahagian 1. Pengenalan kepada SQL - 7

  6. Kami masuk ke dalam fail yang dimuat turun (kami berminat dengan fail jar di sepanjang laluan h2\bin , yang kami perlukan kemudian, salinnya):
    Bahagian 1. Pengenalan kepada SQL - 8

  7. Kami kembali ke IDE dan mencipta direktori dalam akar projek: db , di mana fail dengan data DBMS akan ditempatkan; lib - inilah perpustakaan JDBC JAR:
    Bahagian 1. Pengenalan kepada SQL - 9

  8. Alihkan fail jar dari langkah 6 ke direktori lib dan tambahkannya pada projek sebagai pustaka:
    Bahagian 1: Pengenalan kepada SQL - 10

  9. Mari namakan semula fail java kepada src/sql/demo kepada StockExchange.java (sekiranya anda terlupa, kami akan meniru "pertukaran" mudah), tukar kandungannya dan jalankan:
    Bahagian 1: Pengenalan kepada SQL - 11
Sekarang kita boleh menyambung dan memutuskan sambungan daripada DBMS. Setiap langkah ditunjukkan dalam konsol. Apabila anda mula-mula menyambung ke DBMS, fail pangkalan data stockExchange.mv.db dicipta .

Penghuraian kod

Kod sebenar:
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 malar:

  1. DB_Driver : Di sini kami mentakrifkan nama pemacu, yang boleh didapati, sebagai contoh, dengan mengklik pada perpustakaan yang disambungkan dan mengembangkan strukturnya dalam direktori lib projek semasa.
  2. DB_URL : Alamat pangkalan data kami. Terdiri daripada data yang dipisahkan oleh titik bertindih:
  3. Protokol=jdbc
  4. Vendor (pengilang/nama) DBMS=h2
  5. Lokasi DBMS, dalam kes kami laluan ke fail (c:/JavaPrj/SQLDemo/db/stockExchange). Untuk DBMS rangkaian, nama atau alamat IP pelayan jauh, nombor port TCP/UDP dan sebagainya juga ditunjukkan di sini.

Ralat pemprosesan:

Kaedah panggilan dalam kod kami mungkin mengembalikan ralat yang perlu anda perhatikan. Pada peringkat ini kami hanya melaporkannya dalam konsol. Ambil perhatian bahawa ralat semasa bekerja dengan DBMS paling kerap adalah SQLException .

Logik operasi:

  1. Class.forName (DB_Driver) – kami memastikan pemacu JDBC yang sepadan tersedia (yang kami muat turun dan pasang sebelum ini).
  2. DriverManager.getConnection (DB_URL) – wujudkan sambungan DBMS. Menggunakan alamat yang diluluskan, JDBC sendiri akan menentukan jenis dan lokasi DBMS kami dan mengembalikan Sambungan, yang boleh kami gunakan untuk berkomunikasi dengan pangkalan data.
  3. connection.close() – tutup sambungan ke DBMS dan selesai bekerja dengan program.
Dalam bahagian seterusnya siri ini, kami akan berkenalan dengan pengendali DDL dan jenis data SQL, dan juga mencipta struktur awal pangkalan data kami dan mengisinya dengan jadual. Bahagian kedua Bahagian ketiga
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION