SQL
SQL(Structured Query Language)은 데이터베이스에서 데이터를 생성, 검색, 업데이트, 삭제하기 위한 표준 프로그래밍 언어입니다. SQL은 관계형 데이터베이스 관리 시스템(RDBMS)에 주로 사용되며, 1986년에 표준화되었습니다.
SQL의 주요 특징은 다음과 같습니다.
- DDL(Data Definition Language): 데이터베이스 구조를 정의하고 수정하기 위한 명령어를 포함합니다. CREATE, ALTER, DROP 등의 명령어가 여기에 속합니다.
- DQL(Data Query Language): 데이터베이스에서 특정 데이터를 조회하기 위한 명령어를 포함합니다. 가장 일반적인 예는 SELECT 문입니다.
- DML(Data Manipulation Language): 데이터베이스 내의 데이터를 추가, 수정, 삭제하기 위한 명령어를 포함합니다. INSERT, UPDATE, DELETE가 이에 해당합니다.
- DCL(Data Control Language): 데이터베이스의 접근 제어와 보안을 담당하는 명령어를 포함합니다. GRANT와 REVOKE가 이에 해당합니다.
- TCL(Transaction Control Language): 데이터베이스 내의 트랜잭션을 관리하는 명령어를 포함합니다. COMMIT, ROLLBACK 등이 여기에 속합니다.
아래는 SQL을 구성하는 특징들 입니다.
SQL문이 실행되는 순서
- FROM:
쿼리는 FROM 절에서 사용될 테이블을 식별하는 것으로 시작합니다. 여기서는 t1과 t2 테이블을 지정했습니다. 이 단계에서 사용될 데이터셋이 설정됩니다. - JOIN:
SQL 엔진이 JOIN 절에 명시된 테이블을 결합합니다. 여기서는 t2가 t1에 조인됩니다. - ON:
ON 절은 조인된 테이블의 행을 매칭하는 조건을 지정합니다. 예를 들어 t1.column_a = t2.column_a 조건을 통해 행이 필터링됩니다. - WHERE:
WHERE 절에서 특정 조건(constraint_expression)을 만족하는 행만 필터링합니다. 이 조건을 만족하는 행만 다음 단계로 넘어갑니다. - GROUP BY:
GROUP BY 절은 특정 열을 기준으로 필터링된 행을 그룹화합니다. 집계 계산이 필요한 경우 이 단계에서 그룹화가 이루어집니다. - HAVING:
HAVING 절은 집계된 데이터 중 특정 조건을 만족하는 그룹만 필터링합니다. 조건을 만족하는 그룹만 결과에 포함됩니다. - SELECT:
SELECT 절은 최종 출력에 포함될 열을 지정합니다. 여기서는 column_a와 column_b가 선택되었습니다. - ORDER BY:
ORDER BY 절은 최종 결과 세트를 특정 열을 기준으로 오름차순(ASC) 또는 내림차순(DESC)으로 정렬합니다. - LIMIT:
마지막으로 LIMIT 절은 반환할 행의 개수를 제한합니다.
SQL의 실행은 매우 복잡하며, 다음과 같은 여러 고려 사항을 포함합니다
- 인덱스와 캐시의 사용
- 테이블 조인의 순서
- 동시성 제어
- 트랜잭션 관리 이러한 모든 단계와 고려 사항은 데이터베이스 시스템이 효율적으로 작동하도록 하는 데 중요합니다.
SQL이 실행되는 원리
Step 1
SQL 문장이 전송 계층 프로토콜(예: TCP)을 통해 데이터베이스로 전송됩니다.
Step 2
SQL 문장이 명령 Parser로 전송되어, 구문 및 의미 분석을 거친 후 쿼리 트리가 생성됩니다.
Step 3
쿼리 트리가 Optimizer로 전송됩니다. Optimizer는 실행 계획을 생성합니다.
Step 4
실행 계획이 executer로 전송됩니다. executer는 실행에서 데이터를 검색합니다.
Step 5
Access methods는 실행에 필요한 데이터 추출 로직을 제공하며, 스토리지 엔진에서 데이터를 검색합니다.
Step 6
Access methods는 SQL 문장이 읽기 전용인지를 결정합니다. 만약 쿼리가 읽기 전용(SELECT 문장)이라면, 버퍼 관리자로 전송되어 추가 처리가 이루어집니다. 버퍼 관리자는 캐시나 데이터 파일에서 데이터를 찾습니다.
Step 7
만약 문장이 UPDATE 또는 INSERT라면, 추가 처리를 위해 transaction 관리자로 전송됩니다.
Step 8
트랜잭션 동안, 데이터는 Lock 모드에 있습니다. 이것은 Lock 관리자에 의해 보장됩니다. 또한 트랜잭션의 ACID 속성을 보장합니다.
참고 자료
https://github.com/ByteByteGoHq/system-design-101?tab=readme-ov-file#sql-language
'ComputerScience > Database' 카테고리의 다른 글
[Database] 데이터베이스의 기본 개념 (DB, DBMS, Schema) (0) | 2024.02.04 |
---|---|
[Database] Index가 무엇인지 설명해보세요. (1) | 2024.01.29 |
[Database] ACID, BASE 원칙 (0) | 2024.01.16 |
[Database] RDB과 NoSQL (0) | 2024.01.10 |
[Database] 데이터베이스란 (0) | 2024.01.07 |