🍏 개발일기/으쌰으쌰 SQLD 자격증 준비

노랭이 123P 부터 시작 118번 ~ 123번

보배 진 2026. 2. 14. 23:44

118번. 다음 중 아래 SQL의 실행 결과로 가장 적절한 것은?

이 문제는 "연속으로 이어지는 구간을 한 덩어리로 보고, 덩어리의 시작/끝만 남기는 쿼리"이다

 

문제에 나와있는 표를 보면

데이터의 구간이 있다

표는 10~14 | 14~15 | 15~15 | 15~18 | 20~25 | 25~(끝이 없음 ▶️  99로 변경해서 25~99로 취급)  

이런 구간들이 있다

 

정렬 순서 먼저 확정

ORDER BY start_val, NVL(end_val, 99)

🔼윈도우 함수가 보는 순서는 이것이다

주어진 데이터 end_val이 NULL이면 99로 변경

 

 

FLAG1 = “앞이랑 이어지냐?”

조건 : 내 START_VAL = 바로 전 행 END_VAL 이면 이어짐(1) 아니면 끊김(0)

즉, 내가 덩어리의 시작점이냐? 보는 용도이다

▪️10~14 : 앞이 없음 ➡️ 끊김(0) ✅ 시작점

▪️14~15 : 내 시작 14 = 앞 끝도 14 ➡️ 이어짐(1)

▪️15~15 : 내 시작 15 = 앞 끝도 15 ➡️ 이어짐(1)

▪️15~18 : 15 = 15 ➡️ 이어짐(1)

▪️20~25 : 20 ≠ 18 → 끊김(0) ✅ 시작

▪️25~99 : 25 = 25 ➡️ 이어짐

 

 

 

FLAG2 = “뒤랑 이어지냐?”

조건 : 내 END_VAL = 다음행 START_VAL이면 이어짐(1) 아니면 끊김(0)

즉, 내가 덩어리의 끝점이냐? 보는 용도

▪️10~14 : 내 끝 14 = 다음 시작 14 ➡️ 이어짐(1)

▪️14~15 : 15 = 다음 15 ➡️ 이어짐(1)

▪️15~15 : 15 = 다음 15 ➡️ 이어짐(1)

▪️15~18 : 18 ≠ 다음 20 → 끊김(0) ✅ 끝점

▪️20~25 : 25 = 다음 25 → 이어짐(1)

▪️25~99 : 다음이 없음 → 끊김(0) ✅ 끝점(마지막)

 

 

 

WHERE 조건이 핵심!

FLAG1 = 0 OR FLAG2 = 0

즉, 덩어리의 시작점이거나(FLAG1=0) 끝점이면(FLAG2=0) 출력해라

그래서 출력되는 행은

✅ 시작점 : 10~14, 20~25

✅ 끝점 : 15~18, 25~99

 

정렬 순서대로 쓰면

10 14

15 18

20 25

25 99

 

정답 1번


문제 119. 아래 설명 중 (ㄱ), (ㄴ)에 해당하는 내용을 작성하시오

DBMS에 생성된 USER와 다양한 권한들 사이에서 중개 역할을 할 수 있도록 DBMS에서는 ROLE을 제공한다. 
이런한 ROLE을 DBMS USER에게 부여하기 위해서는 (ㄱ) 명령어를 사용하며
ROLE을 회수하기 위해서는 (ㄴ) 명령을 사용한다

(ㄱ) : GRANT

(ㄴ) : REVOKE


문제 122. 실행 가능한 SQL을 2개 고르시오

처음 상태 : Lee가 Kim에게 줌 ➡️ Kim은 SELECT, INSERT, DELETE 전부 가능, 다른 사람에게 줄 수 있음

Kim이 Park에게 줌 ➡️ Park도 SELECT, INSERT, DELETE 가

Lee가 Kim의 DELETE 취소 ➡️ Kim의 DELETE 사라짐

Lee가 INSERT 취소➡️ Kim INSERT ❌, Kim이 Park에게 준 INSERT도 ❌

 

정답은 1번 3번


문제 123번. 다음중 PL/SQL에 대한 설명으로 가장 부적절한 것은?

  1. 변수와 상수 등을 사용하여 일반 SQL 문장을 실행할 때 WHERE절의 조건 등으로 대입할 수 있다
  2. Procedure, User Defined Function, Trigger 객체를 PL/SQL로 작성할 수 있다
  3. PL/SQL로 작성된 Procedure, User Defined Function은 전체가 하나의 트랜잭션으로 처리되어야 한다
  4. Procedure 내부에 작성된 절차적 코드는 PL/SQL엔진이 처리하고 일반적인 SQL문장은 SQL 실행기가 처리한다

전체가 하나의 트랜잭션?

PL/SQL로 작성된 Procedure, User Defined Function은 전체가 하나의 트랜잭션으로 처리되어야 한다

❌ 틀림 이게 함정. PL/SQL 블록이 자동으로 하나의 트랜잭션이 되는 게 아님.

트랜잭션은: COMMIT, ROLLBACK 으로 제어됨.

즉, 프로시저 안에서 여러 번 COMMIT 가능.

👉 “반드시 하나의 트랜잭션이어야 한다” ❌

⛔ 부적절