[ ⑤ SELECT ][ ① FROM ] [ ② WHERE ][ ③ GROUP BY ] [ ④ HAVING ][ ⑥ ORDER BY ]
FROM: 대상 테이블을 정의하고 JOIN을 처리하여 작업할 데이터 집합을 확정합니다.WHERE: 데이터 집합에서 개별 행(Row)을 조건에 따라 필터링합니다. (집계 함수 사용 불가)GROUP BY: 필터링된 데이터를 특정 컬럼 기준으로 그룹화합니다.HAVING: 그룹화된 결과에 대해 조건을 적용하여 그룹을 필터링합니다. (집계 함수 사용 가능)SELECT: 최종적으로 조회할 컬럼을 지정하고, 함수 적용 및 계산을 수행합니다.ORDER BY: 최종 결과 집합을 지정된 기준으로 정렬합니다. (ASC: 오름차순, DESC: 내림차순)| JOIN 종류 | 설명 | 특징 |
|---|---|---|
INNER JOIN | 두 테이블에 모두 일치하는 데이터만 반환 (교집합) | 가장 일반적인 조인 |
OUTER JOIN | 일치하지 않는 데이터도 NULL로 포함하여 반환 | LEFT: 왼쪽 테이블 기준RIGHT: 오른쪽 테이블 기준FULL: 양쪽 테이블 기준 |
CROSS JOIN | 모든 행의 조합을 반환 (곱집합, Cartesian Product) | 조인 조건이 없을 때 발생 |
SELF JOIN | 하나의 테이블을 별칭(Alias)을 통해 자기 자신과 조인 | 계층형 구조(e.g., 사원-관리자) 조회 시 사용 |
SELECT 문의 결과 집합을 하나로 합치거나 비교합니다. (컬럼 수와 데이터 타입이 일치해야 함)| 연산자 | 설명 | 중복 처리 |
|---|---|---|
UNION | 두 결과 집합을 합침 (합집합) | 중복 제거 (정렬 발생) |
UNION ALL | 두 결과 집합을 그대로 합침 | 중복 포함 (성능 우수) |
INTERSECT | 두 결과 집합에 공통으로 존재하는 행만 반환 (교집합) | 중복 제거 |
MINUS / EXCEPT | 첫 번째 결과 집합에서 두 번째 결과 집합을 뺀 결과 반환 (차집합) | 중복 제거 |
SELECT 문으로, 위치에 따라 역할이 다릅니다.| 위치 | 종류 | 설명 |
|---|---|---|
SELECT 절 | 스칼라 서브쿼리 | 반드시 하나의 값(1행 1열)만 반환해야 함 |
FROM 절 | 인라인 뷰 | 서브쿼리의 결과를 하나의 가상 테이블처럼 사용 |
WHERE, HAVING 절 | 중첩 서브쿼리 | 조건절에서 비교 값으로 사용 (IN, EXISTS, 비교 연산자 등) |
CASE 문: SQL에서 IF-THEN-ELSE 논리를 구현하는 핵심 조건부 함수입니다.SELECT ENAME,
CASE WHEN JOB = 'SALESMAN' THEN SAL * 1.1
WHEN JOB = 'MANAGER' THEN SAL * 1.2
ELSE SAL
END AS ADJUSTED_SAL
FROM EMP;NVL(컬럼, 값) / ISNULL(컬럼, 값): 해당 컬럼이 NULL일 경우 지정된 값으로 치환합니다.COUNT(), SUM(), AVG(), MAX(), MIN() 등은 GROUP BY 절과 함께 사용되어 그룹별 통계를 냅니다.| 구분 | 명령어 | 설명 | 트랜잭션 |
|---|---|---|---|
| DML (조작어) | INSERTUPDATEDELETE | 테이블의 데이터를 조작 | TCL로 제어 필요 |
| TCL (제어어) | COMMITROLLBACK | DML로 변경된 내용을 DB에 영구 저장하거나 취소 | 트랜잭션 관리 |
| DDL (정의어) | CREATEALTERDROPTRUNCATE | 데이터베이스 객체(테이블 등)의 구조를 정의 | 자동 COMMIT (실행 즉시 영구 반영) |
DELETE vs TRUNCATE:DELETE: 데이터만 삭제, ROLLBACK 가능, WHERE 절 사용 가능.TRUNCATE: 테이블 구조만 남기고 모든 데이터 삭제, ROLLBACK 불가, 속도가 매우 빠름.| 제약조건 | 설명 |
|---|---|
PRIMARY KEY | 테이블의 각 행을 유일하게 식별. (UNIQUE + NOT NULL) |
FOREIGN KEY | 다른 테이블의 PRIMARY KEY를 참조하여 테이블 간의 관계를 정의 (참조 무결성) |
UNIQUE | 해당 컬럼의 모든 값이 유일해야 함. (NULL 허용) |
NOT NULL | 해당 컬럼에 NULL 값이 입력되는 것을 방지. |
CHECK | 입력될 수 있는 값의 범위나 조건을 지정. |
JOIN, 집합 연산자, 서브쿼리를 자유자재로 활용해야 합니다.