본문으로 바로 가기

SQL 개발자 (SQLD) 개념 정리

26년 11월 1일 검사 완료

요약 노트

1과목 · 데이터 모델링의 이해10문항

1-1. 데이터 모델링의 이해

★★★★☆ 55% (추정)

개요

이 단원은 업무에 필요한 데이터를 어떻게 정리해 그림(모델)으로 나타내는지를 배웁니다. 먼저 데이터 모델링의 단계와 3층 스키마를 익히고, 이어서 모델을 이루는 네 가지 요소인 엔터티·속성·관계·식별자를 차례로 공부합니다.

데이터 모델링은 개념적 모델링에서 시작해 논리적 모델링, 물리적 모델링 순서로 점점 구체적으로 내려갑니다. 개념적 모델링은 핵심 엔터티와 관계를 크게 그리는 단계이고, 논리적 모델링은 키와 속성을 정하고 정규화를 하는 단계이며, 물리적 모델링은 실제 DBMS 에 만들 테이블과 인덱스, 저장 구조를 정하는 단계입니다. 3층 스키마는 사용자 관점의 외부 스키마, 전체를 통합한 개념 스키마, 저장 구조인 내부 스키마로 나뉘어 데이터 독립성을 지켜 줍니다.

엔터티는 업무에서 관리해야 할 대상으로, 식별자가 있고 인스턴스가 두 개 이상이며 속성과 관계를 가져야 합니다. 속성은 엔터티가 가진 더 나눌 수 없는 정보 하나이며, 기본 속성·설계 속성·파생 속성으로 나뉩니다. 관계는 엔터티끼리의 연결로, 몇 개와 연결되는지(관계 차수)와 반드시 있어야 하는지(관계 선택성)를 함께 나타냅니다.

식별자는 인스턴스를 하나씩 구별하는 속성으로, 주식별자는 유일성·최소성·불변성·존재성을 갖춰야 합니다. 부모의 주식별자가 자식의 주식별자 일부가 되면 식별 관계, 자식의 일반 속성이 되면 비식별 관계라고 하며, IE 표기법에서는 각각 실선과 점선으로 그립니다.

핵심 정리

데이터 모델링 3단계
— 개념적 모델링은 핵심 엔터티와 관계를 크게 그리는 단계, 논리적 모델링은 키·속성·관계를 자세히 정하고 정규화하는 단계, 물리적 모델링은 실제 DBMS 에 맞춰 테이블·인덱스·저장 구조를 정하는 단계입니다.
3층 스키마
— 외부 스키마는 사용자마다 보는 관점, 개념 스키마는 모든 관점을 합친 데이터베이스 전체의 논리 구조, 내부 스키마는 실제 저장 구조입니다. 내부 스키마가 바뀌어도 개념 스키마가 영향받지 않는 것을 물리적 독립성, 개념 스키마가 바뀌어도 외부 스키마가 영향받지 않는 것을 논리적 독립성이라 합니다.
엔터티
— 업무에 필요하고 관리하려는 대상입니다. 유일한 식별자가 있어야 하고, 인스턴스가 두 개 이상이어야 하며, 속성과 다른 엔터티와의 관계를 가져야 합니다. 발생 시점에 따라 기본 엔터티(사원·상품), 중심 엔터티(주문·계약), 행위 엔터티(주문 이력)로 나뉩니다.
속성의 종류
— 기본 속성은 업무에서 원래 가진 값(상품명·단가), 설계 속성은 설계하면서 새로 만든 값(일련번호·코드), 파생 속성은 다른 속성을 계산해 얻는 값(총금액)입니다. 속성 하나에는 값이 하나만 들어가야 합니다.
관계 차수와 선택성
— 관계 차수는 한 인스턴스가 상대 인스턴스 몇 개와 연결되는지(1:1, 1:M, M:N)이고, 관계 선택성은 연결이 반드시 있어야 하는지(필수) 없어도 되는지(선택)입니다. IE 표기법에서는 동그라미가 선택(0), 세로선이 1, 까마귀발이 여럿을 뜻합니다.
주식별자의 특징
— 유일성(모든 인스턴스를 하나씩 구별), 최소성(유일성을 지키는 범위에서 속성 수가 가장 적음), 불변성(값이 바뀌지 않음), 존재성(값이 반드시 있음, NULL 불가)을 갖춰야 합니다.
식별 관계와 비식별 관계
— 부모의 주식별자가 자식의 주식별자 일부가 되면 식별 관계(실선), 자식의 일반 속성(외래키)이 되면 비식별 관계(점선)입니다. 식별 관계가 길게 이어지면 자식의 주식별자 속성이 계속 늘어나므로 적절한 곳에서 비식별 관계로 끊습니다.
IE(까마귀발) 표기의 선 끝 모양 네 가지를 보여 준다. 세로선 두 개는 꼭 1개, 동그라미와 세로선은 0개 또는 1개, 세로선과 까마귀발은 1개 이상, 동그라미와 까마귀발은 0개 이상이다. 아래에 실선은 식별 관계, 점선은 비식별 관계라고 적혀 있다.
IE 표기법의 관계 기호와 식별·비식별 관계 선

