컴활 필기 1급 SQL 기초

컴활 1급 필기 3과목 네 번째 단원, SQL(Structured Query Language) 기초임. DDL · DML · DCL · TCL 분류와 SELECT 6절 + JOIN 4종 매칭이 핵심. 매회 2~3문제 단골이고, 특히 "SELECT가 DDL인가 DML인가" / "WHERE vs HAVING 차이" / "INNER vs OUTER JOIN" 함정이 매년 빠지지 않음.

SQL 명령 분류 + SELECT 6절 + JOIN 4종

SQL 명령 4 분류 -- DDL · DML · DCL · TCL ★★

SQL 명령은 목적에 따라 4가지 그룹으로 나뉨.

SQL 4 분류 - DDL·DML·DCL·TCL
DDL (Data Definition)
영문 데이터 정의
명령 CREATE, ALTER, DROP, TRUNCATE
용도 테이블·인덱스 구조 정의
DML (Data Manipulation)
영문 데이터 조작
명령 SELECT, INSERT, UPDATE, DELETE
용도 데이터 조회·수정
DCL (Data Control)
영문 데이터 제어
명령 GRANT, REVOKE
용도 권한 부여·회수
TCL (Transaction Control)
영문 트랜잭션 제어
명령 COMMIT, ROLLBACK, SAVEPOINT
용도 트랜잭션 확정·취소

DDL 예시

CREATE TABLE 학생 (
  학번 INT PRIMARY KEY,
  이름 VARCHAR(20) NOT NULL,
  학과 VARCHAR(30)
);

ALTER TABLE 학생 ADD COLUMN 입학년도 INT;

DROP TABLE 학생;

DML 예시

INSERT INTO 학생 VALUES (101, '홍길동', '컴퓨터');

SELECT 이름, 학과 FROM 학생 WHERE 학번 = 101;

UPDATE 학생 SET 학과 = '경영' WHERE 학번 = 101;

DELETE FROM 학생 WHERE 학번 = 101;

DCL 예시

GRANT SELECT, INSERT ON 학생 TO 사용자A;

REVOKE INSERT ON 학생 FROM 사용자A;

함정 1: SELECT는 DML조회도 데이터 조작에 포함됨. DDL이 아님. 매년 단골 함정.

함정 2: TRUNCATE vs DELETE 차이TRUNCATE는 DDL (전체 삭제·구조 초기화·롤백 X), DELETE는 DML (조건 삭제·롤백 O). DELETE 후 AUTO_INCREMENT는 유지, TRUNCATE 후 리셋.

함정 3: DROP vs DELETEDROP은 테이블 자체 삭제 (DDL), DELETE는 데이터만 삭제 (DML, 구조 유지).


SELECT 6절 -- 작성 순서와 처리 순서 ★★★

SELECT 문은 6개 절로 구성됨. 작성 순서DBMS 처리 순서다름. 매년 출제.

SELECT 6절 작성 순서 vs 처리 순서
SELECT
역할 출력할 선택
작성 순서 1
처리 순서 5
FROM
역할 테이블 지정
작성 순서 2
처리 순서 1
WHERE
역할 행 단위 조건
작성 순서 3
처리 순서 2
GROUP BY
역할 그룹화 기준
작성 순서 4
처리 순서 3
HAVING
역할 그룹 단위 조건
작성 순서 5
처리 순서 4
ORDER BY
역할 정렬
작성 순서 6
처리 순서 6

예시 — 학과별 학생 수 (10명 초과만, 인원 내림차순)

SELECT 학과, COUNT(*) AS 인원
FROM 학생
WHERE 입학년도 >= 2024
GROUP BY 학과
HAVING COUNT(*) > 10
ORDER BY 인원 DESC;

처리 흐름 (DBMS 내부)

  1. FROM 학생 — 테이블 가져옴
  2. WHERE 입학년도 >= 2024행 필터링
  3. GROUP BY 학과학과별 그룹
  4. HAVING COUNT(*) > 10그룹 필터링
  5. SELECT 학과, COUNT(*)최종 출력 열
  6. ORDER BY 인원 DESC정렬

