JavaRush /Java Blog /Random-KO /1부: SQL 소개
Marat Sadykov
레벨 41

1부: SQL 소개

Random-KO 그룹에 게시되었습니다

JDBC. IntelliJ IDEA에서 데이터베이스 연결 및 Java 콘솔 애플리케이션 생성

소개

이 기사에서는 Java에서 데이터베이스 와 상호 작용하는 기본 사항 과 SQL에 대한 소개를 다루는 짧은 시리즈를 시작합니다 . 많은 프로그램이 정보를 처리하고 수정하며 최신 상태로 유지하느라 바쁩니다. 데이터는 프로그램 로직의 매우 중요한 부분이므로 이를 위해 별도의 저장소가 할당되는 경우가 많습니다. 여기에 포함된 정보는 구조화되어 있으며 올바른 처리 및 저장을 보장하기 위해 특별한 규칙이 적용됩니다. 데이터는 특수 쿼리 언어인 SQL(구조적 쿼리 언어)을 사용하여 액세스하고 수정됩니다.
1부. SQL 소개 - 1
데이터베이스 관리 시스템은 SQL을 포함하여 다양한 외부 프로그램과 데이터 및 추가 서비스(로깅, 복구, 백업 등)의 상호 작용을 보장하는 소프트웨어입니다. 즉, 데이터와 이를 사용하는 외부 프로그램 사이의 소프트웨어 계층입니다. 이 부분에서는 SQL이 무엇인지, SQL 서버가 무엇인지에 대한 질문에 답하고 DBMS와 상호 작용하기 위한 첫 번째 프로그램을 만듭니다.

DBMS의 종류

데이터 저장소를 구성하는 방식에 따라 여러 유형의 DBMS가 있습니다.
  • 계층적. 데이터는 트리 구조로 구성됩니다. 예를 들어 디스크 루트에서 시작하여 다양한 중첩 수준의 폴더와 다양한 유형의 파일 분기로 성장하는 파일 시스템이 있습니다.
  • 회로망. 계층적 수정으로 각 노드는 둘 이상의 상위를 가질 수 있습니다.
  • 객체 지향. 데이터는 OOP에 따른 속성과 상호 작용 원리를 사용하여 클래스/객체 형태로 구성됩니다.
  • 관계형. 이러한 유형의 DBMS의 데이터는 테이블로 구성됩니다. 테이블은 서로 연결될 수 있으며 테이블의 정보는 구조화되어 있습니다.
이 일련의 기사에서는 H2를 예로 들어 관계형 DBMS(가장 일반적인 것)를 살펴보고 교환 작동 방식과 유사한 것을 에뮬레이트하는 애플리케이션을 처음부터 만들 것입니다. 질문: PostgreSQL, MySQL, MSSQL 또는 Oracle은 왜 안 되나요? 답: 별도의 프로그램 세트를 설치하는 문제로 인해 주의가 산만해지지 않도록 하기 위함입니다. 추가 구성, 데이터베이스 생성, 다양한 OS, 버전에서의 작업의 복잡성. H2를 사용하려면 최소한의 작업을 수행해야 합니다. 그러나 현재 H2 JDBC를 다른 제조업체의 관계형 DBMS로 변경하는 것을 방해하는 것은 없습니다(서버 주소 줄과 드라이버 클래스 이름만 변경됨).

SQL

외부 프로그램은 데이터 관리 언어인 구조적 쿼리 언어로 DBMS에 대한 쿼리를 생성합니다. 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에 특히 주목하면서 처음 세 그룹을 살펴볼 것입니다.

JDBC

지난 세기 80년대에는 PC XT/AT 유형의 개인용 컴퓨터가 시장을 장악했습니다. 이는 주로 디자인의 모듈성 때문이었습니다. 이는 사용자가 컴퓨터의 구성 요소 중 하나 또는 다른 구성 요소(프로세서, 비디오 카드, 디스크 등)를 매우 쉽게 변경할 수 있음을 의미합니다. 이 훌륭한 속성은 오늘날까지 보존되어 있습니다. 비디오 카드를 변경하고 드라이버를 업데이트합니다(때로는 자동으로 업데이트되기도 합니다). 대부분의 경우 이러한 조작으로 인해 나쁜 일이 발생하지 않으며 기존 프로그램은 다시 설치하지 않고도 업데이트된 시스템에서 계속 작동합니다. DBMS를 사용하여 Java로 작업할 때도 마찬가지입니다. SQL 서버와의 작업을 표준화하기 위해 JDBC (Java DataBase Connectivity) 라는 단일 지점을 통해 SQL 서버와의 상호 작용을 수행할 수 있습니다 . 이는 DBMS 작업을 위한 java.sql 패키지 의 구현입니다 . 널리 사용되는 모든 SQL 서버 제조업체는 해당 서버용 JDBC 드라이버를 출시합니다. 아래 다이어그램을 고려하십시오. 애플리케이션은 java.sql 의 클래스 인스턴스를 사용합니다 . 그런 다음 데이터를 검색/수정하는 데 필요한 명령을 전달합니다. 다음으로 java.sql은 jdbc 드라이버를 통해 DBMS와 상호 작용 하고 완성된 결과를 우리에게 반환합니다. 1부. SQL 소개 - 2 다른 제조사의 DBMS로 전환하려면 JDBC를 변경하고 기본 설정만 하면 되는 경우가 많다. 프로그램의 나머지 부분은 변경되지 않습니다.

첫 번째 프로그램

실용적인 부분으로 넘어 갑시다. JetBrains IntelliJ IDEA IDE를 사용하여 Java 프로젝트를 만들어 보겠습니다 . 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를 잠시 제쳐두고 www.h2database.com 에서 H2 DBMS 작업에 필요한 JDBC 파일을 다운로드해 보겠습니다 (플랫폼 독립적인 ZIP 다운로드).
    1부. SQL 소개 - 7

  6. 다운로드한 파일 내부로 이동합니다( 나중에 필요할 h2\bin 경로에 있는 jar 파일 에 관심이 있으므로 복사하세요).
    1부. SQL 소개 - 8

  7. IDE로 돌아가서 프로젝트 루트에 db 디렉토리를 생성합니다 . 여기에는 DBMS 데이터가 있는 파일이 위치합니다. lib – JDBC JAR 라이브러리는 다음과 같습니다.
    1부. SQL 소개 - 9

  8. 6 단계의 jar 파일을 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