SQL 기본 - 2. SQL(Structured Query Language) 종류

SSAD·2023년 2월 20일
0

SQLD

목록 보기
4/10

2. SQL(Structured Query Language)종류


1. SQL(Structured Query Language)

  • SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어이다.

  • 관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용하여 데이터베이스를 누구나 쉽게 사용할 수 있도록 한다.

  • SQL은 ANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있음

SQL 표준

ANSI/ISO SQL 표준

  • INNER JOIN, NATURAL JOIN, USING 조건, ON 조건절을 사용

ANSI/ISO SQL3 표준

  • DBMS 벤더별로 차이가 있었던, SQL을 표준화하여 제정

2. SQL(Structured Query Language)종류

  • SQL은 데이터 정의, 데이터 조작, 데이터 제어 등의 기능을 지원한다.

SQL의 종류

DDL(Data Definition Language)

  • 관계형 데이터 베이스의 구조를 정의하는 언어
  • CREATE, ALTER, DROP, RENAME문이 있다.

DML(Data Manipulatiojn Language)

  • 테이블에서 데이터를 입력, 수정, 삭제, 조회 한다.
  • INSERT, UPDATE, DELETE, SELECT문이 있다.

DCL(Data Control Language)

  • 데이터베이스 사용자에게 권한을 부여하거나 회수한다.
  • GRANT, REVOKE, TRUMCATE문이 있다.

TCL(Transaction Control Language)

  • 트랜잭션을 제어하는 명령어이다.
  • COMMIT, ROLLBACK, SAVEPOINT 문이 있다.
  • DDL문은 데이터베이스 테이블을 생성하거나 변경, 삭제하는 것으로 데이터를 저장할 구조를 정의하는 언어

  • DML은 데이터 구조가 DDL로 정의되면 해당 데이터 구조에 데이터를 입력하거나 수정, 삭제, 조회 할 수 있다.

  • DCL은 DDL로 정의된 구조에 어떤 사용자가 접근할 수 있는지 권한을 부여하는 것이다.

  • 작업의 순서를 보면 데이터베이스의 사용자에게 권한을 부여하고 권한이 부여되면 DDL로 데이터 구조를 정의한다.

  • 데이터 구조가 정의되면 데이터를 입력한 후에 개발자 및 사용자가 그 데이터를 조회하는 것이다.

TIP: 트랜잭션(Transaction)

  • 트랜잭션은 데이터베이스의 작업을 처리하는 단위이다.

트랜잭션의 특성

원자성(Atomicity)

  • 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다(ALL OR NOTHING)
  • 즉, 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 실행되지 않은 상태와 같아야 한다.

일관성(Consistency)

  • 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 한다.
  • 트랜잭션 실행 후에도 일관성이 유지되어야 한다.

고립성(Isolation)

  • 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없다.
  • 즉, 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.

영속성(Durability)

  • 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 한다.

3. SQL문의 실행 순서

  • 개발자가 작성한 SQL문(DDL, DML, DCL 등)은 3단계를 걸쳐서 실행된다.
    SQL문의 문법을 검사하고 구문분석을 한다.
  • 구문분석 이후에 SQL을 실행한다.
    SQL이 실행되면 데이터를 인출하게 된다.

SQL 실행 순서

파싱(Parsing)

  • SQL문의 문법을 확인하고 구문분석한다.
  • 구문분석한 SQL문은 Library Cache에 저장한다.

실행(Excution)

  • 옵티마이저(Optimizer)가 수립한 실행 계획에 따라 SQL을 실행한다.

인출(Fetch)

  • 데이터를 읽어서 전송한다.
profile
learn !

0개의 댓글