★ 시험 포인트

  • 추상화 수준이 가장 높은 단계는 개념적 모델링, 테이블·인덱스를 정하는 단계는 물리적 모델링입니다.
  • 엔터티의 조건(인스턴스 2개 이상, 식별자, 속성, 관계)을 '옳지 않은 것' 문제로 자주 묻습니다.
  • ERD 그림을 보고 동그라미(선택)와 세로선(필수), 까마귀발(여럿)을 읽는 문제가 나옵니다.
  • 주식별자의 네 가지 특징 가운데 최소성과 유일성을 바꿔 내는 문제가 많습니다.
  • 식별 관계는 실선, 비식별 관계는 점선이라는 표기와, 부모 키가 자식의 어디에 들어가는지를 함께 확인하세요.
외우는 요령·비교표·대표 문제 보기 →

1-2. 데이터 모델과 SQL

★★★★☆ 45% (추정)

개요

이 단원은 데이터 모델이 실제 SQL 과 어떻게 이어지는지를 배웁니다. 정규화와 반정규화로 테이블을 나누고 합치는 원리를 먼저 익히고, 관계가 조인으로 바뀌는 방식, 트랜잭션을 모델에 표현하는 방법, NULL 의 성질, 본질식별자와 인조식별자를 차례로 공부합니다.

정규화는 중복을 없애 입력·수정·삭제 이상을 줄이는 작업입니다. 제1정규형은 모든 칸에 값이 하나씩 들어간 상태, 제2정규형은 주식별자 일부에만 종속된 속성을 떼어 낸 상태, 제3정규형은 일반 속성끼리의 종속(이행 함수 종속)을 떼어 낸 상태, BCNF 는 모든 결정자가 후보키인 상태입니다. 반대로 반정규화는 조회 성능을 위해 일부러 중복을 허용하는 것으로, 무결성이 깨질 위험이 있어 다른 방법을 먼저 검토합니다.

모델의 관계는 테이블에서 부모의 기본키와 자식의 외래키로 만들어지며, 조인할 때 이 둘을 같게 비교합니다. 하나의 트랜잭션으로 함께 저장되어야 하는 엔터티는 서로 필수 관계로 표현합니다. NULL 은 '모르는 값'이라 산술 연산 결과는 NULL, 비교 결과는 '알 수 없음'이 되고, 집계 함수는 NULL 을 빼고 계산합니다.

식별자는 업무에서 자연스럽게 생기는 본질식별자와, 복잡한 식별자를 대신해 일련번호처럼 만든 인조식별자로 나뉩니다. 인조식별자는 키가 단순해지지만 같은 데이터가 중복 입력될 수 있고, 이를 막기 위해 인덱스가 더 필요할 수 있습니다.

핵심 정리

함수 종속
— A 값을 알면 B 값이 하나로 정해질 때 A → B 로 쓰고, A 를 결정자, B 를 종속자라고 합니다. 예를 들어 학번을 알면 이름이 정해지므로 학번 → 이름입니다.
정규형 단계
— 제1정규형은 원자값(한 칸에 값 하나), 제2정규형은 부분 함수 종속 제거, 제3정규형은 이행 함수 종속 제거, BCNF 는 모든 결정자를 후보키로 만드는 단계입니다.
부분·이행 함수 종속
— 부분 함수 종속은 복합 주식별자의 일부(예: 과목코드)만으로 다른 속성(과목명)이 정해지는 것이고, 이행 함수 종속은 A → B, B → C 처럼 일반 속성 B 가 C 를 정하는 것입니다.
반정규화
— 조회 성능을 높이려고 정규화된 모델에 일부러 중복을 넣는 작업입니다. 테이블 병합·분할, 중복 컬럼·파생 컬럼 추가 등이 있으며, 무결성이 깨질 위험이 있어 인덱스·뷰·클러스터링 같은 방법을 먼저 검토합니다.
NULL 의 성질
— NULL 은 값이 없거나 모르는 상태로, 0 이나 공백과 다릅니다. NULL 이 들어간 산술 연산 결과는 NULL, 비교 연산 결과는 '알 수 없음'이며, SUM·AVG·COUNT(컬럼) 같은 집계 함수는 NULL 을 빼고 계산합니다.
본질식별자와 인조식별자
— 본질식별자는 업무 흐름에서 자연스럽게 만들어진 식별자이고, 인조식별자는 원래 식별자가 복잡해 일련번호처럼 인위적으로 만든 식별자입니다. 인조식별자는 같은 데이터가 중복으로 들어갈 수 있고 인덱스가 늘어날 수 있다는 단점이 있습니다.

