JavaRush /Java Blog /Random-TL /Bahagi 1: Panimula sa SQL

Bahagi 1: Panimula sa SQL

Nai-publish sa grupo

JDBC. Pagkonekta ng database at paggawa ng Java console application sa IntelliJ IDEA

Panimula

Ang artikulong ito ay nagbubukas ng maikling serye na nakatuon sa mga pangunahing kaalaman sa pakikipag-ugnayan sa mga database sa Java at isang panimula sa SQL . Maraming mga programa ang abala sa pagproseso at pagbabago ng impormasyon at pinapanatili itong napapanahon. Dahil ang data ay isang napakahalagang bahagi ng lohika ng programa, ang hiwalay na imbakan ay kadalasang inilalaan para dito. Ang impormasyon sa loob nito ay nakabalangkas at napapailalim sa mga espesyal na panuntunan upang matiyak ang tamang pagproseso at pag-iimbak. Ang data ay ina-access at binago gamit ang isang espesyal na wika ng query - SQL (Structured Query Language).
Bahagi 1. Panimula sa SQL - 1
Ang isang database management system ay software na nagsisiguro sa pakikipag-ugnayan ng iba't ibang mga panlabas na programa sa data at karagdagang mga serbisyo (pag-log, pagbawi, backup, atbp.), kabilang ang sa pamamagitan ng SQL. Iyon ay, isang layer ng software sa pagitan ng data at mga panlabas na programa na gumagana kasama nito. Sa bahaging ito, sasagutin namin ang mga tanong tungkol sa kung ano ang SQL, kung ano ang isang SQL server, at gagawa kami ng unang program na nakikipag-ugnayan sa DBMS.

Mga uri ng DBMS

Mayroong ilang mga uri ng DBMS batay sa paraan ng kanilang pag-aayos ng imbakan ng data:
  • Hierarchical. Ang data ay nakaayos sa isang istraktura ng puno. Ang isang halimbawa ay isang file system na nagsisimula mula sa ugat ng disk at pagkatapos ay lumalaki na may mga sangay ng mga file ng iba't ibang uri at mga folder ng iba't ibang antas ng nesting.
  • Network. Isang pagbabago ng hierarchical, ang bawat node ay maaaring magkaroon ng higit sa isang magulang.
  • Object-oriented. Ang data ay inayos sa anyo ng mga klase/bagay na may kanilang mga katangian at prinsipyo ng pakikipag-ugnayan ayon sa OOP.
  • Relational. Ang data ng ganitong uri ng DBMS ay nakaayos sa mga talahanayan. Ang mga talahanayan ay maaaring maiugnay sa bawat isa, ang impormasyon sa mga ito ay nakabalangkas.
Sa seryeng ito ng mga artikulo, titingnan natin ang mga relational na DBMS (bilang ang pinakakaraniwan) gamit ang H2 bilang isang halimbawa at lumikha ng isang application mula sa simula na tumutulad sa isang bagay na katulad ng kung paano gumagana ang isang exchange. Tanong: Bakit hindi PostgreSQL, MySQL, MSSQL o Oracle? Sagot: Upang hindi magambala sa mga isyu ng pag-install ng isang hiwalay na hanay ng mga programa. Ang karagdagang pagsasaayos, paglikha ng isang database, ang mga intricacies ng pagtatrabaho sa iba't ibang mga OS, mga bersyon. Upang gumana sa H2, kailangan mong magsagawa ng pinakamababang pagkilos. Ngunit walang pumipigil sa iyo na baguhin ang kasalukuyang H2 JDBC sa isang relational na DBMS mula sa ibang tagagawa (tanging ang linya ng address ng server at ang pangalan ng klase ng driver ang nagbabago).

SQL

