JavaRush /จาวาบล็อก /Random-TH /ส่วนที่ 1: รู้เบื้องต้นเกี่ยวกับ SQL
Marat Sadykov
ระดับ

ส่วนที่ 1: รู้เบื้องต้นเกี่ยวกับ SQL

เผยแพร่ในกลุ่ม

เจดีบีซี. การเชื่อมต่อฐานข้อมูลและสร้างแอปพลิเคชันคอนโซล Java ใน IntelliJ IDEA

การแนะนำ

บทความนี้จะเปิดซีรีส์สั้นเกี่ยวกับพื้นฐานการโต้ตอบกับฐานข้อมูลใน Javaและบทนำเกี่ยวกับ SQL หลายโปรแกรมกำลังยุ่งอยู่กับการประมวลผลและแก้ไขข้อมูลและคอยอัปเดตอยู่เสมอ เนื่องจากข้อมูลเป็นส่วนสำคัญของตรรกะของโปรแกรม จึงมักมีการจัดสรรพื้นที่เก็บข้อมูลแยกต่างหาก ข้อมูลในนั้นมีโครงสร้างและอยู่ภายใต้กฎพิเศษเพื่อให้แน่ใจว่าการประมวลผลและการจัดเก็บถูกต้อง ข้อมูลถูกเข้าถึงและแก้ไขโดยใช้ภาษาคิวรีพิเศษ - SQL (Structured Query Language)
ส่วนที่ 1 ความรู้เบื้องต้นเกี่ยวกับ SQL - 1
ระบบการจัดการฐานข้อมูลคือซอฟต์แวร์ที่รับรองการโต้ตอบของโปรแกรมภายนอกต่างๆ กับข้อมูลและบริการเพิ่มเติม (การบันทึก การกู้คืน การสำรองข้อมูล ฯลฯ) รวมถึงผ่านทาง SQL นั่นคือชั้นซอฟต์แวร์ระหว่างข้อมูลและโปรแกรมภายนอกที่ใช้งานได้ ในส่วนนี้เราจะตอบคำถามว่า SQL คืออะไร SQL Server คืออะไร และสร้างโปรแกรมแรกเพื่อโต้ตอบกับ DBMS

ประเภทของ DBMS

มี DBMS หลายประเภทตามวิธีจัดระเบียบพื้นที่จัดเก็บข้อมูล:
  • ลำดับชั้น ข้อมูลถูกจัดอยู่ในโครงสร้างแบบต้นไม้ ตัวอย่างคือระบบไฟล์ที่เริ่มต้นจากรากของดิสก์ จากนั้นขยายสาขาของไฟล์ประเภทต่างๆ และโฟลเดอร์ที่มีระดับการซ้อนต่างกัน
  • เครือข่าย. การปรับเปลี่ยนลำดับชั้น แต่ละโหนดสามารถมีพาเรนต์ได้มากกว่าหนึ่งรายการ
  • เชิงวัตถุ ข้อมูลถูกจัดระเบียบในรูปแบบของคลาส/ออบเจ็กต์พร้อมคุณลักษณะและหลักการโต้ตอบตาม OOP
  • เชิงสัมพันธ์ ข้อมูลของ DBMS ประเภทนี้จัดอยู่ในตาราง ตารางสามารถเชื่อมโยงถึงกันได้ ข้อมูลในตารางมีโครงสร้าง