WHERE vs HAVING ★

  • WHERE = 단위 조건 (GROUP BY )
  • HAVING = 그룹 단위 조건 (GROUP BY )
  • 집계함수 (COUNT, SUM, AVG 등) 는 HAVING에만 쓸 수 있음

함정 1: WHERE에 집계함수 사용 → 오류WHERE COUNT(*) > 5문법 오류. 집계는 HAVING에서.

함정 2: GROUP BY 없이 HAVING 사용 — 일부 DBMS는 허용하지만, 원칙적으로는 GROUP BY와 짝. 시험에선 짝으로 출제됨.

함정 3: ORDER BY 기본은 오름차순(ASC) — 내림차순은 DESC 명시. 매년 기본 정렬 방향 단골 출제.

함정 4: * (애스터리스크)전체 열을 의미. SELECT * FROM 학생 은 모든 열 조회.


JOIN 4종 -- INNER · LEFT · RIGHT · FULL OUTER ★

두 테이블을 공통 키로 연결하는 명령. 4종이 매년 출제됨.

JOIN 4종 다이어그램 - INNER·LEFT·RIGHT·FULL OUTER
JOIN
결과
INNER JOIN
양쪽 테이블에 공통으로 있는 행만
LEFT (OUTER) JOIN
왼쪽 전체 + 오른쪽 매칭되는 행 (없으면 NULL)
RIGHT (OUTER) JOIN
오른쪽 전체 + 왼쪽 매칭되는 행 (없으면 NULL)
FULL OUTER JOIN
양쪽 전체 + 매칭 안 되는 행은 NULL

예시 — 학생과 학과 JOIN

-- INNER JOIN (학과가 지정된 학생만)
SELECT 학생.이름, 학과.학과명
FROM 학생
INNER JOIN 학과 ON 학생.학과코드 = 학과.코드;

-- LEFT JOIN (모든 학생, 학과 없으면 NULL)
SELECT 학생.이름, 학과.학과명
FROM 학생
LEFT JOIN 학과 ON 학생.학과코드 = 학과.코드;

함정 1: OUTER 키워드 생략 가능LEFT JOIN = LEFT OUTER JOIN. 시험에선 둘 다 같은 것으로 나옴.

함정 2: Access는 FULL OUTER JOIN 미지원Access는 LEFT·RIGHT·INNER만. FULL OUTER는 UNION 으로 우회. 단, 시험 개념상 4종 모두 출제.

함정 3: CROSS JOIN (카티시안 곱) — 조건 없이 모든 조합을 만들어냄. 학생 × 학과 모든 쌍. 실무 X, 시험에 가끔 등장.


트랜잭션 -- COMMIT · ROLLBACK · SAVEPOINT

여러 SQL 문을 하나의 단위로 처리. 원자성(All or Nothing) 보장.

명령
동작
COMMIT
변경사항 확정 — DB 영구 반영
ROLLBACK
변경사항 취소 — 마지막 COMMIT 시점으로 복원
SAVEPOINT
부분 저장점 — 일부 작업만 롤백 가능

예시

BEGIN TRANSACTION;
UPDATE 계좌 SET 잔액 = 잔액 - 10000 WHERE 계좌번호 = 'A';
UPDATE 계좌 SET 잔액 = 잔액 + 10000 WHERE 계좌번호 = 'B';
COMMIT;  -- 둘 다 성공해야 확정
-- 중간 실패 시 ROLLBACK

함정 1: TRUNCATE 후 ROLLBACK 불가능 — TRUNCATE는 DDL 이므로 자동 COMMIT되어 롤백할 수 없음. DELETE는 롤백 가능.

함정 2: DDL 자동 COMMIT — CREATE·ALTER·DROP 같은 DDL은 실행 즉시 자동 COMMIT. 트랜잭션에 영향 받지 않음.

함정 3: 트랜잭션 ACID — Atomicity(원자성)·Consistency(일관성)·Isolation(고립성)·Durability(지속성). 4가지 다 묻는 보기 단골.


