JavaRush /Blog Java /Random-VI /Phần 1: Giới thiệu về SQL
Marat Sadykov
Mức độ

Phần 1: Giới thiệu về SQL

Xuất bản trong nhóm

JDBC. Kết nối cơ sở dữ liệu và tạo ứng dụng bảng điều khiển Java trong IntelliJ IDEA

Giới thiệu

Bài viết này mở ra một loạt bài ngắn dành cho những kiến ​​thức cơ bản về tương tác với cơ sở dữ liệu trong Javagiới thiệu về SQL . Nhiều chương trình đang bận rộn xử lý, sửa đổi thông tin và cập nhật nó. Vì dữ liệu là một phần rất quan trọng của logic chương trình nên bộ nhớ riêng thường được phân bổ cho nó. Thông tin trong đó được cấu trúc và tuân theo các quy tắc đặc biệt để đảm bảo xử lý và lưu trữ chính xác. Dữ liệu được truy cập và sửa đổi bằng ngôn ngữ truy vấn đặc biệt - SQL (Ngôn ngữ truy vấn có cấu trúc).
Phần 1. Giới thiệu về SQL - 1
Hệ thống quản lý cơ sở dữ liệu là phần mềm đảm bảo sự tương tác của các chương trình bên ngoài khác nhau với dữ liệu và các dịch vụ bổ sung (ghi nhật ký, khôi phục, sao lưu, v.v.), bao gồm cả thông qua SQL. Tức là một lớp phần mềm giữa dữ liệu và các chương trình bên ngoài hoạt động với nó. Trong phần này, chúng ta sẽ trả lời các câu hỏi SQL là gì, máy chủ SQL là gì và tạo chương trình đầu tiên để tương tác với DBMS.

Các loại DBMS

Có một số loại DBMS dựa trên cách chúng tổ chức lưu trữ dữ liệu:
  • Thứ bậc. Dữ liệu được tổ chức theo cấu trúc cây. Một ví dụ là một hệ thống tệp bắt đầu từ thư mục gốc của đĩa và sau đó phát triển với các nhánh tệp thuộc các loại và thư mục khác nhau có mức độ lồng nhau khác nhau.
  • Mạng. Một sửa đổi về phân cấp, mỗi nút có thể có nhiều nút cha.
  • Hướng đối tượng. Dữ liệu được tổ chức dưới dạng lớp/đối tượng với các thuộc tính và nguyên tắc tương tác theo OOP.
  • Quan hệ. Dữ liệu của loại DBMS này được tổ chức dưới dạng bảng. Các bảng có thể được liên kết với nhau, thông tin trong đó được cấu trúc.
Trong loạt bài viết này, chúng ta sẽ xem xét các DBMS quan hệ (là những DBMS phổ biến nhất) sử dụng H2 làm ví dụ và tạo một ứng dụng từ đầu mô phỏng một cái gì đó tương tự như cách hoạt động của một sàn giao dịch. Câu hỏi: Tại sao không phải là PostgreSQL, MySQL, MSSQL hay Oracle? Trả lời: Để không bị phân tâm bởi vấn đề cài đặt một bộ chương trình riêng. Cấu hình sâu hơn, tạo cơ sở dữ liệu, sự phức tạp khi làm việc trong các phiên bản, hệ điều hành khác nhau. Để làm việc với H2, bạn cần thực hiện tối thiểu các hành động. Nhưng không có gì ngăn cản bạn thay đổi JDBC H2 hiện tại thành DBMS quan hệ từ nhà sản xuất khác (chỉ thay đổi dòng địa chỉ máy chủ và tên lớp trình điều khiển).

SQL

Các chương trình bên ngoài tạo các truy vấn tới DBMS bằng ngôn ngữ quản lý dữ liệu Ngôn ngữ truy vấn có cấu trúc. SQL là gì và nó khác với các ngôn ngữ lập trình thông thường như thế nào? Một trong những tính năng của SQL là tính khai báo. Nghĩa là, SQL là một ngôn ngữ khai báo . Điều này có nghĩa là khi nhập lệnh, tức là tạo truy vấn đến máy chủ SQL, chúng tôi mô tả chính xác những gì chúng tôi muốn nhận chứ không phải theo cách nào. Bằng cách gửi yêu cầu đến máy chủ SELECT * FROM CUSTOMER(bản dịch gần đúng từ SQL sang tiếng Nga: “thực hiện lựa chọn từ bảng COSTUMER, lựa chọn bao gồm tất cả các hàng trong bảng” ), chúng tôi sẽ nhận được dữ liệu cho tất cả người dùng. Việc máy chủ tải xuống và tạo ra dữ liệu mà chúng tôi quan tâm hoàn toàn không thành vấn đề. Điều chính là xây dựng yêu cầu một cách chính xác.
  • SQL Server là gì và nó hoạt động như thế nào? Tương tác với DBMS xảy ra theo nguyên tắc máy khách-máy chủ. Một số chương trình bên ngoài gửi yêu cầu dưới dạng toán tử và lệnh bằng ngôn ngữ SQL, DBMS xử lý yêu cầu đó và gửi phản hồi. Để đơn giản, hãy giả sử rằng SQL Server = DBMS.
