모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

12강 / 전체 13강

SQL 기초 — DDL과 DML

6분 읽기 조회 1

DDL·DML 전체 구문과 SELECT 절 실행 순서를 이해하고, JOIN 5종의 차이를 실제 결과 비교표로 완벽히 정리합니다.

📋 DDL — 데이터 정의 언어

이 섹션에서는 테이블 구조를 정의·수정·삭제하는 DDL(Data Definition Language) 명령어를 살펴보겠습니다.

DDL(Data Definition Language)은 데이터베이스의 구조를 정의하는 언어입니다. DDL 명령어는 자동으로 COMMIT되어 ROLLBACK이 불가능합니다. 이 점이 DML과의 큰 차이입니다.

CREATE TABLE의 주요 제약조건은 다음과 같습니다. PRIMARY KEY: 기본키, NULL·중복 불가. UNIQUE: 유일키, NULL은 허용하나 중복 불가. NOT NULL: NULL 값 불가. CHECK: 특정 조건을 만족하는 값만 허용. DEFAULT: 값 미입력 시 기본값 지정. FOREIGN KEY ~ REFERENCES: 외래키로 다른 테이블의 기본키 참조.

ALTER TABLE은 기존 테이블 구조를 변경합니다. ADD COLUMN으로 열 추가, MODIFY COLUMN(또는 ALTER COLUMN)으로 열 수정, DROP COLUMN으로 열 삭제, ADD CONSTRAINT로 제약조건 추가가 가능합니다.

명령어기능특징
CREATE테이블·인덱스·뷰 생성자동 COMMIT
ALTER테이블 구조 변경자동 COMMIT
DROP테이블·인덱스·뷰 삭제구조+데이터 모두 삭제, 자동 COMMIT
TRUNCATE테이블 데이터 전체 삭제구조는 유지, 자동 COMMIT, ROLLBACK 불가

TRUNCATE vs DELETE 비교: TRUNCATE는 DDL로 자동 COMMIT되어 ROLLBACK 불가능하며 훨씬 빠릅니다. DELETE는 DML로 트랜잭션 내에서 ROLLBACK 가능하며 WHERE 조건으로 일부만 삭제할 수 있습니다. 기출에서 가장 자주 나오는 비교 문제입니다.

🔍 SELECT — 절 실행 순서 완전 정복

이 섹션에서는 SELECT 문의 각 절이 실행되는 순서를 살펴보겠습니다. 이 순서는 기출에서 반복 출제되는 핵심입니다.

SELECT 문을 작성하는 순서(문법 순서)와 실제 데이터베이스 엔진이 실행하는 순서(실행 순서)는 다릅니다. 실행 순서를 모르면 HAVING과 WHERE의 차이, GROUP BY의 위치를 혼동하게 됩니다.

실행 순서절(Clause)역할
1FROM대상 테이블 지정
2WHERE행 단위 필터링 (집계 전)
3GROUP BY그룹화
4HAVING그룹 단위 필터링 (집계 후)
5SELECT출력할 열 선택·집계함수 실행
6ORDER BY정렬

암기법: "FROM 왔 GROUP 하면 SELECT ORDER" — FROM·WHERE·GROUP BY·HAVING·SELECT·ORDER BY. "프왜그해셀오"로 줄여 외웁니다.

HAVING vs WHERE: WHERE는 집계 함수를 사용할 수 없습니다. 집계 결과를 조건으로 걸 때는 HAVING을 사용해야 합니다. "부서별 평균 급여가 3000 이상인 부서"는 HAVING AVG(salary) >= 3000으로 작성합니다.

📊 집계 함수와 NULL 처리

이 섹션에서는 GROUP BY와 함께 사용하는 집계 함수와 NULL 값 처리 방식을 살펴보겠습니다.

집계 함수는 여러 행의 값을 하나의 결과로 요약합니다. NULL 처리 방식이 함수마다 다르므로 주의가 필요합니다.

함수역할NULL 처리
COUNT(*)전체 행 수NULL 행도 포함
COUNT(열)해당 열의 행 수NULL 제외
SUM(열)합계NULL 무시
AVG(열)평균NULL 무시 (분모에서도 제외)
MAX(열)최댓값NULL 무시
MIN(열)최솟값NULL 무시