ในบทความชุดนี้ เราจะดู DBMS เชิงสัมพันธ์ (ซึ่งเป็นบทความที่พบบ่อยที่สุด) โดยใช้ H2 เป็นตัวอย่าง และสร้างแอปพลิเคชันตั้งแต่เริ่มต้นที่จำลองบางสิ่งที่คล้ายกับวิธีการทำงานของการแลกเปลี่ยน คำถาม:ทำไมไม่ใช้ PostgreSQL, MySQL, MSSQL หรือ Oracle คำตอบ:เพื่อไม่ให้เสียสมาธิกับปัญหาการติดตั้งชุดโปรแกรมแยกต่างหาก การกำหนดค่าเพิ่มเติม การสร้างฐานข้อมูล ความซับซ้อนของการทำงานใน OS เวอร์ชันต่างๆ หากต้องการทำงานกับ H2 คุณต้องดำเนินการขั้นต่ำ แต่ไม่มีสิ่งใดป้องกันคุณจากการเปลี่ยน H2 JDBC ปัจจุบันเป็น DBMS เชิงสัมพันธ์จากผู้ผลิตรายอื่น (เฉพาะบรรทัดที่อยู่เซิร์ฟเวอร์และชื่อคลาสไดรเวอร์เท่านั้นที่เปลี่ยน)

SQL

โปรแกรมภายนอกจะสร้างการสืบค้นไปยัง DBMS ในภาษาการจัดการข้อมูล Structured Query Language SQL คืออะไร และแตกต่างจากภาษาโปรแกรมทั่วไปอย่างไร หนึ่งในคุณสมบัติของ SQL คือการประกาศ นั่นคือSQL เป็นภาษาประกาศ ซึ่งหมายความว่าเมื่อป้อนคำสั่งนั่นคือการสร้างแบบสอบถามไปยังเซิร์ฟเวอร์ SQL เราจะอธิบายว่าเราต้องการรับอะไรอย่างแน่นอนไม่ใช่ในลักษณะใด โดยการส่งคำขอไปยังเซิร์ฟเวอร์SELECT * FROM CUSTOMER(การแปลโดยประมาณจาก SQL เป็นภาษารัสเซีย: "ทำการเลือกจากตาราง COSTUMER การเลือกประกอบด้วยแถวทั้งหมดในตาราง" ) เราจะได้รับข้อมูลสำหรับผู้ใช้ทั้งหมด ไม่สำคัญเลยว่าจะดาวน์โหลดและสร้างข้อมูลที่เราสนใจอย่างไรและจากที่ไหน สิ่งสำคัญคือการกำหนดคำขอให้ถูกต้อง
  • SQL Server คืออะไร และทำงานอย่างไร? การโต้ตอบกับ DBMS เกิดขึ้นบนหลักการไคลเอนต์-เซิร์ฟเวอร์ โปรแกรมภายนอกบางโปรแกรมส่งคำขอในรูปแบบของตัวดำเนินการและคำสั่งในภาษา SQL จากนั้น DBMS จะประมวลผลและส่งการตอบกลับ เพื่อความง่าย สมมติว่า SQL Server = DBMS
หากคุณสามารถขับรถยี่ห้อหนึ่งได้ คุณก็น่าจะสามารถขับรถยี่ห้ออื่นได้โดยไม่มีปัญหาใดๆ พื้นฐานของการขับขี่จะเหมือนกันทุกที่ ยกเว้นรายละเอียดเล็กๆ น้อยๆ เช่นเดียวกับเซิร์ฟเวอร์ SQL จากผู้ผลิตหลายราย แต่ละเซิร์ฟเวอร์มีเวอร์ชันของ SQL ของตัวเอง แต่เป็นไปตามมาตรฐานที่ระบุ (SQL92, SQL2003...) เราจะใช้ตัวดำเนินการและคำสั่งภายในกรอบงาน SQL92 คำสั่ง SQL พื้นฐานแบ่งออกเป็นกลุ่มต่างๆ ดังต่อไปนี้:
  • ภาษาคำจำกัดความข้อมูล ( DDL ) – คำจำกัดความของข้อมูล การสร้างโครงสร้างฐานข้อมูลและวัตถุ
  • ภาษาการจัดการข้อมูล ( DML ) – การโต้ตอบจริงกับข้อมูล: การแทรก การลบ การแก้ไข และการอ่าน
  • ภาษาควบคุมธุรกรรม ( TCL ) – การจัดการธุรกรรม
  • ภาษาควบคุมข้อมูล ( DCL ) – การจัดการสิทธิ์การเข้าถึงข้อมูลและโครงสร้างฐานข้อมูล