Ang mga panlabas na programa ay bumubuo ng mga query sa DBMS sa wika ng pamamahala ng data Structured Query Language. Ano ang SQL at paano ito naiiba sa mga karaniwang wika ng programming? Ang isa sa mga tampok ng SQL ay ang pagiging declarative. Ibig sabihin, ang SQL ay isang deklaratibong wika . Nangangahulugan ito na kapag nagpapasok ng mga utos, iyon ay, lumilikha ng mga query sa SQL server, inilalarawan namin kung ano ang eksaktong gusto naming makuha, at hindi sa kung anong paraan. Sa pamamagitan ng pagpapadala ng isang kahilingan sa server SELECT * FROM CUSTOMER(tinatayang pagsasalin mula sa SQL sa Russian: "gumawa ng isang pagpipilian mula sa talahanayan ng COSTUMER, ang pagpili ay binubuo ng lahat ng mga hilera sa talahanayan" ), makakatanggap kami ng data para sa lahat ng mga gumagamit. Hindi mahalaga kung paano at mula sa kung saan ang server ay nagda-download at bumubuo ng data na interesado kami. Ang pangunahing bagay ay ang pagbalangkas ng kahilingan nang tama.
  • Ano ang SQL Server at paano ito gumagana? Ang pakikipag-ugnayan sa DBMS ay nangyayari sa prinsipyo ng client-server. Ang ilang panlabas na programa ay nagpapadala ng kahilingan sa anyo ng mga operator at mga utos sa wikang SQL, pinoproseso ito ng DBMS at nagpapadala ng tugon. Para sa pagiging simple, ipagpalagay natin na ang SQL Server = DBMS.
Kung kaya mong magmaneho ng isang brand ng kotse, malamang na makakapagmaneho ka ng iba nang walang anumang problema. Ang mga pangunahing kaalaman sa pagmamaneho ay pareho sa lahat ng dako, maliban sa maliliit na detalye. Ang parehong ay totoo para sa mga SQL server mula sa iba't ibang mga tagagawa - bawat isa sa kanila ay may sariling bersyon ng SQL, ngunit ito ay nakakatugon sa mga tinukoy na pamantayan (SQL92, SQL2003...). Gagamit kami ng mga operator at command sa loob ng SQL92 framework. Ang mga pangunahing pahayag ng SQL ay nahahati sa mga sumusunod na grupo:
  • Data Definition Language ( DDL ) – mga kahulugan ng data. Paglikha ng istraktura ng database at mga bagay nito;
  • Data Manipulation Language( DML ) – aktwal na pakikipag-ugnayan sa data: pagpasok, pagtanggal, pagbabago at pagbabasa;
  • Transaction Control Language ( TCL ) – pamamahala ng transaksyon;
  • Data Control Language( DCL ) – pamamahala ng mga karapatan sa pag-access sa data at mga istruktura ng database.
Sa isang serye ng mga artikulo, titingnan natin ang unang tatlong grupo, na binibigyang pansin ang DML.

JDBC

Noong dekada 80 ng huling siglo, sinakop ng mga personal na computer ng uri ng PC XT/AT ang merkado. Ito ay higit sa lahat dahil sa modularity ng kanilang disenyo. Nangangahulugan ito na ang gumagamit ay maaaring madaling baguhin ang isa o isa pang bahagi ng kanyang computer (processor, video card, mga disk, atbp.). Ang kahanga-hangang ari-arian na ito ay napanatili hanggang sa araw na ito: binabago namin ang video card at ina-update ang driver (kung minsan ay nag-a-update din ito mismo, awtomatiko). Kadalasan, walang masamang nangyayari sa gayong mga pagmamanipula, at ang mga umiiral na programa ay patuloy na gagana sa na-update na sistema nang walang muling pag-install. Ang parehong naaangkop sa pagtatrabaho sa Java gamit ang isang DBMS. Upang gawing pamantayan ang trabaho sa mga SQL server, ang pakikipag-ugnayan dito ay maaaring isagawa sa pamamagitan ng isang punto - JDBC (Java DataBase Connectivity). Ito ay isang pagpapatupad ng java.sql package para sa pagtatrabaho sa isang DBMS. Ang mga tagagawa ng lahat ng sikat na SQL server ay naglalabas ng mga driver ng JDBC para sa kanila. Isaalang-alang ang diagram sa ibaba. Gumagamit ang application ng mga pagkakataon ng mga klase mula sa java.sql . Pagkatapos ay ipinapasa namin ang mga kinakailangang utos upang makuha/baguhin ang data. Susunod, nakikipag-ugnayan ang java.sql sa DBMS sa pamamagitan ng driver ng jdbc at ibinabalik sa amin ang natapos na resulta. Bahagi 1. Panimula sa SQL - 2 Upang lumipat sa isang DBMS mula sa isa pang tagagawa, kadalasan ay sapat na upang baguhin ang JDBC at magsagawa ng mga pangunahing setting. Ang natitirang bahagi ng programa ay hindi nagbabago.

Unang programa

Lumipat tayo sa praktikal na bahagi. Gumawa tayo ng isang proyekto sa Java gamit ang JetBrains IntelliJ IDEA IDE . Tandaan na ang Ultimate Edition ay naglalaman ng isang napakagandang tool para sa pagtatrabaho sa SQL at mga database - Data Grip . Gayunpaman, ito ay binabayaran para sa karamihan ng mga gumagamit. Kaya para sa mga layuning pang-edukasyon, magagamit lamang natin ang pampublikong IntelliJ IDEA Community Edition . Kaya:
  1. Ilunsad ang IDE at lumikha ng isang bagong proyekto:
    Bahagi 1. Panimula sa SQL - 3

  2. Pumili ng proyekto ng Java, ipahiwatig ang bersyon ng SDK (sa halimbawang JDK8, ngunit hindi ito kritikal):
    Bahagi 1. Panimula sa SQL - 4

  3. Sa susunod na hakbang, piliin ang console application bilang uri :
    Bahagi 1. Panimula sa SQL - 5

  4. Ipinapahiwatig namin ang pangalan ng proyekto , pakete at lokasyon nito sa disk (lumikha ako ng isang hiwalay na direktoryo para dito):
    Bahagi 1. Panimula sa SQL - 6

  5. Isantabi natin ang IDE nang isang minuto at i-download mula sa www.h2database.com ang kinakailangang JDBC file para sa pagtatrabaho sa H2 DBMS (i-download ang platform independent ZIP):
    Bahagi 1. Panimula sa SQL - 7

  6. Pumunta kami sa loob ng na-download na file (kami ay interesado sa jar file kasama ang landas h2\bin , na kakailanganin namin mamaya, kopyahin ito):
    Bahagi 1. Panimula sa SQL - 8

  7. Bumalik kami sa IDE at lumikha ng mga direktoryo sa ugat ng proyekto: db , kung saan matatagpuan ang mga file na may data ng DBMS; lib - narito ang JDBC JAR library:
    Bahagi 1. Panimula sa SQL - 9

  8. Ilipat ang jar file mula sa hakbang 6 sa direktoryo ng lib at idagdag ito sa proyekto bilang isang library:
    Bahagi 1: Panimula sa SQL - 10

  9. Palitan natin ang pangalan ng java file sa src/sql/demo sa StockExchange.java (kung sakaling nakalimutan mo, tutularan namin ang isang simpleng “exchange”), baguhin ang mga nilalaman nito at patakbuhin:
    Bahagi 1: Panimula sa SQL - 11
Ngayon ay maaari na tayong kumonekta at magdiskonekta mula sa DBMS. Ang bawat hakbang ay makikita sa console. Kapag una kang kumonekta sa DBMS, isang database file na stockExchange.mv.db ay nilikha .

Pag-parse ng code

Ang aktwal na 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 !");
        }
    }
}

Patuloy na bloke:

  1. DB_Driver : Dito namin tinukoy ang pangalan ng driver, na maaaring matagpuan, halimbawa, sa pamamagitan ng pag-click sa konektadong library at pagpapalawak ng istraktura nito sa direktoryo ng lib ng kasalukuyang proyekto.
  2. DB_URL : Ang aming database address. Binubuo ng data na pinaghihiwalay ng colon:
  3. Protocol=jdbc
  4. Vendor (manufacturer/pangalan) DBMS=h2
  5. Ang lokasyon ng DBMS, sa aming kaso ang path sa file (c:/JavaPrj/SQLDemo/db/stockExchange). Para sa mga network DBMS, ang mga pangalan o IP address ng mga malalayong server, TCP/UDP port number, at iba pa ay idinaragdag dito.

Error sa pagproseso:

Ang mga paraan ng pagtawag sa aming code ay maaaring magbalik ng mga error na dapat mong bigyang pansin. Sa yugtong ito, inuulat lang namin ang mga ito sa console. Tandaan na ang mga error kapag nagtatrabaho sa isang DBMS ay kadalasang SQLException .

Logic ng operasyon:

  1. Class.forName (DB_Driver) – tinitiyak namin na available ang kaukulang driver ng JDBC (na dati naming na-download at na-install).
  2. DriverManager.getConnection (DB_URL) – magtatag ng koneksyon sa DBMS. Gamit ang ipinasang address, ang JDBC mismo ang tutukuyin ang uri at lokasyon ng aming DBMS at magbabalik ng Koneksyon, na magagamit namin upang makipag-ugnayan sa database.
  3. connection.close() – isara ang koneksyon sa DBMS at tapusin ang pagtatrabaho sa program.
Sa susunod na bahagi ng serye, makikilala natin ang mga operator ng DDL at mga uri ng data ng SQL, at gagawin din ang paunang istraktura ng ating database at punan ito ng mga talahanayan. Ikalawang bahagi Ikatlong bahagi
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION