이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다.
SQL이란?
RDB와 상호작용하기 위한 컴퓨터 언어로서, 데이터베이스로 부터 데이터를 관리하고 조작하고, 필요한 데이터를 검색하기 위한 언어이다. DBMS는 SQL 쿼리를 처리하여, 요청된 데이터를 검색한 이후, 반환한다.
이때 SQL은 DBMS가 어떤 동작을 수행하면 되는지 알려주는 역할을 한다. 예를 들어, 데이터베이스에 어떤 구조의 테이블이 생성되어야 하는지 명령을 내릴 수 있고, 테이블로 부터 특정 조건에 일치하는 데이터를 조회하고, 특정 형태로 데이터를 반환받을 수 있다.
C언어와 비교한 SQL의 특징
SQL은 비절차적 언어
SQL 언어는, 원하는 작업의 결과만을 기술하고, 그 작업이 어떻게 수행될 것인지는 고려하지 않아도 되는 비절차적 언어이다. 사용자가 작성한 SQL문은 DBMS에 의해서 실제 동작이 결정된다. (다만, 절차형 SQL을 지원하기 위해 각 벤더사에서 PL/SQL 과 같은 절차형 SQL을 제공하고 있다.)
반면 C언어으로 작성된 프로그램은 line by line(컴파일 이후의 H/W 관점에서) 으로 수행된다. 프로그램의 실제 동작은 코드에 명시된 순서에 의해 결정될 수 있다.
SQL은 DBMS에 명령을 내리기 위한 언어
SQL은 DBMS를 사용하기 위해서, 그리고 데이터와 관련한 원하는 결과를 얻기 위해서 존재한다. 반면 C언어는 OS와 상호작용하는 언어이다.
SQL 실행 구조
SQL 실행은 위 절차를 따른다. 순서대로 보자면, 아래와 같다.
SQL 요청 → 쿼리 파서 → 전처리기 → 옵티마이저 → 쿼리 실행기(스토리지 엔진에 요청 및 응답) → SQL 응답
- 쿼리 파서 : 쿼리 문장을 DBMS가 이해할 수 있는 최소 단위로 나눔. 문법 오류 확인.
- 전처리기 : 쿼리 파서를 통해 도출된 ‘파서 트리’를 기준으로, 쿼리 문장의 구조 및 실제 테이블 등과 매핑하여 확인
- 옵티마이저 : 쿼리 문장을 실행하기 위해 최적화된 전략 수립
- 쿼리 실행기 : 옵티마이저가 만든 계획을 토대로, 스토리지 엔진(or 핸들러)에 요청들을 전달 및 응답을 받고, 최종적으로는 SQL 요청에 대해 응답함.
DDL, DML, DCL
SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나뉜다.
- 데이터 정의어 : 테이블을 생성하고 변경 및 제거하는 기능을 제공
- 데이터 조작어 : 테이블에 새로운 데이터를 삽입하거나, 기존 데이터를 수정, 삭제, 검색하는 기능 제공
- 데이터 제어어 : 보안을 위한 목적으로 데이터에 대한 접근 권한을 사용자별로 관리
참고자료
'CS > 데이터베이스' 카테고리의 다른 글
[DB] SELECT 문장 처리 순서 (2) | 2024.01.18 |
---|---|
[DB] SQL -DDL (0) | 2024.01.17 |
[DB] Real MySQL 8.0 - 4.1 MySQL 아키텍처 (0) | 2024.01.12 |
[DB] 데이터베이스 기본개념 관련 질문정리 (2) | 2024.01.11 |
[DB] 데이터 모델링 (0) | 2024.01.11 |