★ 시험 포인트

  • 주어진 종속 관계를 보고 몇 정규형을 위반하는지 고르는 문제가 자주 나옵니다.
  • 정규화는 이상 현상을 줄이지만 조인이 늘어날 수 있다는 점을 기억하세요.
  • NULL 이 섞인 COUNT(*)·COUNT(컬럼)·AVG 결과를 계산하는 문제가 많습니다.
  • 함께 처리되어야 하는 트랜잭션은 필수(Mandatory) 관계로 표현합니다.
  • 인조식별자를 쓰면 중복 데이터가 생길 수 있다는 단점을 묻습니다.
외우는 요령·비교표·대표 문제 보기 →

2과목 · SQL 기본 및 활용40문항

2-1. SQL 기본

★★★★★ 40% (추정)

개요

이 단원은 SQL 로 데이터를 꺼내 보는 기본기를 배웁니다. 관계형 데이터베이스의 구조를 먼저 익히고, SELECT 문의 각 절(FROM·WHERE·GROUP BY·HAVING·ORDER BY)과 여러 함수, 두 테이블을 잇는 조인을 차례로 공부합니다.

SELECT 문은 적힌 순서와 달리 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 순서로 처리됩니다. WHERE 는 묶기 전에 행을 거르므로 집계 함수를 쓸 수 없고, 묶은 결과에 조건을 걸 때는 HAVING 을 씁니다. GROUP BY 를 쓰면 SELECT 절에는 GROUP BY 에 적은 컬럼과 집계 함수만 올 수 있습니다.

NULL 은 = 로 비교할 수 없어 IS NULL 로 찾고, NOT IN 목록에 NULL 이 있으면 결과가 하나도 나오지 않습니다. COUNT(*) 는 모든 행을, COUNT(컬럼) 은 NULL 이 아닌 행만 셉니다. NVL·COALESCE·NULLIF·CASE·DECODE 같은 함수는 결과를 손으로 따라갈 수 있어야 하며, Oracle 은 빈 문자열을 NULL 로 다루고 정렬할 때 NULL 을 가장 큰 값으로 본다는 점도 자주 나옵니다.

조인은 두 테이블의 행을 짝지어 하나로 보여 줍니다. INNER JOIN 은 짝이 있는 행만, LEFT OUTER JOIN 은 왼쪽 테이블의 행을 모두 남기고, FULL OUTER JOIN 은 양쪽 행을 모두 남깁니다. CROSS JOIN 은 모든 조합을 만들어 행 수가 두 테이블 행 수의 곱이 되고, NATURAL JOIN 과 USING 은 이름이 같은 컬럼으로 조인합니다.

핵심 정리

