TIL - 20250822

juni·2025년 8월 22일

TIL

목록 보기
102/316

0822 SQLD 2과목 - SQL 기본 및 활용 핵심 정리


✅ 1. SELECT 문의 논리적 실행 순서

  • SQL 문법의 작성 순서와 DBMS의 내부적인 처리 순서는 다릅니다. 이 논리적 순서를 이해하는 것이 복잡한 쿼리 해석의 핵심입니다.

[ ⑤ SELECT ][ ① FROM ] [ ② WHERE ][ ③ GROUP BY ] [ ④ HAVING ][ ⑥ ORDER BY ]

  1. FROM: 대상 테이블을 정의하고 JOIN을 처리하여 작업할 데이터 집합을 확정합니다.
  2. WHERE: 데이터 집합에서 개별 행(Row)을 조건에 따라 필터링합니다. (집계 함수 사용 불가)
  3. GROUP BY: 필터링된 데이터를 특정 컬럼 기준으로 그룹화합니다.
  4. HAVING: 그룹화된 결과에 대해 조건을 적용하여 그룹을 필터링합니다. (집계 함수 사용 가능)
  5. SELECT: 최종적으로 조회할 컬럼을 지정하고, 함수 적용 및 계산을 수행합니다.
  6. ORDER BY: 최종 결과 집합을 지정된 기준으로 정렬합니다. (ASC: 오름차순, DESC: 내림차순)

✅ 2. JOIN과 집합 연산자

  • 두 개 이상의 데이터 집합을 결합하는 핵심적인 방법입니다.

➕ JOIN

JOIN 종류설명특징
INNER JOIN두 테이블에 모두 일치하는 데이터만 반환 (교집합)가장 일반적인 조인
OUTER JOIN일치하지 않는 데이터도 NULL로 포함하여 반환LEFT: 왼쪽 테이블 기준
RIGHT: 오른쪽 테이블 기준
FULL: 양쪽 테이블 기준
CROSS JOIN모든 행의 조합을 반환 (곱집합, Cartesian Product)조인 조건이 없을 때 발생
SELF JOIN하나의 테이블을 별칭(Alias)을 통해 자기 자신과 조인계층형 구조(e.g., 사원-관리자) 조회 시 사용

➕ 집합 연산자 (Set Operators)

  • SELECT 문의 결과 집합을 하나로 합치거나 비교합니다. (컬럼 수와 데이터 타입이 일치해야 함)
연산자설명중복 처리
UNION두 결과 집합을 합침 (합집합)중복 제거 (정렬 발생)
UNION ALL두 결과 집합을 그대로 합침중복 포함 (성능 우수)
INTERSECT두 결과 집합에 공통으로 존재하는 행만 반환 (교집합)중복 제거
MINUS / EXCEPT첫 번째 결과 집합에서 두 번째 결과 집합을 뺀 결과 반환 (차집합)중복 제거

✅ 3. 서브쿼리와 주요 함수

➕ 서브쿼리 (Subquery)

  • 다른 SQL 문 내부에 포함된 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 절과 함께 사용되어 그룹별 통계를 냅니다.

✅ 4. DML, TCL, DDL

  • 데이터와 객체를 관리하는 핵심 명령어 그룹입니다.
구분명령어설명트랜잭션
DML
(조작어)
INSERT
UPDATE
DELETE
테이블의 데이터를 조작TCL로 제어 필요
TCL
(제어어)
COMMIT
ROLLBACK
DML로 변경된 내용을 DB에 영구 저장하거나 취소트랜잭션 관리
DDL
(정의어)
CREATE
ALTER
DROP
TRUNCATE
데이터베이스 객체(테이블 등)의 구조를 정의자동 COMMIT (실행 즉시 영구 반영)
  • DELETE vs TRUNCATE:
    • DELETE: 데이터만 삭제, ROLLBACK 가능, WHERE 절 사용 가능.
    • TRUNCATE: 테이블 구조만 남기고 모든 데이터 삭제, ROLLBACK 불가, 속도가 매우 빠름.

✅ 5. 제약조건 (Constraints)

  • 테이블에 잘못된 데이터가 입력되는 것을 방지하기 위한 규칙입니다.
제약조건설명
PRIMARY KEY테이블의 각 행을 유일하게 식별. (UNIQUE + NOT NULL)
FOREIGN KEY다른 테이블의 PRIMARY KEY를 참조하여 테이블 간의 관계를 정의 (참조 무결성)
UNIQUE해당 컬럼의 모든 값이 유일해야 함. (NULL 허용)
NOT NULL해당 컬럼에 NULL 값이 입력되는 것을 방지.
CHECK입력될 수 있는 값의 범위나 조건을 지정.

📌 요약

  • SQL 쿼리는 논리적 실행 순서에 대한 이해가 가장 중요합니다.
  • 원하는 데이터를 조합하기 위해 JOIN, 집합 연산자, 서브쿼리를 자유자재로 활용해야 합니다.
  • 데이터 변경(DML)은 반드시 트랜잭션(TCL) 단위로 관리되며, 객체 구조 변경(DDL)은 자동 COMMIT되어 되돌릴 수 없습니다.
  • 제약조건은 데이터의 무결성과 일관성을 보장하는 최후의 보루입니다.

0개의 댓글