[DB]스키마, DDL, DML, DCL, TCL

정지안·2023년 6월 21일
0
post-thumbnail

DB 개요

SQL(Structured Query Language)이란?

📎 SQL이란?

  • SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.

  • RDBMS에서

    • 자료의 검색

    • 자료의 관리

    • 데이터베이스 스키마 생성과 수정을 수행하기 위함이다.

      스키마란?

      데이터베이스에서 데이터 구조와 관련된 전반적인 설계와 구조를 정의하는 개념

      ⇒ 간단하게! 표들을 그룹화하는 일종의 폴더

      ⇒자세하게! 구성요소는 아래와 같이 이루어져있다.

      • 속성 (개체의 특성을 나타냄.)
      • 개체 (속성들의 집합)
      • 관계 (개체 사이의 관계)
      • 제약조건

      스키마의 특징

      1.데이터 사전(Data Dictionary)에 저장된다.

      2.특정 데이터 모델을 이용해서 만들어진다. (현실 세계의 특정한 부분의 표현)

      3.시간에 따라 불변인 특성을 가진다.

      4.데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.

      스키마의 3계층

      • 외부스키마 (사용자 뷰)
        • 개별 사용자들의 입장에서 데이터 베이스의 논리적 구조를 정의한 것
      • 개념스키마(전체 뷰)
        • 데이터베이스의 전체 조직에 대한 논리적인 구조로, 물리적인 구현은 고려하지 않음
      • 내부스키마(저장 스키마)
        • 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것

      스키마의 특징

      데이터 독립성

      • 데이터베이스 내의 데이터, 데이터를 사용하는 사용자 및 응용 프로그램, 데이터베이스의 저장 구조가 서로 영향을 받지 않는 성질

      **논리적 독립성**

      • 개념 스키마가 변경되어도, 외부 스키마에 영향을 주지 않는다.

      물리적 독립성

      • • 내부 스키마가 변경되어도, 개념 스키마 / 외부 스키마에 영향을 주지 않는다.

📎 SQL 실행 순서

SQL → Syntax Check → Semantic Check → Library Cache Check → Optimization → Raw Source Generation → Execution

  1. SQL: 쿼리 실행
  2. Syntax Check: 문법 체크
  3. Semantic Check: 객체(Object) 및 권한 유무 체크
  4. Library Cache Check: Cache에서 쿼리 저장 유무 검사 → 저장되어 있다면 Sofrt Parse로, Library Cache에 저장된 쿼리 바로 사용 → 저장되어 있지 않으면 Hard Parse로 다음 단계로 넘어간다.
  5. Optimization: 최적화한 쿼리 실행 계획을 만드는 단계
  6. Raw Source Generation: 위 Optimization 단계에서 생성된 실행 계획을 실제 실행할 수 있게 Formatting
  7. Execution: 실행

관계형DB

테이블 = 릴레이션

행 = 레코드 = 튜플

열 = 필드 = 속성

<특징>

속성의 무순서성

DDL ;Data Definition Language 정의언어

  • DB의 개체 또는 객체를 정의하는 언어

개체란?

⇒ 데이터로 표현하려고 하는 객체. ER다이어그램에서는 네모로 표현.

  • 테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 데이터 전체 골격을 결정하는 역할을 담당한다.

명령어를 입력하는 순간 작업이 즉시 반영(Auto Commit)되기 때문에 사용할 때 주의가 필요하다.

DDL사용 전에 DML을 사용하면, DDL 사용과 동시에 DML은 DB에 반영(Commit)되는 현상이 생김

이러한 명령은 권한이 주어져야 실행 가능함(권한 부여는 DCL로 함)

  • CREATE
  • ALTER
  • DROP
  • Truncate : 모든 제약조건과 데이터를 삭제(기본키, 외래키에 대한 정보도 삭제됨.)

DML;Data Manipulation Language( 데이터조작언어 )

내부 데이터를 관리하기 위한 언어

  • 명령을 실행하고 commit을 실행해야 데이터베이스에 적용된다.
  • 데이터를 조회, 추가, 변경, 삭제 등의 작업을 수행하기 위해 사용
  • DDL과 달리 DML은 적는 즉시 반영(Auto Commit)이 되기 않는다. 다시 말해, DML에 의한 데이터 변동은 영구적인 변경이 아니기 때문에 ROLLBACK으로 다시 되돌릴 수 있다.
  • SELECT (조회이기때문에 commit과는 상관없음)
  • INSERT : 테이블에 레코드(튜플)을 삽입하라는 명령
  • DELETE : 테이블에 레코드(튜플)을 삭제하라는 명령
  • UPDATE : 테이블에 레코드(튜플)을 수정할 때 사용하는 명령

DCL; Data Control Language( 제어언어 )

  • 데이터베이스의 제약조건, 권한, 적용여부 등을 제어하는 명령.
  • 데이터베이스에 접근하여 읽거나 쓰는 것을 제한할 수 있는 권한을 부여하거나 박탈할 수 있다.
  • GRANT : 권한을 정의
  • REVOKE : 권한을 삭제
  • (commit) : 데이터베이스에 적용하라
  • (rollback) : 데이터베이스에 적용 취소하라

TCL; Transaction Control Language ( 트랜잭션 제어 언어 )

  • DCL과 비슷한 맥락이지만 데이터를 제어하는 언어가 아닌 트랜잭션을 제어할때 사용
  • 논리적인 작업 단위를 묶어 DML에 의해 조작된 결과를 트랜잭션 별로 제어

트랜잭션이란?

데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위

📎 트랜잭션(Transaction) 단위의 예시

게시판을 예로 들어보자

1) 게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다.

2) 그러면 글 올리기가 처리되고 자동으로 다시 게시판에 돌아오게 된다.

3) 게시판에서 자신의 글이 포함된 업데이트된 게시글들을 볼 수 있다.

여기서 작업의 단위는 insert문과 select문 둘다 를 합친것이다.

이러한 작업단위를 하나의 트랜잭션이라 한다.

관리자나 개발자가 하나의 트랜잭션 설계를 잘하는 것이 데이터를 다루는 것에 많은 이점이 있다.

profile
1% 개발자를 향해:: 개발 공부 일지를 써나갑니다

0개의 댓글