SELECT 문 처리 순서
— FROM(테이블 정하기) → WHERE(행 거르기) → GROUP BY(묶기) → HAVING(그룹 거르기) → SELECT(컬럼 고르기) → ORDER BY(정렬) 순서로 처리됩니다.
WHERE 와 HAVING
— WHERE 는 묶기 전에 행 하나하나에 조건을 걸고, HAVING 은 GROUP BY 로 묶은 그룹에 조건을 겁니다. 집계 함수(SUM·AVG·COUNT 등) 조건은 HAVING 에만 쓸 수 있습니다.
COUNT 와 NULL
— COUNT(*) 는 NULL 이 있는 행까지 모든 행을 세고, COUNT(컬럼) 은 그 컬럼이 NULL 이 아닌 행만 셉니다. COUNT(DISTINCT 컬럼) 은 NULL 을 뺀 서로 다른 값의 개수입니다. 0 은 NULL 이 아니므로 셉니다.
NULL 관련 함수
— NVL(a, b) 는 a 가 NULL 이면 b, COALESCE(a, b, …) 는 처음으로 NULL 이 아닌 값, NULLIF(a, b) 는 a 와 b 가 같으면 NULL 이고 다르면 a 를 돌려줍니다. CASE 에서 ELSE 를 생략하면 맞는 조건이 없을 때 NULL 이 됩니다.
Oracle 의 NULL 특성
— Oracle 은 빈 문자열 '' 을 NULL 로 다루고, 문자 연결 || 에서는 NULL 을 빈 문자열처럼 무시합니다. 정렬할 때는 NULL 을 가장 큰 값으로 보아 오름차순에서 맨 뒤에 둡니다.
OUTER JOIN
— LEFT OUTER JOIN 은 왼쪽 테이블의 행을 모두 남기고 짝이 없으면 오른쪽 컬럼을 NULL 로 채웁니다. RIGHT 는 그 반대, FULL OUTER JOIN 은 양쪽의 짝 없는 행을 모두 남깁니다.
CROSS·NATURAL·USING
— CROSS JOIN 은 조건 없이 모든 조합(행 수의 곱)을 만듭니다. NATURAL JOIN 은 이름이 같은 모든 컬럼으로, USING (컬럼) 은 지정한 같은 이름 컬럼으로 조인하며, Oracle 에서는 이 조인 컬럼 앞에 테이블 별칭을 붙이면 오류가 납니다.

★ 시험 포인트

  • 표를 주고 GROUP BY·HAVING·COUNT 결과 행 수나 값을 묻는 문제가 가장 많습니다.
  • GROUP BY 에서는 NULL 끼리도 하나의 그룹이 된다는 점을 놓치기 쉽습니다.
  • NOT IN 목록에 NULL 이 있으면 결과가 0행이 됩니다.
  • AND 가 OR 보다 먼저 계산되는 연산자 우선순위 문제가 나옵니다.
  • INNER·LEFT·FULL OUTER·CROSS JOIN 의 결과 행 수를 세는 연습을 하세요.
  • SUBSTR·ROUND·CEIL·FLOOR·LTRIM 같은 함수 결과를 손으로 계산할 수 있어야 합니다.
외우는 요령·비교표·대표 문제 보기 →

2-2. SQL 활용

★★★★★ 40% (추정)

개요

이 단원은 SELECT 문을 한 단계 더 깊이 쓰는 방법을 배웁니다. 서브쿼리와 집합 연산자로 여러 결과를 엮는 법을 먼저 익히고, 소계를 만드는 그룹 함수, 행마다 순위·누적값을 붙이는 윈도우 함수, 상위 몇 건만 뽑는 Top N, 계층형 질의와 셀프 조인, PIVOT·UNPIVOT, 정규 표현식을 차례로 공부합니다.

서브쿼리는 위치에 따라 SELECT 절의 스칼라 서브쿼리, FROM 절의 인라인 뷰, WHERE 절의 중첩 서브쿼리로 나뉩니다. 결과가 여러 행이면 IN·ANY·ALL·EXISTS 를 쓰며, > ANY 는 가장 작은 값보다 크다는 뜻이고 > ALL 은 가장 큰 값보다 크다는 뜻입니다. 집합 연산자는 UNION(중복 제거), UNION ALL(중복 그대로), INTERSECT(교집합), MINUS(차집합)가 있고, 합치는 SELECT 문들은 컬럼 수가 같아야 합니다.

그룹 함수 ROLLUP(A, B) 는 (A, B)·(A)·전체 소계를, CUBE(A, B) 는 모든 조합의 소계를, GROUPING SETS 는 적은 기준의 소계만 만듭니다. 윈도우 함수는 행 수를 줄이지 않고 각 행에 결과를 붙이며, 같은 값이 있을 때 RANK 는 순위를 건너뛰고 DENSE_RANK 는 건너뛰지 않으며 ROW_NUMBER 는 언제나 다른 번호를 줍니다. ORDER BY 만 쓰면 기본 범위가 RANGE 라서 같은 값의 행이 함께 누적됩니다.

Oracle 의 ROWNUM 은 정렬보다 먼저 붙으므로 Top N 은 인라인 뷰에서 정렬한 뒤 바깥에서 ROWNUM 을 겁니다. 계층형 질의는 START WITH 로 시작 행을, CONNECT BY PRIOR 로 전개 방향을 정하고, LEVEL·CONNECT_BY_ISLEAF·SYS_CONNECT_BY_PATH 로 깊이와 경로를 봅니다. PIVOT 은 행을 열로, UNPIVOT 은 열을 행으로 바꾸며, REGEXP_LIKE·REGEXP_SUBSTR·REGEXP_REPLACE 로 정규 표현식을 씁니다.