Nếu bạn có thể lái một hãng xe, rất có thể bạn sẽ có thể lái những hãng xe khác mà không gặp vấn đề gì. Những điều cơ bản về lái xe ở mọi nơi đều giống nhau, ngoại trừ những chi tiết nhỏ. Điều này cũng đúng với các máy chủ SQL của các nhà sản xuất khác nhau - mỗi nhà sản xuất đều có phiên bản SQL riêng nhưng đáp ứng các tiêu chuẩn đã chỉ định (SQL92, SQL2003...). Chúng tôi sẽ sử dụng các toán tử và lệnh trong khung SQL92. Các câu lệnh SQL cơ bản được chia thành các nhóm sau:
  • Ngôn ngữ định nghĩa dữ liệu ( DDL ) - định nghĩa dữ liệu. Tạo cấu trúc cơ sở dữ liệu và các đối tượng của nó;
  • Ngôn ngữ thao tác dữ liệu ( DML ) - tương tác thực tế với dữ liệu: chèn, xóa, sửa đổi và đọc;
  • Ngôn ngữ kiểm soát giao dịch ( TCL ) – quản lý giao dịch;
  • Ngôn ngữ điều khiển dữ liệu ( DCL ) - quản lý quyền truy cập vào cấu trúc dữ liệu và cơ sở dữ liệu.
Trong loạt bài viết này, chúng ta sẽ xem xét ba nhóm đầu tiên, đặc biệt chú ý đến DML.

JDBC

Vào những năm 80 của thế kỷ trước, máy tính cá nhân loại PC XT/AT đã chinh phục thị trường. Điều này phần lớn là do tính mô-đun trong thiết kế của họ. Điều này có nghĩa là người dùng có thể dễ dàng thay đổi một hoặc một thành phần khác trong máy tính của mình (bộ xử lý, card màn hình, đĩa, v.v.). Thuộc tính tuyệt vời này đã được bảo tồn cho đến ngày nay: chúng tôi thay đổi card màn hình và cập nhật trình điều khiển (đôi khi nó thậm chí còn tự động cập nhật). Thông thường, không có gì xấu xảy ra với những thao tác như vậy và các chương trình hiện có sẽ tiếp tục hoạt động với hệ thống được cập nhật mà không cần cài đặt lại. Điều tương tự cũng áp dụng khi làm việc với Java với DBMS. Để chuẩn hóa công việc với máy chủ SQL, việc tương tác với nó có thể được thực hiện thông qua một điểm duy nhất - JDBC (Kết nối cơ sở dữ liệu Java). Nó là một triển khai của gói java.sql để làm việc với DBMS. Các nhà sản xuất của tất cả các máy chủ SQL phổ biến đều phát hành trình điều khiển JDBC cho chúng. Hãy xem xét sơ đồ dưới đây. Ứng dụng này sử dụng các thể hiện của các lớp từ java.sql . Sau đó chúng tôi chuyển các lệnh cần thiết để truy xuất/sửa đổi dữ liệu. Tiếp theo, java.sql tương tác với DBMS thông qua trình điều khiển jdbc và trả về kết quả hoàn thiện cho chúng ta. Phần 1. Giới thiệu về SQL - 2 Để chuyển sang DBMS từ nhà sản xuất khác, việc thay đổi JDBC và thực hiện các cài đặt cơ bản thường là đủ. Các phần còn lại của chương trình không thay đổi.

Chương trình đầu tiên

