SQL의 종류

1. DDL: 데이터 정의 언어

CREATE TABLE users (id SERIAL, name VARCHAR(255));

ALTER TABLE users
ADD COLUMN status ENUM('active', 'inactive') DEFAULT 'active';

DROP TABLE users;

     1) 테이블 생성: CREATE TABLE

     2) 테이블 수정: ALTER TABLE

     3) 테이블 삭제: DROP TABLE

     4) 테이블 초기화: TRUNCATE TABLE

          - 데이터 초기

 

2. DML: 데이터 조작 언어

INSERT INTO users (name) VALUES (?)

SELECT name FROM users WHERE id = ?

SELECT * FROM users
WHERE status = 'active';

UPDATE users SET name = ? WHERE id = ?

     1) 데이터 선택: SELECT

     2) 조건 설정: WHERE

     3) 정렬: ORDER BY

     4) 그룹화: GROUP BY

     5) 결합: JOIN

     6) 추가: INSERT INTO

     7) 수정: UPDATE

     8) 삭제: DELETE FROM

 

3. DCL: 데이터 제어 언어

     1) 권한 부여: GRANT

     2) 권한 삭제: REVOKE

 

4) TCL

     1) 새로운 트랜잭션 생성 및 시작: BEGIN     // START TRANSACTION과 동일

     2) 하나의 트랜잭션 성공적으로 종료(DB 일관성있는 상태에 있음): COMMIT

          - COMMIT 시 수행한 트랜잭션이 로그에 저장된다.

     3) 하나의 트랜잭션 비정상적으로 종료(트랜잭션의 원자성 깨짐)되어 트랜잭션의 연산 결과 취소: ROLLBACK

 

트랜잭션

: DB 상태를 변화시키기 위해 수행하는 작업 단위이다.

- 데이터 조회, 생성, 수정, 삭제 후 최종 결과물을 만들 때까지의 하나의 작업을 트랜잭션으로 관리할 수 있다.

- 데이터 처리 중 문제 발생 시 변경 사항을 되돌린다.(rollback)

- 모든 단위 기능(조회, 수정 등...)이 성공해야 트랜잭션이 성공된다.(commit)

 

특징

1) 원자성

- 트랜잭션이 db에 모두 반영되거나 전혀 반영되지 않아야한다.

2) 일관성

- 트랜잭션의 작업 처리 결과가 항상 일관성 있어야 한다.

     - 트랜잭션 진행 동안에 db 변경 시에도 바뀐 db가 아니라 처음 진행 시 참조한 db로 진행된다.

3) 독립성

- 복수의 트랜잭션이 동시 실행돼도 서로의 연산에 관여할 수 없다.

'Language > SQL' 카테고리의 다른 글

내장형 H2 데이터베이스 사용  (0) 2025.06.26

방식 3가지

Mode H2 다운로드 여부 실행 주체 DB 저장 위치
Server Mode O 외부 로컬(파일 시스템)
In-Memory Mode X 스프링 메모리
Embedded Mode X 스프링 로컬(파일 시스템)

 

1) Server Mode

: 직접 엔진 설치해 사용한다.

- 외부 db 엔진이 구동된다.

- 애플리케이션 외부에 데이터가 저장되어 애플리케이션 종료 시에도 데이터가 유지된다.

 

2) In-Memory Mode

: 엔진을 설치하지 않고 애플리케이션 내부 엔진을 사용한다.(애플리케이션에 DB 엔진 내장)

- build.gradle 및 application.properties 설정을 통해 실행 가능하다.

# application.yml
spring:  
    datasource:    
        driver-class-name: org.h2.Driver
        url: jdbc:h2:mem:{DB 이름}
        username: sa
        password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:{DB 이름}
spring.datasource.username=sa
spring.datasource.password=

- 애플리케이션과 DB 엔진이 함께 실행, 종료된다.

- 애플리케이션 메모리에 데이터가 저장되어 애플리케이션 종료 시 데이터가 사라진다.

     => 단위 테스트 등에서 많이 사용한다.

 

3) Embedded Mode

: 엔진을 설치하지 않고 애플리케이션 내부 엔진을 사용한다.

- build.gradle 및 application.properties 설정을 통해 실행 가능하다.

# application.yml
spring:
  datasource:
      driver-class-name: org.h2.Driver
      url: jdbc:h2:{DB가 저장될 경로}    
      username: sa    
      password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:~/testdb			// 경로를 ~/testdb로 설정한 예시로 ~는 홈 디렉터리를 의미하며 홈 디렉터리 아래 testdb.mv.db파일로 저장된다.
spring.datasource.username=sa
spring.datasource.password=

- 애플리케이션과 DB 엔진이 함께 실행, 종료된다.

- 애플리케이션 외부에 데이터가 저장되어(로컬)  애플리케이션 종료 시에도 데이터가 유지된다.

     => 간단한 애플리케이션에 적합하다.

'Language > SQL' 카테고리의 다른 글

SQL의 종류와 트랜잭션  (0) 2025.06.26

+ Recent posts