핵심 정리

서브쿼리 위치별 이름
— SELECT 절에서 값 하나를 돌려주면 스칼라 서브쿼리, FROM 절에서 테이블처럼 쓰이면 인라인 뷰, WHERE 절에 쓰이면 중첩 서브쿼리입니다. 메인쿼리의 컬럼을 안에서 쓰면 상관 서브쿼리라고 합니다.
ANY 와 ALL
— > ANY (목록) 은 목록 중 하나보다만 크면 되므로 가장 작은 값보다 큰 것이고, > ALL (목록) 은 모든 값보다 커야 하므로 가장 큰 값보다 큰 것입니다.
집합 연산자
— UNION 은 합집합(중복 제거), UNION ALL 은 합집합(중복 유지), INTERSECT 는 교집합, MINUS(SQL Server 는 EXCEPT)는 차집합입니다. 합치는 SELECT 문은 컬럼 수와 형식이 맞아야 하고, ORDER BY 는 맨 끝에 한 번만 씁니다.
ROLLUP·CUBE·GROUPING SETS
— ROLLUP(A, B) 는 (A, B), (A), 전체 합계를 만들고, CUBE(A, B) 는 (A, B), (A), (B), 전체 합계를 모두 만듭니다. GROUPING SETS(A, B) 는 A 별, B 별 소계만 만들고 전체 합계는 없습니다. GROUPING(컬럼) 은 소계 행이면 1 입니다.
순위 윈도우 함수
— 점수가 100, 90, 90, 80 일 때 RANK 는 1, 2, 2, 4, DENSE_RANK 는 1, 2, 2, 3, ROW_NUMBER 는 1, 2, 3, 4 를 줍니다. PARTITION BY 로 그룹을 나누면 그룹마다 1부터 다시 매깁니다.
ROWNUM 과 Top N
— Oracle 의 ROWNUM 은 WHERE 를 통과한 행에 1부터 붙는 번호라 ORDER BY 보다 먼저 정해집니다. 그래서 ROWNUM = 2 는 결과가 없고, 정렬 후 상위 N 건은 인라인 뷰에서 정렬한 뒤 바깥에서 ROWNUM <= N 을 겁니다.
계층형 질의 (Oracle)
— START WITH 로 시작(루트) 행을 정하고, CONNECT BY PRIOR 자식키 = 부모키 로 위에서 아래로 전개합니다. 루트의 LEVEL 은 1 이고, 자식이 없는 행은 CONNECT_BY_ISLEAF 가 1, SYS_CONNECT_BY_PATH 는 루트부터의 경로를 보여 줍니다.

★ 시험 포인트

  • RANK·DENSE_RANK·ROW_NUMBER 의 차이를 같은 값이 있는 표로 묻는 문제가 자주 나옵니다.
  • ROLLUP·CUBE·GROUPING SETS 결과 행 수를 세는 문제가 나옵니다.
  • UNION 과 UNION ALL, INTERSECT, MINUS 결과를 표로 계산해 보세요.
  • ROWNUM 으로 Top N 을 구하는 올바른 SQL 을 고르는 문제가 많습니다.
  • 계층형 질의에서 START WITH 행부터 전개된 행 수와 LEVEL 을 따라가는 연습을 하세요.
  • 윈도우 함수는 GROUP BY 와 달리 행 수를 줄이지 않습니다.
외우는 요령·비교표·대표 문제 보기 →

2-3. 관리 구문

★★★★☆ 20% (추정)

개요

이 단원은 데이터와 테이블을 직접 바꾸고 관리하는 명령을 배웁니다. SQL 명령의 네 가지 종류를 먼저 구분하고, 데이터를 넣고 고치고 지우는 DML, 변경을 확정하거나 취소하는 TCL, 테이블 구조를 만드는 DDL 과 제약조건, 권한을 다루는 DCL 을 차례로 공부합니다.

DML 에는 INSERT·UPDATE·DELETE·MERGE 가 있습니다. INSERT 에서 컬럼을 빼면 기본값(DEFAULT)이, 기본값이 없으면 NULL 이 들어갑니다. MERGE 는 원본 데이터 가운데 대상에 있는 행은 고치고(WHEN MATCHED) 없는 행은 새로 넣습니다(WHEN NOT MATCHED).

