| 구분 | 이름 | 설명 | 주요 명령어 | 트랜잭션 |
|---|---|---|---|---|
| DDL | 데이터 정의어 (Data Definition Language) | 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 구조를 정의 | CREATE, ALTER, DROP, TRUNCATE | 자동 COMMIT (실행 즉시 영구 반영) |
| DML | 데이터 조작어 (Data Manipulation Language) | 테이블의 데이터를 조작(추가, 수정, 삭제, 조회) | INSERT, UPDATE, DELETE, SELECT | TCL로 제어 필요 |
| DCL | 데이터 제어어 (Data Control Language) | 데이터베이스 객체에 대한 접근 권한을 제어 | GRANT, REVOKE | 자동 COMMIT |
| TCL | 트랜잭션 제어어 (Transaction Control Language) | DML로 수행된 작업을 논리적 단위인 트랜잭션으로 묶어 제어 | COMMIT, ROLLBACK | - |
DELETE vs TRUNCATE vs DROP:DELETE: 데이터만 행 단위로 삭제. ROLLBACK 가능. (DML)TRUNCATE: 테이블 구조는 남기고 모든 데이터를 삭제. ROLLBACK 불가. (DDL)DROP: 테이블 구조 자체를 완전히 삭제. ROLLBACK 불가. (DDL)SELECT 문은 데이터베이스에서 데이터를 조회하는 가장 기본적인 DML입니다. SQL 문법의 작성 순서와 실제 DBMS의 논리적 실행 순서는 다르며, 이 순서를 이해하는 것이 매우 중요합니다.
문법 순서: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
논리적 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
FROM: 조회할 테이블을 지정합니다.WHERE: FROM 절의 결과를 바탕으로 행(Row) 단위의 조건을 필터링합니다.GROUP BY: WHERE 절까지 필터링된 데이터를 특정 컬럼 기준으로 그룹화합니다.HAVING: GROUP BY로 생성된 그룹에 대한 조건을 필터링합니다. (집계 함수 사용 가능)SELECT: 최종적으로 조회할 컬럼을 지정하고, 별칭(Alias)을 부여하거나 계산을 수행합니다.ORDER BY: 최종 결과 집합을 지정된 기준으로 정렬합니다. (ASC: 오름차순, DESC: 내림차순)=, >, <, >=, <=, <> (같지 않음, != 와 동일)AND, OR, NOTBETWEEN a AND b: a와 b 사이의 값 (a, b 포함)IN (list): 리스트에 포함된 값 중 하나와 일치LIKE '패턴' : 문자열 패턴 비교 (%: 여러 문자, _: 한 문자)IS NULL / IS NOT NULL: NULL 값 여부 확인| 구분 | 설명 | 주요 함수 |
|---|---|---|
| 단일 행 함수 | 각 행(Row)마다 개별적으로 적용되어 하나의 결과를 반환 | 문자: SUBSTR, REPLACE, LENGTH숫자: ROUND, TRUNC, MOD날짜: SYSDATE, TO_CHAR, TO_DATE변환/일반: NVL/ISNULL, COALESCE, CASE |
| 집계 함수 | 여러 행(Row)을 그룹화하여 하나의 결과를 반환 | COUNT(), SUM(), AVG(), MAX(), MIN() |
CASE 문: IF-THEN-ELSE 논리를 SQL로 구현하는 매우 중요한 조건부 함수입니다.SELECT ENAME,
CASE WHEN SAL >= 3000 THEN 'High'
WHEN SAL >= 2000 THEN 'Mid'
ELSE 'Low'
END AS SALARY_GRADE
FROM EMP;NVL(A, B) / ISNULL(A, B): A가 NULL이면 B를, 아니면 A를 반환.COALESCE(A, B, C...): 첫 번째로 NULL이 아닌 값을 반환.| 제약조건 | 설명 |
|---|---|
PRIMARY KEY (기본 키) | 테이블의 각 행을 유일하게 식별. (UNIQUE + NOT NULL) |
FOREIGN KEY (외래 키) | 다른 테이블의 PRIMARY KEY를 참조하여 테이블 간의 관계를 정의 (참조 무결성) |
UNIQUE (고유 키) | 해당 컬럼의 모든 값이 유일해야 함. (NULL 허용, 단 한 번만) |
NOT NULL | 해당 컬럼에 NULL 값이 입력되는 것을 방지. |
CHECK | 입력될 수 있는 값의 범위나 조건을 지정. (e.g., AGE >= 19) |
SELECT 문의 논리적 실행 순서(FROM → WHERE → ...)를 반드시 숙지해야 복잡한 쿼리를 정확하게 해석하고 작성할 수 있습니다.WHERE 절은 개별 행을, HAVING 절은 그룹화된 결과를 필터링하는 차이점을 명확히 알아야 합니다.