SELECT 문은 데이터 조회의 핵심입니다.FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
FROM: 조회할 테이블을 지정합니다. (JOIN 포함)WHERE: FROM 절의 결과를 바탕으로 행(Row) 단위의 조건을 필터링합니다.GROUP BY: WHERE 절까지 필터링된 데이터를 특정 컬럼 기준으로 그룹화합니다.HAVING: GROUP BY로 생성된 그룹에 대한 조건을 필터링합니다. (집계 함수 사용)SELECT: 최종적으로 조회할 컬럼을 지정하고 계산을 수행합니다.ORDER BY: 최종 결과 집합을 지정된 기준으로 정렬합니다.| 구분 | 설명 | 주요 함수 |
|---|---|---|
| 단일 행 함수 | 각 행(Row)마다 개별적으로 적용되어 하나의 결과를 반환 | 문자: SUBSTR, REPLACE, LENGTH숫자: ROUND, TRUNC, MOD날짜: SYSDATE, TO_CHAR, TO_DATE변환/일반: NVL, COALESCE, CASE |
| 집계 함수 | 여러 행(Row)을 그룹화하여 하나의 결과를 반환 | COUNT, SUM, AVG, MAX, MIN |
CASE 문: IF-THEN-ELSE 논리를 SQL로 구현하는 매우 중요한 조건부 함수입니다.SELECT CASE WHEN SAL > 2000 THEN 'HIGH' ELSE 'LOW' END AS GRADE FROM EMP;| JOIN 종류 | 설명 |
|---|---|
INNER JOIN | 두 테이블에 모두 일치하는 데이터만 반환합니다. (교집합) |
OUTER JOIN | 한쪽 테이블에는 데이터가 있고 다른 쪽에는 없을 때도 결과를 반환합니다. • LEFT JOIN: 왼쪽 테이블 기준, 오른쪽은 NULL 처리.• RIGHT JOIN: 오른쪽 테이블 기준, 왼쪽은 NULL 처리.• FULL JOIN: 양쪽 모두 기준, 없는 쪽은 NULL 처리. |
CROSS JOIN | 두 테이블의 모든 행을 조합하여 반환합니다. (곱집합, Cartesian Product) |
SELF JOIN | 하나의 테이블을 별칭(Alias)을 통해 자기 자신과 조인합니다. |
SELECT 문으로, 복잡한 조회를 간결하게 만들어 줍니다.| 위치 | 종류 | 설명 |
|---|---|---|
SELECT 절 | 스칼라 서브쿼리 | 반드시 하나의 값(1행 1열)만 반환해야 합니다. |
FROM 절 | 인라인 뷰 | 서브쿼리의 결과를 하나의 테이블처럼 사용합니다. |
WHERE, HAVING 절 | 중첩 서브쿼리 | 조건절에서 비교 값으로 사용됩니다. (단일/다중 행, 다중 열) |
DML (Data Manipulation Language): 테이블의 데이터를 조작(추가, 수정, 삭제)하는 명령어입니다.
INSERT: 새 데이터 행을 추가합니다.UPDATE: 기존 데이터 행을 수정합니다.DELETE: 기존 데이터 행을 삭제합니다.TCL (Transaction Control Language): DML로 수행된 작업을 논리적 단위인 트랜잭션으로 묶어 제어하는 명령어입니다.
COMMIT: 트랜잭션의 모든 변경 사항을 데이터베이스에 영구 저장합니다.ROLLBACK: 트랜잭션의 모든 변경 사항을 취소하고 이전 상태로 되돌립니다.DDL (Data Definition Language): 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 구조를 정의하는 명령어입니다.
CREATE: 객체를 생성합니다.ALTER: 객체의 구조를 수정합니다.DROP: 객체를 완전히 삭제합니다.TRUNCATE: 테이블의 모든 데이터를 삭제합니다. (DELETE보다 빠르며, ROLLBACK 불가)COMMIT 됩니다.DCL (Data Control Language): 사용자에게 데이터베이스 객체에 대한 접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 명령어입니다.
FROM부터 ORDER BY까지 정해진 논리적 순서에 따라 실행됩니다.JOIN과 서브쿼리는 관계형 데이터베이스에서 원하는 데이터를 추출하기 위한 가장 핵심적인 도구입니다.