트랜잭션은 원자성·일관성·고립성·지속성(ACID)을 가져야 합니다. COMMIT 은 변경을 확정하고, ROLLBACK 은 확정하지 않은 변경을 취소하며, ROLLBACK TO 저장점은 그 저장점 뒤의 변경만 취소합니다. Oracle 에서는 CREATE·ALTER·DROP·TRUNCATE 같은 DDL 을 실행하면 그 전까지의 변경이 자동으로 COMMIT 됩니다.

DDL 로 테이블을 만들 때 기본키·UNIQUE·NOT NULL·CHECK·외래키 같은 제약조건을 겁니다. 외래키에는 부모 행을 지울 때 자식 행도 지우는 ON DELETE CASCADE, 자식의 외래키를 NULL 로 바꾸는 ON DELETE SET NULL 옵션이 있습니다. DCL 의 GRANT 는 권한을 주고 REVOKE 는 빼앗으며, 여러 권한을 묶은 롤(ROLE)로 한꺼번에 관리할 수 있습니다.

핵심 정리

SQL 명령의 종류
— DML(데이터 조작)은 SELECT·INSERT·UPDATE·DELETE·MERGE, DDL(데이터 정의)은 CREATE·ALTER·DROP·RENAME·TRUNCATE, DCL(데이터 제어)은 GRANT·REVOKE, TCL(트랜잭션 제어)은 COMMIT·ROLLBACK·SAVEPOINT 입니다.
트랜잭션 ACID
— 원자성은 모두 실행되거나 모두 취소됨, 일관성은 실행 전후에 규칙에 맞는 상태 유지, 고립성은 실행 중인 트랜잭션끼리 서로 끼어들지 않음, 지속성은 COMMIT 한 결과가 영구히 남음을 뜻합니다.
COMMIT·ROLLBACK·SAVEPOINT
— COMMIT 은 변경을 확정하고, ROLLBACK 은 마지막 COMMIT 이후의 변경을 취소합니다. SAVEPOINT 로 중간 저장점을 만들면 ROLLBACK TO 저장점으로 그 뒤의 변경만 취소할 수 있습니다.
DELETE·TRUNCATE·DROP
— DELETE 는 조건에 맞는 행을 지우는 DML 이라 COMMIT 전이면 되돌릴 수 있습니다. TRUNCATE 는 모든 행을 지우고 구조는 남기는 DDL, DROP 은 테이블 구조까지 없애는 DDL 입니다. Oracle 에서 두 DDL 은 자동 COMMIT 되어 되돌릴 수 없습니다.
제약조건
— 기본키는 중복과 NULL 을 모두 막고 테이블에 하나만 둘 수 있습니다(여러 컬럼을 묶을 수는 있음). UNIQUE 는 중복만 막고 NULL 은 허용하며, NOT NULL 은 값을 반드시 넣게 하고, CHECK 는 넣을 수 있는 값의 조건을 정합니다.
외래키 삭제 옵션
— ON DELETE CASCADE 는 부모 행을 지우면 자식 행도 함께 지우고, ON DELETE SET NULL 은 자식의 외래키를 NULL 로 바꿉니다. 옵션이 없으면 자식 행이 있는 부모 행은 지울 수 없습니다.
GRANT·REVOKE·ROLE
— GRANT 권한 ON 객체 TO 사용자 로 권한을 주고, REVOKE 권한 ON 객체 FROM 사용자 로 빼앗습니다. WITH GRANT OPTION 을 붙이면 받은 사람이 그 권한을 다시 줄 수 있습니다. 롤(ROLE)은 여러 권한을 묶어 한꺼번에 관리합니다.

★ 시험 포인트

  • 명령어를 DML·DDL·DCL·TCL 로 바르게 짝짓는 문제가 자주 나옵니다.
  • SAVEPOINT 와 ROLLBACK TO 를 섞어 실행한 뒤 남는 데이터를 묻는 문제가 나옵니다.
  • Oracle 에서 DDL 을 실행하면 자동 COMMIT 된다는 점을 이용한 문제가 많습니다.
  • DELETE·TRUNCATE·DROP 의 차이(되돌릴 수 있는지, 구조가 남는지)를 정리하세요.
  • 기본키와 UNIQUE 의 NULL 허용 차이, 외래키 삭제 옵션의 동작을 묻습니다.
외우는 요령·비교표·대표 문제 보기 →

필기시험만 있으며 객관식 50문항을 90분 동안 풉니다(각 2점 · 2과목 50문항 · 90분

합격 기준: 과목마다 40점 이상, 평균 60점 이상

출처: 한국데이터산업진흥원 · 2026년 기준

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