alt

[New!! 2026] (2과목) SQLD 완벽 요약강의 | 요약강의 | SQL 기본 및 활용 | 최단시간 최대효율👍 | 핵심 요약노트 | SQL개발자

2026년 11월 9일 공유

SQLD 데이터베이스와 SQL 핵심 정리

개요

  • 콘텐츠 유형: 강의
  • 데이터베이스 관리 시스템(DBMS)의 역할과 관계형 DBMS의 기본 개념을 살펴보고, SQLD 시험에 자주 나오는 SQL 문법과 처리 원리를 정리한다.
  • 시험 대비에서는 문법을 암기하는 데 그치지 않고 SQL을 직접 해석하고, 조건에 맞는 결과를 추론하는 연습이 중요하다.
  • 시험 범위는 오라클 중심이며, SQL Server와의 주요 차이도 함께 알아둘 필요가 있다.

핵심 개념

  • DBMS: 데이터베이스를 관리하고 사용자가 데이터에 접근할 수 있도록 환경을 제공하는 시스템.
  • 관계형 DBMS(RDBMS): 데이터를 테이블로 관리하며, 테이블 간 관계를 기본키와 외래키로 표현한다.
  • SQL: 관계형 데이터베이스에 접근하고 데이터를 정의·조작·제어하는 표준 언어.
  • 관계 대수: SQL의 이론적 기반이 되는 수학적 연산 체계. 예를 들어 선택은 행을, 프로젝션은 열을 추출하는 개념과 연결된다.
  • SELECT 처리 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
  • 작성 순서와 처리 순서는 다르므로 구분해야 한다.
  • 강의에서는 처리 순서를 FWGHSO로 암기하는 방법을 소개한다.
  • 행과 열: 열은 컬럼·필드·속성, 행은 튜플·로우·레코드라고도 한다.
  • 함수: 입력 하나마다 결과 하나를 반환하면 단일행 함수, 여러 행을 입력받아 결과 하나를 반환하면 다중행 함수다. 집계 함수는 다중행 함수에 해당한다.
  • 그룹 처리와 윈도우 함수의 차이
  • GROUP BY는 행을 그룹화해 결과 행 수를 줄인다.
  • 윈도우 함수는 OVER를 사용하며, 원래 행 수를 유지하면서 각 행에 계산 결과를 덧붙인다.

상세 정리

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

  • 대표적인 RDBMS에는 오라클, SQL Server, MySQL 등이 있다. SQLD 시험은 특히 오라클 문법에 비중을 두며 SQL Server와의 차이도 다룬다.
  • SQL 명령은 크게 **데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL), 트랜잭션 제어어(TCL)**로 구분한다.
  • 관계 대수는 SQL의 이론적 기초다. 선택은 행 추출, 프로젝션은 열 추출의 개념과 관련된다.

2. SELECT와 별칭

  • SELECT는 데이터를 조회하는 기본 명령이다.
  • SELECT *는 전체 열을 조회하며, 필요한 열만 지정하면 해당 열만 출력한다.
  • DISTINCT는 중복 결과를 제거한다.
  • AS를 이용해 열이나 테이블에 별칭을 붙일 수 있으며, AS는 생략할 수 있다.
  • 별칭은 일반적으로 WHERE에서 사용할 수 없다. WHERE가 SELECT보다 먼저 처리되기 때문이다. 반면 ORDER BY에서는 SELECT 이후 처리되므로 열 별칭을 사용할 수 있다.
  • 별칭에 공백이나 특수 문자가 필요한 경우 인용부호를 사용할 수 있다. 예약어를 별칭으로 쓰는 것은 주의해야 한다.
  • 문자열 연결 방식은 DBMS마다 다르다.
  • 오라클: || 또는 CONCAT
  • SQL Server: +

3. 함수

  • 오라클에서는 테이블 없이 함수 결과를 확인할 때 더미 테이블 DUAL을 사용할 수 있다.
  • 문자 함수: 문자열 추출, 공백·지정 문자 제거 등을 수행한다. SUBSTR는 시작 위치와 길이를 지정해 문자열을 추출하며, 음수 시작 위치는 뒤에서부터 센다. TRIM은 양쪽 끝의 공백 또는 지정 문자를 제거한다.
  • 숫자 함수
  • ROUND: 반올림
  • TRUNC: 지정 자릿수 아래를 버림
  • FLOOR: 바닥값
  • CEIL: 천장값
  • 날짜 함수: 오라클의 현재 날짜 함수는 SYSDATE, SQL Server에서는 GETDATE()를 사용한다.
  • 변환 함수: 숫자·문자·날짜 간 변환에 TO_CHAR, TO_DATE, TO_NUMBER 등을 사용한다. 데이터의 겉모양이 같더라도 자료형에 따라 비교와 연산 결과가 달라진다.
  • 집계 함수: COUNT, SUM, AVG, MIN, MAX 등이 있다.
  • COUNT(*)는 전체 행 수를 센다.
  • COUNT(열)은 해당 열의 NULL을 제외하고 센다.
  • 집계 함수는 기본적으로 NULL을 제외해 계산한다.
  • 집계 함수는 일반적인 WHERE 조건에서 직접 사용할 수 없으며, 그룹 조건은 HAVING으로 지정한다.
  • NULL 처리 함수
  • NVL 등은 값이 NULL일 때 대체값을 반환한다.
  • NULLIF는 두 값이 같으면 NULL, 다르면 첫 번째 값을 반환한다.
  • COALESCE는 왼쪽부터 확인해 처음으로 NULL이 아닌 값을 반환한다.
  • NULL 비교에는 = NULL이 아니라 IS NULL, IS NOT NULL을 사용한다.
  • 조건 분기: CASE와 오라클의 DECODE로 조건에 따른 값을 반환할 수 있다.

