SQL
SQL이란
- SQL은 Strucured Query Language의 줄임말로 관계형 데이터베이스에서 정보를 관리하고 처리하기 위한 프로그래밍 언어
- 비절차적 데이터 언어
- 사용자가 무엇을 처리할지(What)만 제시하고, 어떻게 처리할지는(How)는 데이터베이스 시스템에 맡김
- 사용자의 작업의 절차와 단계 모두 명시하는 C언어와 같은 절차적 언어와 대비됨
- SQL은 ANSI SQL 표준을 따름
SQL 하위 언어
- 데이터 정의 언어(DDL) - Data Definition Language
- 테이블의 구조를 정의하고 관리하는데 사용
- 주요 명령:
CREATE, ALTER, DROP
- 예:
CREATE 명령을 사용하여 테이블, 뷰 및 인덱스와 같은 데이터베이스 객체 생성
- 데이터 조작 언어(DML) - Data Manipulation Language
- 데이터의 조회, 삽입, 삭제, 수정 등을 하기위해 사용
- 주요 명령:
SELECT, INSERT, UPDATE, DELETE
- 예:
INSERT 명령을 사용하여 데이터 삽입
- 데이터 제어 언어(DCL) - Data Control Language
- 트랜잭션 제어나 사용자의 데이터 접근 권한 제어할때 사용
- 주요 명령:
GRANT, REVOKE, COMMIT, ROLLBACK
- 예:
GRANT 명령을 사용하여 특정 사용자나 역할에 데이터베이스 객체(테이블, 뷰 및 인덱스)의 대한 특정 권한(CRUD) 부여,
COMMIT 명령을 사용하여 트랙잭션 성공시 변경 사항 적용, ROLLBACK 명령을 사용하여 트랙잭션 실패시 되돌림
SQL 실행 과정
파싱 -> 최적화 -> 실행
1. 파싱(Parsing)
구문 검사(Syntax Check)
- 구문 검사는 사용자가 작성한 SQL 쿼리가 문법에 맞는지 검사하는 것
- SQL문을 토큰 단위로 분리하여 올바른 순서와 문법에 맞는지 검사
의미 검사(Semantic Check)
- 테이블 및 열 확인: 쿼리에 사용된 테이블과 컬럼이 실제 데이터베이스에 존재하는 검사
- 권한 확인: 사용자가 해당 테이블과 열에 권한이 있는 검사
- 데이터 타입 확인: 해당 타입에 맞는지 검사
- 참조 무결성 확인: 외래 키(Foreign Key) 등 참조 무결성 제약 조건을 검사
2. 최적화(Optimization)
- 데이터베이스 옵티마이저(Optimizer)가 해당 쿼리를 실행하기 위한 최적의 실행 계획을 생성
- 이 때, 통계 정보를 통해 인덱스 사용 여부, 조인 순서 등을 고려함
3. Execution(실행)
- 최적화 과정에서 생성된 실행 계획으로 쿼리가 실행
- DBMS는 해당 작업을 수행하기 위해 스토리지 엔진(Storage Engine)을 사용
- 실행이 완료되면 데이터베이스는 결과를 사용자 또는 애플리케이션에 반환
References
https://aws.amazon.com/ko/what-is/sql
https://www.ibm.com/kr-ko/think/topics/structured-query-language
https://terms.naver.com/entry.naver?docId=3431178&cid=58430&categoryId=58430&expCategoryId=58430