본문으로 바로 가기

프로그래밍기능사 · SQL 활용 과목

프로그래밍기능사 SQL 응용 개념 정리

중요도 ★★★★☆ · 25% (추정)

AI 작성 · 검수 완료

AI가 새로 쓴 글 가운데, 작성과 분리된 AI 검증(다시 읽고 사실·수치 확인)을 통과한 단원만 싣습니다. 틀린 곳을 발견하면 알려 주세요.

개요

이 단원은 기본 SELECT 문에 기능을 더해 자료를 묶고, 합치고, 다시 고르는 방법을 다룹니다. 집계 함수와 GROUP BY·HAVING, 여러 표를 잇는 조인, 질의 안의 질의인 하위 질의, 그리고 뷰와 인덱스가 중심입니다.

집계 함수는 여러 행을 하나의 값으로 모읍니다. COUNT 는 개수, SUM 은 합계, AVG 는 평균, MAX 와 MIN 은 가장 큰 값과 가장 작은 값을 구합니다. COUNT(*) 는 NULL 이 있는 행까지 모두 세지만, COUNT(열 이름) 은 그 열이 NULL 인 행을 빼고 셉니다. GROUP BY 는 같은 값끼리 묶고, HAVING 은 묶인 그룹에 조건을 겁니다. WHERE 는 묶기 전의 행에 조건을 건다는 점이 다릅니다.

조인은 공통된 열을 기준으로 두 표를 이어 하나의 결과로 만드는 것입니다. 하위 질의는 괄호 안에 넣은 SELECT 문으로, 그 결과를 바깥 질의의 조건으로 씁니다. 뷰는 실제 자료를 따로 저장하지 않고 SELECT 문을 이름 붙여 둔 가상의 표이고, 인덱스는 책의 찾아보기처럼 검색을 빠르게 해 주는 장치입니다.

핵심 개념

  • 집계 함수

    여러 행을 모아 값 하나를 구하는 함수입니다. COUNT(개수), SUM(합계), AVG(평균), MAX(최댓값), MIN(최솟값)이 있습니다.

    외우는 요령COUNT(*) 는 NULL 도 세고, COUNT(열) 은 NULL 을 뺍니다.

  • GROUP BY 와 HAVING

    GROUP BY 는 지정한 열의 값이 같은 행끼리 묶습니다. HAVING 은 묶인 그룹에 조건을 걸어 원하는 그룹만 남깁니다.

    외우는 요령그룹 조건은 HAVING, 행 조건은 WHERE.

  • 조인

    두 표에 공통으로 있는 열을 기준으로 행을 이어 붙여 하나의 결과를 만드는 것입니다. 양쪽에 모두 맞는 행만 남기는 것을 내부 조인이라고 합니다.

    외우는 요령학생 표와 학과 표를 '학과번호'로 잇는 모습을 떠올리세요.

  • 하위 질의

    다른 SQL 문 안에 괄호로 넣은 SELECT 문입니다. 안쪽 질의 결과를 바깥쪽 질의의 조건 등에 씁니다.

    외우는 요령괄호 안부터 먼저 풀면 됩니다.

  • 뷰와 인덱스

    뷰는 SELECT 문에 이름을 붙여 둔 가상의 표로, 자료를 따로 저장하지 않습니다. 인덱스는 검색 속도를 높이려고 만드는 찾아보기입니다.

    외우는 요령뷰는 '창문(view)'으로 표의 일부만 보는 것.

자주 나오는 포인트

  • WHERE 와 HAVING 의 차이를 묻는 문제를 대비하세요.
  • COUNT(*) 와 COUNT(열 이름) 의 결과 차이를 묻습니다.
  • 뷰는 실제 자료를 저장하지 않는 가상의 표라는 점을 확인합니다.
  • GROUP BY 가 들어간 SELECT 문의 결과 행 수를 묻는 문제가 나옵니다.

헷갈리는 것 비교: WHERE 와 HAVING

구분WHEREHAVING
조건을 거는 대상묶기 전의 각 행GROUP BY 로 묶은 그룹
집계 함수 사용조건에 쓰지 않음조건에 쓸 수 있음

대표 문제 3개

검수를 마친 예상문제 가운데 이 단원의 대표 문제입니다.

예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 1. GROUP BY 로 묶은 그룹에 조건을 걸 때 쓰는 절은?

  1. ① HAVING
  2. ② DISTINCT
  3. ③ WHERE
  4. ④ ORDER BY
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① HAVING

핵심: HAVING 은 그룹에, WHERE 는 개별 행에 조건을 건다

GROUP BY 로 묶은 뒤 'SUM(급여) >= 700' 처럼 그룹 단위로 조건을 걸 때는 HAVING 을 씁니다.

틀린 선지

  • ② DISTINCT: DISTINCT 는 중복된 값을 하나만 남깁니다.
  • ③ WHERE: WHERE 는 그룹으로 묶기 전에 개별 행을 거릅니다.
  • ④ ORDER BY: ORDER BY 는 결과를 정렬합니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 2. [성적 테이블] 번호 | 점수 1 | 80 2 | NULL 3 | 90 4 | NULL 5 | 70 위 테이블에 다음 SQL 을 실행한 결과는? SELECT COUNT(*), COUNT(점수) FROM 성적;

  1. ① 5, 5
  2. ② 3, 3
  3. ③ 5, 3
  4. ④ 3, 5
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ③ 5, 3

핵심: COUNT(*) 는 모든 행, COUNT(열) 은 NULL 을 빼고 센다

  1. COUNT(*): 행 전체 개수 → 5
  2. COUNT(점수): 점수가 NULL 이 아닌 행 → 80, 90, 70 → 3
  3. 결과: 5, 3

틀린 선지

  • ① 5, 5: COUNT(점수) 는 NULL 을 빼고 셉니다.
  • ② 3, 3: COUNT(*) 는 NULL 이 있는 행도 셉니다.
  • ④ 3, 5: 두 값이 바뀌었습니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 3. 하나 이상의 테이블에서 필요한 부분만 뽑아 만든 가상 테이블은?

  1. ① 뷰(VIEW)
  2. ② 인덱스(INDEX)
  3. ③ 트리거(TRIGGER)
  4. ④ 시퀀스(SEQUENCE)
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① 뷰(VIEW)

핵심: 뷰는 실제 데이터가 없는 가상 테이블

뷰는 실제로 데이터를 따로 저장하지 않고, 원래 테이블에서 필요한 부분만 보여 주는 가상 테이블입니다. 보여 줄 열을 제한해 보안에도 쓰입니다.

틀린 선지

  • ② 인덱스(INDEX): 인덱스는 검색을 빠르게 하려고 만드는 색인입니다.
  • ③ 트리거(TRIGGER): 트리거는 특정 사건이 일어나면 자동으로 실행되는 동작입니다.
  • ④ 시퀀스(SEQUENCE): 시퀀스는 번호를 차례로 만들어 주는 객체입니다.
이 단원 5문제 풀기 →