TIL - 20250821

juni·2025년 8월 21일

TIL

목록 보기
101/315

0821 SQLD 2장 - SQL 기본 및 활용


✅ 1. SELECT 문의 기본 구조와 실행 순서

  • SQL은 원하는 데이터를 효율적으로 조회, 조작, 정의, 제어하기 위한 언어입니다. SELECT 문은 데이터 조회의 핵심입니다.

➕ SQL 절의 논리적 실행 순서

  • SQL 문법 순서와 실제 실행 순서는 다릅니다. 이 순서를 이해해야 복잡한 쿼리를 정확하게 작성할 수 있습니다.

FROMWHEREGROUP BYHAVINGSELECTORDER BY

  1. FROM: 조회할 테이블을 지정합니다. (JOIN 포함)
  2. WHERE: FROM 절의 결과를 바탕으로 행(Row) 단위의 조건을 필터링합니다.
  3. GROUP BY: WHERE 절까지 필터링된 데이터를 특정 컬럼 기준으로 그룹화합니다.
  4. HAVING: GROUP BY로 생성된 그룹에 대한 조건을 필터링합니다. (집계 함수 사용)
  5. SELECT: 최종적으로 조회할 컬럼을 지정하고 계산을 수행합니다.
  6. ORDER BY: 최종 결과 집합을 지정된 기준으로 정렬합니다.

✅ 2. 함수 (Functions)

  • SQL 함수는 데이터를 가공하고 계산하기 위해 사용되며, 단일 행 함수와 집계 함수로 나뉩니다.
구분설명주요 함수
단일 행 함수각 행(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;

✅ 3. JOIN

  • JOIN은 두 개 이상의 테이블을 공통된 컬럼을 기준으로 연결하여 하나의 결과 집합으로 만드는 핵심적인 연산입니다.
JOIN 종류설명
INNER JOIN두 테이블에 모두 일치하는 데이터만 반환합니다. (교집합)
OUTER JOIN한쪽 테이블에는 데이터가 있고 다른 쪽에는 없을 때도 결과를 반환합니다.
LEFT JOIN: 왼쪽 테이블 기준, 오른쪽은 NULL 처리.
RIGHT JOIN: 오른쪽 테이블 기준, 왼쪽은 NULL 처리.
FULL JOIN: 양쪽 모두 기준, 없는 쪽은 NULL 처리.
CROSS JOIN두 테이블의 모든 행을 조합하여 반환합니다. (곱집합, Cartesian Product)
SELF JOIN하나의 테이블을 별칭(Alias)을 통해 자기 자신과 조인합니다.

✅ 4. 서브쿼리 (Subquery)

  • 서브쿼리는 다른 SQL 문 내부에 포함된 SELECT 문으로, 복잡한 조회를 간결하게 만들어 줍니다.
위치종류설명
SELECT스칼라 서브쿼리반드시 하나의 값(1행 1열)만 반환해야 합니다.
FROM인라인 뷰서브쿼리의 결과를 하나의 테이블처럼 사용합니다.
WHERE, HAVING중첩 서브쿼리조건절에서 비교 값으로 사용됩니다. (단일/다중 행, 다중 열)
  • 연관/비연관 서브쿼리:
    • 비연관(Non-correlated): 외부 쿼리와 독립적으로 한 번만 실행됩니다.
    • 연관(Correlated): 외부 쿼리의 각 행마다 반복적으로 실행되어 성능에 영향을 줄 수 있습니다.

✅ 5. 데이터 조작어(DML)와 트랜잭션 제어어(TCL)

  • DML (Data Manipulation Language): 테이블의 데이터를 조작(추가, 수정, 삭제)하는 명령어입니다.

    • INSERT: 새 데이터 행을 추가합니다.
    • UPDATE: 기존 데이터 행을 수정합니다.
    • DELETE: 기존 데이터 행을 삭제합니다.
  • TCL (Transaction Control Language): DML로 수행된 작업을 논리적 단위인 트랜잭션으로 묶어 제어하는 명령어입니다.

    • COMMIT: 트랜잭션의 모든 변경 사항을 데이터베이스에 영구 저장합니다.
    • ROLLBACK: 트랜잭션의 모든 변경 사항을 취소하고 이전 상태로 되돌립니다.

✅ 6. 데이터 정의어(DDL)와 데이터 제어어(DCL)

  • DDL (Data Definition Language): 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 구조를 정의하는 명령어입니다.

    • CREATE: 객체를 생성합니다.
    • ALTER: 객체의 구조를 수정합니다.
    • DROP: 객체를 완전히 삭제합니다.
    • TRUNCATE: 테이블의 모든 데이터를 삭제합니다. (DELETE보다 빠르며, ROLLBACK 불가)
    • ※ DDL 명령어는 실행 즉시 자동 COMMIT 됩니다.
  • DCL (Data Control Language): 사용자에게 데이터베이스 객체에 대한 접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 명령어입니다.


📌 요약

  • SQL 쿼리는 FROM부터 ORDER BY까지 정해진 논리적 순서에 따라 실행됩니다.
  • JOIN서브쿼리는 관계형 데이터베이스에서 원하는 데이터를 추출하기 위한 가장 핵심적인 도구입니다.
  • 데이터 조작(DML)은 트랜잭션(TCL) 단위로 제어되어 데이터의 일관성을 보장합니다.
  • 데이터베이스 객체의 구조는 DDL로 정의하고, 사용자의 접근 권한은 DCL로 관리합니다.

0개의 댓글