ในบทความชุดนี้ เราจะดูสามกลุ่มแรก โดยให้ความสนใจเป็นพิเศษกับ DML

เจดีบีซี

ในช่วงทศวรรษที่ 80 ของศตวรรษที่ผ่านมา คอมพิวเตอร์ส่วนบุคคลประเภท PC XT/AT ได้ครองตลาด สาเหตุหลักมาจากการออกแบบโมดูลาร์ ซึ่งหมายความว่าผู้ใช้สามารถเปลี่ยนส่วนประกอบใดส่วนประกอบหนึ่งของคอมพิวเตอร์ได้อย่างง่ายดาย (โปรเซสเซอร์ การ์ดแสดงผล ดิสก์ ฯลฯ ) คุณสมบัติที่ยอดเยี่ยมนี้ยังคงอยู่มาจนถึงทุกวันนี้: เราเปลี่ยนการ์ดแสดงผลและอัปเดตไดรเวอร์ (บางครั้งอาจอัปเดตตัวเองโดยอัตโนมัติด้วยซ้ำ) บ่อยครั้งที่ไม่มีอะไรเลวร้ายเกิดขึ้นกับการปรับเปลี่ยนดังกล่าวและโปรแกรมที่มีอยู่จะยังคงทำงานกับระบบที่อัปเดตต่อไปโดยไม่ต้องติดตั้งใหม่ เช่นเดียวกับการทำงานใน Java ด้วย DBMS เพื่อสร้างมาตรฐานการทำงานกับเซิร์ฟเวอร์ SQL การโต้ตอบกับเซิร์ฟเวอร์สามารถทำได้ผ่านจุดเดียว - JDBC (การเชื่อมต่อ Java DataBase) เป็นการปรับใช้ แพ็คเกจ java.sqlสำหรับการทำงานกับ DBMS ผู้ผลิตเซิร์ฟเวอร์ SQL ยอดนิยมทั้งหมดปล่อยไดรเวอร์ JDBC สำหรับพวกเขา พิจารณาแผนภาพด้านล่าง แอปพลิเคชันใช้อินสแตนซ์ของคลาสจากjava.sql จากนั้นเราจะส่งคำสั่งที่จำเป็นเพื่อดึงข้อมูล/แก้ไขข้อมูล ถัดไปjava.sql โต้ตอบกับ DBMS ผ่านไดรเวอร์ jdbcและส่งคืนผลลัพธ์ที่เสร็จสมบูรณ์มาให้เรา ส่วนที่ 1 ความรู้เบื้องต้นเกี่ยวกับ SQL - 2 หากต้องการสลับไปใช้ DBMS จากผู้ผลิตรายอื่น การเปลี่ยน JDBC และดำเนินการตั้งค่าพื้นฐานก็เพียงพอแล้ว ส่วนที่เหลือของโปรแกรมไม่เปลี่ยนแปลง

โปรแกรมแรก