4. 조건, 그룹화, 정렬

  • WHERE는 행 단위로 조건을 적용한다. 비교 연산자, AND·OR, IN, BETWEEN, LIKE 등을 사용할 수 있다.
  • BETWEEN A AND B는 양 끝값을 포함한다.
  • LIKE의 와일드카드:
  • %: 문자가 0개 이상
  • _: 정확히 한 문자
  • %와 _ 자체를 문자로 검색하려면 ESCAPE를 지정한다.
  • GROUP BY는 지정한 열을 기준으로 그룹화하며, 그룹별 집계 결과를 구할 때 사용한다.
  • HAVING은 그룹 단위 조건을 지정한다. WHERE는 그룹화 전에 행을 거르고, HAVING은 그룹화 이후 그룹을 거른다. 먼저 불필요한 행을 WHERE에서 줄이면 효율에 유리할 수 있다.
  • ORDER BY는 결과를 정렬하며 처리 순서상 마지막에 수행된다. 기본은 오름차순이며, 내림차순은 DESC로 지정한다. 여러 정렬 기준을 함께 지정할 수 있고 열 번호로도 정렬할 수 있다.
  • NULL의 기본 정렬 위치는 DBMS별로 다를 수 있다. 강의에서는 오라클과 SQL Server의 차이를 시험 유의사항으로 강조한다.

5. 조인과 서브쿼리

  • 조인은 여러 테이블의 데이터를 연결해 하나의 결과로 조회한다.
  • 동등 조인: 같은 값끼리 연결한다.
  • 비동등 조인: 범위 조건 등 동등 비교가 아닌 조건으로 연결한다.
  • 표준 조인에서는 JOIN ... ON 또는 공통 열을 이용하는 USING을 쓸 수 있다.
  • 자연 조인은 이름이 같은 열을 자동으로 기준 삼는다.
  • 교차 조인은 모든 행의 조합을 반환한다.
  • 외부 조인은 기준 테이블의 미일치 행도 포함한다. 왼쪽·오른쪽·전체 외부 조인이 있다.
  • 서브쿼리는 SQL 문 안에 포함된 다른 SQL 문이다. 반환 결과가 단일 값인지, 여러 행·열인지에 따라 적절한 비교 연산자와 함께 사용한다.
  • IN, ANY, ALL, EXISTS 등의 연산자를 활용할 수 있다.
  • 인라인 뷰는 FROM 절에 위치한 서브쿼리다. 질의 결과를 논리적인 테이블처럼 다루며, 실제 데이터가 별도로 저장되는 테이블과는 다르다. 뷰는 데이터 노출을 제한하는 보안성, 구조 변경에 대한 독립성, 재사용 편의성을 제공할 수 있다.

6. 집합 연산과 그룹 함수

  • 집합 연산자는 여러 조회 결과를 결합한다.
  • UNION ALL: 중복을 유지한다.
  • UNION: 중복을 제거한다.
  • INTERSECT: 교집합
  • MINUS: 차집합(오라클)
  • 집합 연산을 하려면 각 조회 결과의 열 개수와 자료형이 호환되어야 한다.
  • 그룹 함수:
  • ROLLUP: 지정한 열의 계층적 소계와 총계를 계산한다. 열 순서가 결과에 영향을 준다.
  • CUBE: 지정한 열의 가능한 조합별 집계 결과를 계산한다.
  • GROUPING SETS: 집계할 그룹 조합을 직접 지정한다.

7. 윈도우 함수

  • OVER와 함께 사용하며, 행을 그룹으로 축약하지 않고 각 행에 계산 결과를 반환한다.
  • 순위 함수에는 ROW_NUMBER, RANK, DENSE_RANK가 있다. 동순위 처리와 다음 순위 부여 방식이 서로 다르다.
  • 집계 함수도 윈도우 함수로 사용할 수 있다. PARTITION BY는 계산 범위를 그룹으로 나누고, ORDER BY는 계산 순서를 지정한다.
  • LAG와 LEAD는 이전 행·다음 행의 값을 가져오며, FIRST_VALUE와 LAST_VALUE는 범위 내 첫 값·마지막 값을 반환한다.
  • 윈도우 프레임 범위는 ROWS와 RANGE로 지정한다.
  • ROWS는 행 위치 기준이다.
  • RANGE는 정렬값이 같은 행을 같은 범위로 다룰 수 있다.
  • LAST_VALUE 등에서 의도한 결과를 얻으려면 프레임 범위를 명시해야 할 수 있다. 기본 범위가 현재 행까지라면 미래 행의 값은 포함되지 않는다.
  • NTILE(n)은 행을 n개 그룹으로 나눈다. 균등하게 나누어떨어지지 않으면 앞 그룹부터 행을 배정한다.

8. 상위 N개 조회와 계층형 질의

  • 상위 N개 조회에는 정렬 기준이 필요하다. 정렬 없이 상위 행만 제한하면 원하는 기준의 상위 결과가 아닐 수 있다.
  • SQL Server는 TOP, 오라클은 ROWNUM 등 DBMS별 문법을 사용한다. 오라클에서 ROWNUM은 행이 처리되는 과정에서 부여되므로 조건을 설정할 때 처리 순서를 유의해야 한다.
  • 계층형 질의는 부모·자식 관계를 따라 데이터를 조회한다. START WITH로 시작 행을 지정하고 CONNECT BY로 관계를 표현한다.
  • PRIOR의 위치에 따라 부모에서 자식으로 내려가거나 자식에서 부모로 올라가는 방향이 달라진다. LEVEL은 계층 단계, SYS_CONNECT_BY_PATH는 경로 표현에 활용된다.
  • 셀프 조인은 동일한 테이블을 서로 다른 별칭으로 두 번 참조해 연결하는 방식이다.

9. 피벗과 정규 표현식

  • PIVOT은 행 데이터를 열 방향으로 재구성하고, UNPIVOT은 열 데이터를 행 방향으로 바꾼다.
  • 정규 표현식은 패턴 검색과 문자열 검증에 활용된다. 시험에서는 방대한 문법 전체보다 자주 쓰이는 패턴과 함수를 우선 학습하는 것이 효율적이다.

10. DML과 트랜잭션

  • DML
  • INSERT: 데이터 삽입. 열을 명시하지 않거나 일부만 지정하면 열 순서와 생략된 값의 처리를 확인해야 한다.
  • UPDATE: 기존 데이터 수정. WHERE를 빠뜨리면 모든 행이 변경될 수 있다.
  • DELETE: 조건에 맞는 행 삭제.
  • MERGE: 조건에 따라 기존 행을 수정하거나 새 행을 삽입한다.
  • 트랜잭션은 데이터베이스의 논리적 작업 단위이며, ACID 특성과 관련된다.
  • COMMIT은 변경 사항을 확정하고, ROLLBACK은 변경 사항을 되돌린다. SAVEPOINT를 지정하면 특정 지점까지 부분적으로 롤백할 수 있다.
  • 자동 커밋 동작은 DBMS와 설정에 따라 다르므로 오라클과 SQL Server의 차이를 확인해야 한다.
  • 트랜잭션 격리 수준에 따라 더티 리드, 반복 불가능 읽기, 팬텀 읽기와 같은 현상의 발생 여부가 달라질 수 있다.

11. DDL과 DCL

  • DDL은 데이터베이스 구조를 정의·변경한다.
  • CREATE: 객체 생성
  • ALTER: 구조 변경
  • DROP: 객체 삭제
  • TRUNCATE: 테이블 구조를 유지하면서 데이터를 비움
  • 기본키는 NULL과 중복을 허용하지 않는다. 고유 제약조건은 중복을 허용하지 않지만 NULL 처리 방식은 DBMS에 따라 다를 수 있다. 외래키는 테이블 간 참조 관계를 설정한다. CHECK는 허용값이나 조건을 제한한다.
  • TRUNCATE는 DELETE와 동작 특성이 다르며, 롤백 가능 여부 등은 DBMS에 따라 달라질 수 있다.
  • DCL
  • GRANT: 권한 부여
  • REVOKE: 권한 회수
  • 객체 권한을 다른 사용자에게 전달할 수 있도록 하는 옵션과, 시스템 관리 권한을 부여하는 옵션을 구분해야 한다.
학습 핵심: SQL은 처리 순서를 기준으로 한 단계씩 해석하고, 행 조건(WHERE), 그룹 조건(HAVING), 정렬(ORDER BY)의 역할을 구분해야 한다. 문법 암기와 함께 다양한 질의의 결과를 직접 추론하는 연습이 중요하다.
공개 노트 모두 보기