기출 함정: 5개 행 중 2개가 NULL인 열의 AVG = (나머지 3개 합계) / 3. NULL을 포함하여 5로 나누지 않습니다. COUNT(*)=5이지만 COUNT(열)=3입니다. 이 차이를 계산하는 문제가 자주 출제됩니다.

🔀 JOIN 5종 — 결과 비교표

이 섹션에서는 SQL의 JOIN 5가지 종류와 각각의 결과 차이를 살펴보겠습니다.

두 테이블 학생(학번·이름)과 수강(학번·과목)이 있다고 가정합니다. 학생 테이블: (101,홍길동), (102,이순신), (103,강감찬). 수강 테이블: (101,수학), (102,영어), (104,과학).

JOIN 종류결과 행NULL 발생설명
INNER JOIN양쪽 모두 일치하는 행만없음(101,홍길동,수학), (102,이순신,영어) → 2행
LEFT OUTER JOIN왼쪽 테이블 전체 + 오른쪽 일치오른쪽에 NULL홍길동·이순신·강감찬 포함, 강감찬의 과목=NULL → 3행
RIGHT OUTER JOIN오른쪽 테이블 전체 + 왼쪽 일치왼쪽에 NULL수학·영어·과학 포함, 과학의 이름=NULL → 3행
FULL OUTER JOIN양쪽 테이블 모두 포함양쪽에 NULL 가능모든 행 포함 → 4행
CROSS JOIN모든 조합 (교차곱)없음3×3=9행 (조건 없이 모든 조합)

NATURAL JOIN은 두 테이블에서 이름이 같은 열을 자동으로 조인 조건으로 사용합니다. ON 조건 없이 공통 열 이름으로 자동 매칭됩니다. USING 절은 조인에 사용할 열 이름을 명시적으로 지정합니다.

암기법: "INNER=교집합, LEFT=왼쪽 전체, RIGHT=오른쪽 전체, FULL=합집합, CROSS=교차곱". OUTER는 생략 가능하므로 LEFT JOIN = LEFT OUTER JOIN입니다.

기출 함정: "INNER JOIN에서는 NULL 행이 발생할 수 있다" → 틀림. INNER JOIN은 양쪽 모두 일치하는 행만 반환합니다. "CROSS JOIN은 ON 조건을 사용한다" → 틀림. CROSS JOIN은 조건 없이 모든 조합을 반환합니다.

📌 12강 핵심 요약과 13강 예고

이 섹션에서는 12강 핵심 내용을 압축 정리합니다.

DDL 4명령: CREATE·ALTER·DROP(구조+데이터)·TRUNCATE(데이터만, 빠름) — 모두 자동 COMMIT. TRUNCATE vs DELETE: TRUNCATE는 ROLLBACK 불가, DELETE는 ROLLBACK 가능.

SELECT 실행 순서: "프왜그해셀오" — FROM·WHERE·GROUP BY·HAVING·SELECT·ORDER BY. HAVING은 집계 후 조건, WHERE는 집계 전 조건. COUNT(*)는 NULL 포함, COUNT(열)은 NULL 제외. AVG는 NULL 제외하고 계산.

JOIN: INNER=교집합, LEFT=왼쪽전체, RIGHT=오른쪽전체, FULL=합집합, CROSS=교차곱(조건없음).

다음 13강에서는 SQL 심화 — 서브쿼리·뷰·인덱스·트랜잭션 — 상관 서브쿼리, 뷰의 특성, B-Tree 인덱스, ACID 속성, 격리수준 4단계를 완벽히 정리합니다.

관련 주제

  • CREATE ALTER DROP
  • 제약조건 PRIMARY KEY
  • SELECT WHERE GROUP BY HAVING
  • 집계 함수 COUNT SUM AVG
  • INNER LEFT RIGHT FULL OUTER JOIN
  • CROSS JOIN
  • 자격증
  • 자격증 강의
  • 정보처리기사 필기 25강 — 핵심이론·기출 완전정복
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

정보처리기사 필기 25강 — 핵심이론·기출 완전정복

이 강의가 속한 시리즈는 총 13강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...