เรามาดูส่วนที่ใช้งานได้จริงกันดีกว่า มาสร้างโปรเจ็กต์ Java โดยใช้JetBrains IntelliJ IDEA IDE กันดี กว่า โปรดทราบว่า 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 ไว้สักครู่แล้วดาวน์โหลดไฟล์ JDBCที่จำเป็นสำหรับการทำงานกับH2 DBMS จาก www.h2database.com (ดาวน์โหลดไฟล์ ZIP อิสระของแพลตฟอร์ม):
    ส่วนที่ 1 ความรู้เบื้องต้นเกี่ยวกับ SQL - 7

  6. เราเข้าไปในไฟล์ที่ดาวน์โหลดมา (เราสนใจไฟล์ jarตามเส้นทางh2\binซึ่งเราต้องการในภายหลัง คัดลอกมัน):
    ส่วนที่ 1 ความรู้เบื้องต้นเกี่ยวกับ SQL - 8

  7. เรากลับไปที่ IDE และสร้างไดเร็กทอรีในรูทของโปรเจ็กต์: dbโดยที่ไฟล์ที่มีข้อมูล DBMS จะตั้งอยู่ lib – นี่คือไลบรารี JDBC JAR:
    ส่วนที่ 1 ความรู้เบื้องต้นเกี่ยวกับ SQL - 9

  8. ย้ายไฟล์ jar จากขั้นตอนที่6 ไปยังไดเร็กทอรี libและเพิ่มลงในโปรเจ็กต์เป็นไลบรารี:
    ส่วนที่ 1: ข้อมูลเบื้องต้นเกี่ยวกับ SQL - 10

  9. มาเปลี่ยนชื่อไฟล์ java เป็นsrc/sql/demoเป็นStockExchange.java (ในกรณีที่คุณลืม เราจะจำลอง “การแลกเปลี่ยน”) เปลี่ยนเนื้อหาและเรียกใช้:
    ส่วนที่ 1: ข้อมูลเบื้องต้นเกี่ยวกับ SQL - 11
ตอนนี้เราสามารถเชื่อมต่อและยกเลิกการเชื่อมต่อจาก DBMS ได้ แต่ละขั้นตอนจะสะท้อนให้เห็นในคอนโซล เมื่อคุณเชื่อมต่อกับ DBMS เป็นครั้งแรก ไฟล์ฐานข้อมูลstockExchange.mv.db จะ ถูกสร้างขึ้น

การแยกวิเคราะห์โค้ด

รหัสจริง:
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. โปรโตคอล=jdbc
  4. ผู้จัดจำหน่าย (ผู้ผลิต/ชื่อ) DBMS=h2
  5. ตำแหน่งของ DBMS ในกรณีของเราคือเส้นทางไปยังไฟล์ (c:/JavaPrj/SQLDemo/db/stockExchange) สำหรับ DBMS เครือข่าย ชื่อหรือที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล หมายเลขพอร์ต TCP/UDP และอื่นๆ จะถูกระบุเพิ่มเติมที่นี่

การประมวลผลผิดพลาด:

วิธีการเรียกในโค้ดของเราอาจส่งคืนข้อผิดพลาดที่คุณควรใส่ใจ ในขั้นตอนนี้ เราเพียงแค่รายงานพวกเขาในคอนโซล โปรดทราบว่าข้อ ผิด พลาดเมื่อทำงานกับ DBMS มักเป็นSQLException

ตรรกะของการดำเนินการ:

  1. Class.forName (DB_Driver) – เราตรวจสอบให้แน่ใจว่ามีไดรเวอร์ JDBC ที่เกี่ยวข้องพร้อมใช้งาน (ซึ่งเราดาวน์โหลดและติดตั้งไว้ก่อนหน้านี้)
  2. DriverManager.getConnection (DB_URL) – สร้างการเชื่อมต่อ DBMS JDBC จะกำหนดประเภทและตำแหน่งของ DBMS ของเราและส่งคืนการเชื่อมต่อซึ่งเราสามารถใช้เพื่อสื่อสารกับฐานข้อมูลโดยใช้ที่อยู่ที่ส่งผ่าน
  3. Connection.close() – ปิดการเชื่อมต่อกับ DBMS และทำงานกับโปรแกรมให้เสร็จสิ้น
ในส่วนถัดไปของชุด เราจะทำความคุ้นเคยกับตัวดำเนินการ DDL และชนิดข้อมูล SQL และยังสร้างโครงสร้างเริ่มต้นของฐานข้อมูลของเราและเติมด้วยตาราง ส่วนที่สอง ส่วนที่สาม
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION