자격증 시험준비

[SQLD 요약노트] 2과목: SQL 기본 – 핵심 내용 총정리

노랑별이 2025. 5. 10. 19:44
반응형

 

안녕하세요! 오늘은 SQLD 시험의 2과목 중 첫 번째 파트인 'SQL 기본'을 공부하고 핵심 내용을 정리해봤습니다. SQL 기본 파트는 실무에서도 매우 자주 쓰이는 만큼, 개념과 흐름을 꼭 정확히 이해하고 넘어가는 것이 중요합니다.


1. 관계형 데이터베이스와 SQL 개요

  • DBMS: 데이터베이스를 관리하는 시스템
  • RDBMS: 관계형 DBMS (예: Oracle, MySQL 등)
  • SQL(Structured Query Language): 관계형 데이터베이스를 다루는 표준 언어
분류
용도
주요 명령어
DDL
(데이터 정의어)
테이블 생성, 변경, 삭제
CREATE, ALTER, DROP, RENAME, TRUNCATE
DML
(데이터 조작어)
데이터 조회, 삽입, 수정, 삭제
SELECT, INSERT, UPDATE, DELETE
DCL
(데이터 제어어)
권한 관리
GRANT, REVOKE
TCL
(트랜잭션 제어어)
트랜잭션 제어
COMMIT, ROLLBACK, SAVEPOINT

SELECT는 DML에 속하지만, 때때로 DQL(데이터 조회어)로 따로 분류되기도 함.


2. SELECT 문 구조 & 실행 순서

SELECT 문은 SQL에서 가장 기본이자 중요한 명령

SELECT 컬럼명      -- [5] 조회하고자 하는 컬럼을 선택
FROM 테이블명      -- [1] 어떤 테이블에서 데이터를 가져올지 결정
WHERE 조건        -- [2] 조건에 맞는 행을 필터링
GROUP BY 컬럼명    -- [3] 데이터를 그룹으로 묶음
HAVING 그룹조건    -- [4] 그룹에 대한 조건을 필터링
ORDER BY 컬럼명    -- [6] 정렬 기준 설정
 

👉 암기 팁: 공격수(FW)가해써오!

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

  • AS 별칭 생략 가능
  • WHERE에서는 SELECT에서 정의한 별칭 사용 불가

3. SQL 함수 정리

함수는 입력(Input)에 대한 특정 연산을 수행한 후, 결과(Output)를 반환하는 약속된 코드 블록

 

함수 유형

  • 단일행 함수: 입력 1개 → 결과 1개
  • 다중행 함수: 여러 값 → 하나의 결과 (예: 집계함수)

 

주요 함수

구분
특징
예시
문자함수
문자열 데이터는 작은 따옴표(' ')로 표현, 숫자는 그대로 사용
UPPER(), LOWER(), LENGTH(), SUBSTR(), TRIM(), REPLACE() 등
숫자함수
숫자 계산
ROUND(), CEIL(), FLOOR(), ABS(), TRUNC(), MOD() 등
날짜함수
날짜 연산
SYSDATE, CURRENT_DATE, EXTRACT, ADD_MONTHS(), MONTHS_BETWEEN()
변환함수
데이터형 변환
TO_CHAR(), TO_DATE(), TO_NUMBER()
집계함수
그룹 연산 (NULL 제외)
WHERE절 사용 불가
COUNT(), SUM(), AVG(), MIN(), MAX()
NULL 함수
NULL 처리
NVL(), NULLIF(), COALESCE()
조건 함수
조건에 따라 값을 분기 처리할 때 사용
CASE WHEN, DECODE()
(DECODE는 Oracle 전용)
-- CASE 문 예시
CASE 
  WHEN 조건1 THEN 결과1
  WHEN 조건2 THEN 결과2
  ELSE 결과3
END

-- DECODE 함수 예시 (Oracle 전용)
DECODE(컬럼, 값1, 반환1, 값2, 반환2, ..., 기본값)
 

 


4. WHERE 절 & 조건 연산자

WHERE 절은 특정 조건에 부합하는 튜플(행), 데이터들을 조회할 때 사용

  • 비교 연산자: =, !=, <>, <, >, <=, >=
  • 논리 연산자: AND, OR, NOT
  • LIKE연산자
    • 와일드카드 문자
      • % : 0개 이상의 임의 문자열
      • _ : 1개의 임의의 문자
-- 이름이 '김'으로 시작하는 모든 사람
SELECT * FROM 직원 WHERE 이름 LIKE '김%';

-- 이름이 3글자이고 가운데 글자가 '지'인 사람
SELECT * FROM 직원 WHERE 이름 LIKE '_지_';
 
  • NULL 비교: IS NULL, IS NOT NULL

※ =NULL 혹은 !=NULL 사용은 오류가 발생

  • 연산자 우선순위:

괄호() > 산술(*, /, %) > 비교(=, !=, <>, <, >, <=, >=) > 논리 (NOT → AND → OR)


 

5. GROUP BY & HAVING 절

  • GROUP BY: 그룹 단위로 데이터 집계
