자격증/SQLD & SQLP 자격증
# SELECT 문장 실행 순서
- GROUP BY 절, ORDER BY 절이 같이 사용될 때 SELECT문은 아래와 같이 6개의 절로 구성되어 아래의 순서로 실행된다. (옵티마이저가 문법SYNTAX), 의미(SEMANTIC)적 에러를 점검하는 순서이자 실행순서)
- FROM 절 : 조회 대상 테이블 참조
- WHERE 절 : 조회 대상 데이터 아니면 제거
- GHROUP BY 절 : 행 소그룹화
- HAVING 절 : 그룹핑된 값의 조건에 맞는 것만 출력
- SELECT 절 : 데이터 값을 출력/계산
- ORDER BY 절 : 데이터 정렬
# 옵티마이저
- SQL의 실행 방법인 실행계획을 생성하는 데이터베이스 엔진.
- SQL 문에 대한 최적의 실행 방법을 결정, SQL 실행 속도에 가장 큰 영향을 미친다.
- 유형 : 규칙 기반 옵티마이저, 비용 기반 옵티마이저
## 규칙 기반 옵티마이저 (RBO : Rule Based Optimizer)
- 사전에 정의된 SQL 규칙의 우선순위로 실행계획을 생성하는 방식.
- 사용 가능한 인덱스 유무, 연산자 종류 등을 참조하여 실행계획 생성.
## 비용 기반 옵티마이저(CBO : Cost Based Optimizer)
- 통계 정보를 활용, SQL 처리 시간 및 자원 사용량 등을 계산, 효율적인 실행계획을 생성.
- 데이터 건수를 예측하지 못하는 RBO 단점을 개선하기 위해 사용.
- 통계정보가 없는 경우 불확실한 실행계획 생성 가능성 존재하므로 최신 통계정보 유지하는게 중요.
- 대부분의 상용 DBMS는 비용 기반 옵티마이저 방식 사용.
# 서브쿼리
- 하나의 SQL문 안에 포함되어 있는 내부 SQL을 의미.
- 메인 쿼리가 서브 쿼리를 포함하는 형태.
- SELECT 절, FROM 절, WHERE 절, HAVING 절, ORDER BY 절, INSERT 문의 VALUES 절, UPDATE 문의 SET 절에 사용 가능.
- 일반적으로 서브 쿼리는 괄호로 감싸고, 단일 또는 다중행 비교 연산자와 함께 사용.
# 관계형 데이터베이스 주요 용어
테이블
- 같은 속성을 공유하는 행(Row) 들의 모임.
- 행고과 컬럼의 2차원 구조를 가진 데이터 저장소.
열(Column)
- 테이블의 세로 방향.
- 각각의 열은 유일한 이름을 가지고 있고, 자신만의 데이터 타입을 가진다.
- 속성(Attribute).
행(Row)
- 테이블에서 가로 방향.
- 관계된 데이터의 묶음.
- 튜플(Tuple) 또는 레코드(Record).
값(Value)
키(Key)
- 테이블에서 행의 식볋자로 이용되는 열.
- 기본키(Primary Key).
관계(Relationship)
- 테이블 간의 관계.
- 일대일, 일대다, 다대다.