[SQL] DDL, DML, DCL

박연주·2023년 2월 7일
0

DB / SQL

목록 보기
3/4

MySQL

  • RDBMS 중 하나
 jpa:
    properties:
      hibernate:
        format_sql: true
    database: mysql
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: create-drop

DDL(Data Definition Language)

  • 데이터 정의어 : 데이터베이스를 정의하는 언어이며, 생성, 수정, 삭제 등의 데이터의 전체 골격을 결정하는 역할을 하는 언어
  • Schema, Domain, Table, View, Index를 정의하거나 변경 또는 삭제할 때 사용하는 언어
  • DB관리자나 DB설계자가 사용
create : 데이터베이스, 테이블 등을 생성
alter : 테이블을 수정
drop : 데이터베이스 ,테이블 삭제
truncate : 테이블을 초기화

DML(Data Manipulation Language)

  • 데이터 조작어 : 정의된 데이터베이스에 입력된 레코드를 조회, 수정, 삭제 등의 역할을 하는 언어
  • 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
  • DB 사용자와 DB 관리 시스템간의 인터페이스를 제공
select : 데이터 조회
insert 
update 
delete 

DCL(Data Control Language)

  • 데이터베이스에 접근하거나 객체 권한을 주는 역할을 하는 언어
grant : 특정 DB 사용자에게 특정 작업에 대한 수행 권한을 부여
revoke : 특정 DB 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
commit : 트랙잭션의 작업을 저장
rollback : 트랜잭션의 작업을 취소, 원상복구

DDL generation

  • Spring은 EntityScan을 통해 @Entity 애노테이션이 명시한 클래스를 찾음
  • spring.jpa.generate-ddl=true 옵션을 true로 설정하면 해당 데이터를 근거로 서버 시작 시점에 DDL문을 생성하여 DB에 적용
  • jpa.generate 설정은 JPA 구현체 DDL생성 옵션의 링크이고, true / false 중 선택 가능
  • 대부분 구현체로 Hibernate를 사용하기 때문에 spring.jpa.hibernate.ddl-auto 옵션을 통해서 보다 상세한 데이터베이스 초기화 전략을 설정 가능
  • @GeneratedValue의 경우 ID를 생성하는 시퀀스 테이블이 추가되어야하기 때문에 반드시 spring.jpa.hibernate.ddl-auto 설정을 none이 아닌 다른 것으로 지정해줘야 함
<ddl-auto의 >
none: 아무것도 실행하지 않는다 (대부분의 DB에서 기본값이다)
create-drop: SessionFactory가 시작될 때 drop및 생성을 실행하고, SessionFactory가 종료될 때 drop을 실행한다 (in-memory DB의 경우 기본값이다)
create: SessionFactory가 시작될 때 데이터베이스 drop을 실행하고 생성된 DDL을 실행한다
update: 변경된 스키마를 적용한다
validate: 변경된 스키마가 있다면 변경점을 출력하고 애플리케이션을 종료한다

ddl, dml, dcl 용어
ddl-auto

더미 데이터 https://haservi.github.io/posts/spring/hibernate-ddl-auto/

MyBatis - https://limjunho.github.io/2021/08/11/spring-mysql.html

profile
하루에 한 개념씩

0개의 댓글