SELECT 부서, COUNT(*) 직원수, AVG(급여) 평균급여
FROM 직원
GROUP BY 부서;
 
  • HAVING: 집계된 결과 조건 필터
    • WHERE은 개별 행(튜플) 필터
    • HAVING은 그룹 조건 필터
SELECT 부서, COUNT(*) 직원수, AVG(급여) 평균급여
FROM 직원
GROUP BY 부서
HAVING AVG(급여) > 3000000;
 
  • 집계 함수는 WHERE에서는 사용 불가, HAVING에서는 가능
  • GROUP BY 절은 리소스 소모가 크므로, WHERE 절로 먼저 필터링 후 수행하는 것이 성능상 유리
 

6. ORDER BY 절

  • 결과 정렬을 위한 절 (기본: ASC 오름차순 / DESC 내림차순)
SELECT 이름, 급여, 보너스
FROM 직원
ORDER BY 급여 DESC, 보너스 ASC;
 
  • 컬럼명, 컬럼 번호, 별칭으로 정렬 가능
  • ORDER BY는 SELECT, GROUP BY보다 나중에 수행되므로 별칭(Alias)와 집계함수 사용 가능
  • 데이터 형에 따른 정렬 순서 (오름차순 기준)
    • 숫자형: 작은 수 → 큰 수
    • 문자형: 사전 순
    • 날짜형: 과거 → 미래
    • NULL 정렬: Oracle은 NULL을 최댓값으로, SQL Server는 NULL을 최솟값으로 처리

7. 조인(Join)

두 개 이상의 테이블을 연결하여 데이터를 조회

조인의 종류

조인 종류
설명
EQUI JOIN
Equal(=) 연산자(등호)를 사용해서 같은 값인 경우 조인
NON-EQUI JOIN
비교 연산자(BETWEEN, >, <, !=)를 사용하는 조인

표준 조인

DBMS마다 조인 방식이 다르므로, ANSI/ISO SQL 표준으로 정립한 조인

조인 종류
설명
INNER JOIN
JOIN 조건에서 동일한 값이 있는 행만 반환
  • USING 조건절: 컬럼명이 같은 컬럼들에 대해서 선택적으로 조인 가능
  • ON 조건절: 컬럼명이 다르더라도 조인 조건을 사용 가능
JOIN만 단독으로 사용 시 INNER JOIN을 의미하며, NULL 값은 조회 대상이 아님.
NATURAL JOIN
두 테이블 간에 동일한 이름을 갖는 모든 컬럼에 대해 EQUI JOIN을 수행
CROSS JOIN
두 테이블의 모든 행을 조합해서 출력 (카테시안 곱)
OUTER JOIN
한쪽 테이블에만 데이터 있어도 출력
  • LEFT OUTER JOIN: 좌측 테이블이 기준이 되어 결과 생성
  • RIGHT OUTER JOIN: 우측 테이블이 기준이 되어 결과 생성
  • FULL OUTER JOIN: 좌, 우측 테이블의 모든 데이터를 활용하여 결과 생성
# 1. INNER JOIN
-- USING 예시
SELECT e.사원명, d.부서명
FROM 직원 e INNER JOIN 부서 d
USING (부서코드);

-- ON 예시
SELECT e.사원명, d.부서명
FROM 직원 e INNER JOIN 부서 d
ON e.부서코드 = d.부서코드;

# 2. NATURAL JOIN
SELECT e.사원명, d.부서명
FROM 직원 e NATURAL JOIN 부서 d;

# 3. CROSS JOIN
SELECT e.사원명, d.부서명
FROM 직원 e CROSS JOIN 부서 d;

# 4. OUTER JOIN
-- LEFT OUTER JOIN 예시
SELECT e.사원명, d.부서명
FROM 직원 e LEFT OUTER JOIN 부서 d
ON e.부서코드 = d.부서코드;
 
 

오늘의 학습 핵심 요약

  • SQL 문장 구조를 익히고 실행 순서를 이해하자
  • 함수는 단일행 vs 다중행으로 구분해서 외우자
  • SQL 문장 구조와 실행 순서(FW가해써오! - FWGHSO)를 기억하자
  • GROUP BY와 HAVING은 꼭 비교해서 암기!
  • JOIN은 INNER, OUTER, NATURAL 구분 포인트 기억하기

마무리하며

오늘은 SQLD 2과목의 첫 번째 파트인 SQL 기본에 대해 정리해봤습니다. 이론적인 부분도 중요하지만, 실제 쿼리를 작성해보면서 개념을 확실히 이해하는 것이 좋습니다.

SQLD 시험에서는 이 파트에서 문법 오류 찾기나 실행 결과 예측하기 같은 문제가 자주 출제되므로, 각 절의 실행 순서와 특징을 정확히 알고 있어야 합니다.

다음에는 2과목의 나머지 부분인 SQL 활용과 관리 구문에 대해 정리해 볼 예정입니다. 함께 공부해요 😊

 

반응형