⚠️ 이 챕터 함정 BEST 7

  1. SELECT = DML — DDL 아님 (CREATE·ALTER·DROP이 DDL)
  2. TRUNCATE = DDL — 롤백 불가, AUTO_INCREMENT 리셋
  3. WHERE = 행 / HAVING = 그룹 — 집계함수는 HAVING에만
  4. SELECT 처리 순서 — FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
  5. ORDER BY 기본 = ASC — DESC는 명시
  6. OUTER 생략 가능 — LEFT JOIN = LEFT OUTER JOIN
  7. DDL 자동 COMMIT — DDL 실행 시 트랜잭션 자동 확정

✅ 셀프 체크 7

  • [ ] DDL·DML·DCL·TCL 4 분류와 대표 명령을 즉답?
  • [ ] SELECT 6절의 작성 순서와 처리 순서를 그릴 수 있나?
  • [ ] WHERE와 HAVING의 차이를 1줄로 설명?
  • [ ] INNER·LEFT·RIGHT·FULL OUTER JOIN 결과 매칭?
  • [ ] TRUNCATE와 DELETE의 차이 3가지?
  • [ ] ORDER BY 기본 정렬 방향과 DESC 명시 방법?
  • [ ] COMMIT·ROLLBACK·SAVEPOINT 동작?

한눈에 정리

SQL 기초 한눈 요약 - 4분류 + 6절 + JOIN
영역
핵심
4 분류
DDL (CREATE·ALTER·DROP) / DML (SELECT·INSERT·UPDATE·DELETE) / DCL (GRANT·REVOKE) / TCL (COMMIT·ROLLBACK)
SELECT 6절
SELECT·FROM·WHERE·GROUP BY·HAVING·ORDER BY
처리 순서
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
WHERE vs HAVING
행 단위 vs 그룹 단위 / 집계함수는 HAVING
JOIN 4종
INNER · LEFT · RIGHT · FULL OUTER
트랜잭션
COMMIT (확정) · ROLLBACK (취소) · SAVEPOINT (부분)

📝 기출 변형 5선

5개년 컴활 1급 필기 기출 패턴 기반. 각 문제 카드 아래 정답 확인 펼쳐 보기.

문 1. SQL 명령 분류

q01
1번 정답 확인

정답: ④

CREATE는 DDL (Data Definition Language). 테이블·인덱스 구조 정의 명령. DML은 데이터 조작 으로 SELECT·INSERT·UPDATE·DELETE 4종. 매년 단골 — SELECT가 DML이라는 점도 함께 출제됨.


문 2. WHERE vs HAVING

q02
2번 정답 확인

정답: ③

집계함수는 WHERE에 쓸 수 없음. WHERE는 행 필터링 단계라 아직 그룹이 만들어지지 않아 집계가 불가능. 집계함수는 HAVING에서만 사용 가능 (GROUP BY 이후). ①②④ 모두 옳음. 매년 단골 함정.


문 3. SELECT 처리 순서

q03
3번 정답 확인

정답: ②

DBMS 처리 순서는 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. 작성 순서와 다름 (작성은 SELECT부터). 테이블 가져온 후 행 필터 → 그룹화 → 그룹 필터 → 출력 열 선택 → 정렬. 매년 출제.


문 4. JOIN 종류

q04
4번 정답 확인

정답: ②

LEFT OUTER JOIN = 왼쪽 전체 + 오른쪽 매칭. 매칭되는 행이 없으면 오른쪽 컬럼이 NULL로 채워짐. ① INNER JOIN, ③ RIGHT OUTER 비슷하지만 왼쪽 무시는 X, ④ CROSS JOIN. OUTER 키워드는 생략 가능 (LEFT JOIN = LEFT OUTER JOIN).


문 5. TRUNCATE vs DELETE

q05
5번 정답 확인

정답: ②

정반대로 옳음. TRUNCATE는 DDL이라 자동 COMMIT 되어 롤백 불가, DELETE는 DML이라 ROLLBACK 가능. 보기는 둘을 바꿔서 함정. ①③④ 모두 옳음. TRUNCATE 후 AUTO_INCREMENT 리셋, DELETE 후 유지가 또 다른 차이.


🔗 시리즈 링크


🔥 jit.camp · 컴활 1급 합격 가이드 · 2026 최신 출제 반영