Hãy chuyển sang phần thực tế. Hãy tạo một dự án Java bằng cách sử dụng JetBrains IntelliJ IDEA IDE . Lưu ý rằng Phiên bản Ultimate có chứa một công cụ tuyệt vời để làm việc với SQL và cơ sở dữ liệu - Data Grip . Tuy nhiên, nó được trả tiền cho hầu hết người dùng. Vì vậy, vì mục đích giáo dục, chúng tôi chỉ có thể sử dụng Phiên bản cộng đồng IntelliJ IDEA có sẵn công khai . Vì thế:
  1. Khởi chạy IDE và tạo một dự án mới:
    Phần 1. Giới thiệu về SQL - 3

  2. Chọn một dự án Java, cho biết phiên bản SDK (trong ví dụ JDK8, nhưng điều này không quan trọng):
    Phần 1. Giới thiệu về SQL - 4

  3. Trong bước tiếp theo, chọn ứng dụng bảng điều khiển làm loại :
    Phần 1. Giới thiệu về SQL - 5

  4. Chúng tôi cho biết tên dự án , góivị trí của nó trên đĩa (Tôi đã tạo một thư mục riêng dành riêng cho việc này):
    Phần 1. Giới thiệu về SQL - 6

  5. Hãy đặt IDE sang một bên và tải xuống từ www.h2database.com tệp JDBC cần thiết để làm việc với H2 DBMS (tải xuống nền tảng ZIP độc lập):
    Phần 1. Giới thiệu về SQL - 7

  6. Chúng ta vào bên trong tệp đã tải xuống (chúng tôi quan tâm đến tệp jar dọc theo đường dẫn h2\bin , cái mà chúng tôi sẽ cần sau này, hãy sao chép nó):
    Phần 1. Giới thiệu về SQL - 8

  7. Chúng tôi quay lại IDE và tạo các thư mục trong thư mục gốc của dự án: db , nơi sẽ đặt các tệp có dữ liệu DBMS; lib - đây là thư viện JDBC JAR:
    Phần 1. Giới thiệu về SQL - 9

  8. Di chuyển tệp jar từ bước 6 sang thư mục lib và thêm nó vào dự án dưới dạng thư viện:
    Phần 1: Giới thiệu về SQL - 10

  9. Hãy đổi tên tệp java thành src/sql/demo thành StockExchange.java (trong trường hợp bạn quên, chúng ta sẽ mô phỏng một “trao đổi” đơn giản), thay đổi nội dung của nó và chạy:
    Phần 1: Giới thiệu về SQL - 11
Bây giờ chúng ta có thể kết nối và ngắt kết nối khỏi DBMS. Mỗi bước được phản ánh trong bảng điều khiển. Khi bạn kết nối với DBMS lần đầu tiên, tệp cơ sở dữ liệu stockExchange.mv.db sẽ được tạo .

Phân tích mã

Mã thực tế:
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 !");
        }
    }
}

Khối cố định:

  1. DB_Driver : Ở đây chúng tôi đã xác định tên của trình điều khiển, ví dụ: có thể tìm thấy tên này bằng cách nhấp vào thư viện được kết nối và mở rộng cấu trúc của nó trong thư mục lib của dự án hiện tại.
  2. DB_URL : Địa chỉ cơ sở dữ liệu của chúng tôi. Bao gồm dữ liệu được phân tách bằng dấu hai chấm:
  3. Giao thức=jdbc
  4. Nhà cung cấp (nhà sản xuất/tên) DBMS=h2
  5. Vị trí của DBMS, trong trường hợp của chúng tôi là đường dẫn đến tệp (c:/JavaPrj/SQLDemo/db/stockExchange). Đối với các DBMS mạng, tên hoặc địa chỉ IP của máy chủ từ xa, số cổng TCP/UDP, v.v. được chỉ định bổ sung ở đây.

Xử lý lỗi:

Các phương thức gọi trong mã của chúng tôi có thể trả về các lỗi mà bạn nên chú ý. Ở giai đoạn này, chúng tôi chỉ báo cáo chúng trong bảng điều khiển. Lưu ý rằng các lỗi khi làm việc với DBMS thường gặp nhất là SQLException .

Logic hoạt động:

  1. Class.forName (DB_Driver) - chúng tôi đảm bảo rằng trình điều khiển JDBC tương ứng có sẵn (mà chúng tôi đã tải xuống và cài đặt trước đó).
  2. DriverManager.getConnection (DB_URL) – thiết lập kết nối DBMS. Bằng cách sử dụng địa chỉ được truyền, chính JDBC sẽ xác định loại và vị trí của DBMS của chúng tôi và trả về một Kết nối mà chúng tôi có thể sử dụng để giao tiếp với cơ sở dữ liệu.
  3. Connection.close() – đóng kết nối với DBMS và kết thúc làm việc với chương trình.
Trong phần tiếp theo của loạt bài này, chúng ta sẽ làm quen với các toán tử DDL và các kiểu dữ liệu SQL, đồng thời tạo cấu trúc ban đầu của cơ sở dữ liệu và điền vào các bảng. Phần thứ hai Phần thứ ba
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION