카테고리 없음

SQLD 48회 문제

김가마 2023. 11. 9. 23:49

*1과목*  출저 https://yunamom.tistory.com/341 

 

[SQLD] 2023년 SQLD 48회 ( 1과목/2과목 정답 )

안녕하세요 yunamom 입니다 :D 이번시간에는 48회 SQLD 시험 1과목, 2과목 정답을 포스팅 하겠습니다. 👩🏻‍💻 *문제 순서는 다를 수 있으며 답 자체를 적어두거나 문제만 적은 경우도 있습니다. *1

yunamom.tistory.com

문제1. 데이터 모델링 설명이 옳지 않은 것은?

반드시 모두 정규화해야한다 (4번)

 

문제2. 아래 내용이 설명하는 스키마 구조로 가장 적절한 것은? 

- 모든 사용자 관점을 통합한 조직 전체의 관점의 통합적 표현
- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 
  DB에 저장되는 데이터와 그들 간의 관계를 표현하는 스키마
1) 외부스키마

2) 개념스키마

3) 내부스키마

4) 논리스키마

통합 관점이라서 개념스키마 (2번)

 

문제3. 발생시점 엔터티가 아닌것을 고르시오. / 발생시점 엔터티는 기본 중심 행위 엔터티라서 (4번)

1. 기본엔터티
2. 중심엔터티
3. 행위엔터티
4. 유형엔터티

 

문제4. 다음 중 데이터모델링의 관계에 대한 설명으로 가장 부적절한 것을 2개 고르시오. 

- 노랭이 1과목 20번 (문제 재구성되어서 시험에 나옴)

 

1) 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용한다.

2) UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있고 이것은 실선과 점선으 표기법으로 다르게 표현이 된다.

3) 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있고 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하여 실선과 점선의 표기법으로 다르게 표현한다.

4) UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있으나 구분 하지 않고 단일화 된 표기법을 사용한다.

정답: 3, 4

해설: 데이터모델링에서는 존재적 관계와 행위에 의한 관계를 구분하는 표기법이 없으며, UML에서는 연관관계와 의존관계에 대해 다른 표기법을 가지고 표현하게 되어 있다.

 

문제5. 다음 중 데이터를 조회할 때 빠른 성능을 낼 수 있도록 하기 위해 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성으로 가장 적절한 것은? (1번) - 노랭이 1과목 17번

 

1. 파생속성(Derived Attribute)
2. 기본속성(Basic Attribute)
3. 설계속성(Designed Attribute)
4. PK속성(Derived Attribute)

 

문제6. 아래의 그림에 대한 식별자의 분류를 알맞게 짝지은 것은? (3번)

1) 주식별자 - 본질식별자 - 보조식별자 - 복합식별자

2) 본질식별자 - 주식별자 - 보조식별자 - 복합식별자

3) 주식별자 - 보조식별자 - 본질식별자 - 복합식별자

4) 주식별자 - 보조식별자 - 복합식별자 - 본질식별자

해설:

1.주식별자
사번은 업무에서 사원한명을 유일하게 나타낼수도 있으며 다른 사원들하고 구분 할 수있고, 
뭔가를 구매하거나 교육을 참여할 때 사번을 통해 구매또는 참여를 할수있으므로 주식별자가 됩니다.
EX) 옥션에서 아이디(주식별자=사번)가 유일하게 사용자를 나타낼수있습니다.
여기서 주민등록번호만으로도 주식별자가 될수는있지만 주민등록번호만으로 주문을 넣을 수 없기때문에
보조식별자가 됩니다. 추가적으로 보조식별자는 대표성이 없고 타 엔티티랑 참조를 못합니다.

2.단일 식별자
사원엔티티에선 주식별자가 하나이므로 단일 식별자가 됩니다.
사원엔티티에서 주식별자 두개이상이면 복합식별자로 불리게됩니다.

3.내부식별자
사원엔티티에서 스스로 만들어져서 내부식별자도 됩니다. 
여기서 외부식별자는 부서번호인데 부서엔티티에서 값을 받아오는 차이가 있게됩니다.

4. 인조식별자 
주 식별자가 두개 이상인 경우 이거를 하나로 묶어 사용하는 식별자 
EX)옥션에서 사용자가 상품을 구매를하였는데 만약에 아이디(주식별자=사번),주문일자(주식별자)
이렇게만 있으면 한아이디로 여러개를 사면 뭐를 구매했는지 알수가 없기때문에 
여기에 주문번호(인조식별자)를 추가를하게되면 주문번호(인조식별자)를 통해 순번도 정리되며 
사용자가 언제 뭐를 구매를할수있는지 알수있게됩니다.
추가적으로 아이디(주식별자=사번),주문일자(주식별자) 주식별자가 두개이므로 복합식별자 AND
본질식별자는 업무에 의해 만들어지는 가공되지 않는 원래의 식별자입니다.
사원엔티티가 만들어지면서 업무적으로 자연스럽게 생성이 되는게 사번이므로 본질식별자도 됩니다.


💡부서랑 사원이 점선으로 이어지는것은 비식별자이기 때문입니다.
비식별자는 사원(자식)독립적으로 구성하면 점선으로 표시합니다
만약에 교육이력엔티티가 존재한다는 과정하에 교육이력엔티티에는 사번(FK),수강일자 주식별자 일경우
실선으로 ──────── 표시가 됩니다. 
식별자는 사원(부모) 주식별자 구성에 교육이력(자식) 포함이 필요하면 식별자가됩니다.

쉽게말하면 다른 엔티티 주식별자를 사용안하고 독립적으로 엔티티구성을 할수있으면 비식별자 점선으로 표시하고
부모엔티티 주식별자를 가지고와서 사용해야만하면 식별자 실선으로 표시합니다.

○:0개 , │:1개 , 삼지창같은건 여러개 이거를 풀이하면 부서엔 사원이 없을수도있고 한명일수도있고 여러명이 있을 수 있다는 뜻.

 

문제7. 속성의 특징으로 가장 올바른 것은?

 

1) 엔터티는 한 개의 속성만으로 구성될 수 있다.

2) 엔터티를 설명하고 인스턴스의 구성요소가 된다.

3) 하나의 속성에는 여러개의 속성값을 가질 수 있다.

4) 속성의 특성에 따른 분류에는 PK속성, FK속성, 일반속성이 있다.

 

정답: (3번)

해설:

1) 엔터티는 2개 이상의 속성으로 구성

2) 엔터티를 설명하고, 인스턴스의 구성요소이다. O

3) 하나의 속성은 하나의 값을 갖는다.

4) 속성의 특성 : 기본 속성 (모든 일반적 속성)

                         설계 속성 (새로 만든다.)

                         파생 속성 (영향을받아 발생, 빠른 성능, 계산)

 

문제8. 아래의 내용은 주식별자의 어떤 특징을 설명한 것인가?

 

1) 유일성

2) 최소성

3) 불변성

4) 존재성

 

정답: (2번)

 

문제9. 다음 중 엔터티간의 관계에서 1:1, 1:M과 같이 관계의 기수성을 나타내는 것으로 가장 적절한 것은?

 - 노랭이 1과목 22번

1. 관계명(Relationsip Membership)
2. 관계차수(Relationship Degree/Cardinality)
3. 관계선택사양(Relationship Optionality)
4. 관계정의(Relationship Definition)

 

정답: 2번

 

문제10. 데이터베이스 모델링을 보고 다음 보기 중에서 설명이 올바르지 않은것은?

(39회 기출 7번과 유사)

계정은 반드시 계정그룹 하나에 속해야한다 (2번)


*2과목*

순서상관X

 

문제11.  WHERE 비교 연산자 해석

SELECT 선수이름 FROM 선수 WHERE 키 >= 185

 

1) 키가 185 미만인 선수이름

2) 키가 185 초과인 선수이름

3) 키가 185 이하인 선수이름

4) 키가 185 이상인 선수이름

 

정답: 4번 185이상

 

문제12.  다음 중 SELECT 문장의 실행 순서를 올바르게 나열한 것은?

-노랭이기출59번

1. SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
2. FROM - SELECT - WHERE - GROUP BY - HAVING - ORDER BY
3. FROM - WHERE - GROUP BY - HAVING - ORDER BY - SELECT
4. FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

 

정답: F - W - G - H - S - O / 4번

 

문제13.  아래의 영화 데이터베이스 테이블의 일부에서 밑줄 친 속성들은 테이블의 기본키이며 출연료가 8888 이상인 영화명, 배우명, 출연료를 구하는 SQL로 가장 적절한 것은?

- 노랭이기출62번

 

[TABLE]
배우 (배우번호, 배우명, 성별)
영화 (영화번호, 영화명, 제작년도)
출연 (배우번호영화번호, 출연료)

1. SELECT 출연.영화명, 영화.배우명, 출연.출연료
   FROM 배우, 영화, 출연
   WHERE 출연료 >= 8888
   AND 출연.영화번호 = 영화.영화번호
   AND 출연.배우번호 = 배우.배우번호;
   
2. SELECT 영화.영화명, 배우.배우명, 출연료
   FROM 영화, 배우, 출연
   WHERE 출연.출연료 > 8888
   AND 출연.영화번호 = 영화.영화번호
   AND 영화.영화번호 = 배우.배우번호;
   
3. SELECT 영화명, 배우명, 출연료
   FROM 배우, 영화, 출연
   WHERE 출연료 >= 8888
   AND 영화번호 = 영화.영화번호
   AND 배우번호 = 배우.배우번호;
   
4. SELECT 영화.영화명, 배우.배우명, 출연료
   FROM 배우, 영화, 출연
   WHERE 출연료 >= 8888
   AND 출연.영화번호 = 영화.영화번호
   AND 출연.배우번호 = 배우.배우번호;

 

정답: 4번

 

문제14. ■강감찬 변사또 (1번) 노랭이기출117번

- 다음 중 [사원] 테이블에 대하여 아래와 같은 SQL을 수행하였을 때 예상되는 결과로 가장 적절한 것은?

[TABLE : 사원]
사원ID  부서ID   사원명   연봉
--------------------------
001     100    홍길동   2500
002     100    강감찬   3000
003     200    김유신   4500
004     200    김선달   3000
005     200    유학생   2500
006     300    변사또   4500
007     300    박문수   3000
[SQL]

SELECT Y.사원ID, Y.부서ID, Y.사원명, Y.연봉
FROM (SELECT 사원ID, MAX(연봉) 
      OVER(PARTITION BY 부서 ID) AS 최고연봉
      FROM 사원) X, 사원 Y
WHERE X.사원ID = Y.사원ID 
AND X.최고연봉 = Y.연봉;
1.
사원ID  부서ID  사원명   연봉
-------------------------
002    100    강감찬  3000
003    200    김유신  4500
006    300    변사또  4500

2.
사원ID  부서ID  사원명   연봉
-------------------------
001    100    홍길동  2500
005    200    유학생  2500
007    300    박문수  3000

3.
사원ID  부서ID  사원명   연봉
-------------------------
003    200    김유신  4500
006    300    변사또  4500

4.
사원ID  부서ID  사원명   연봉
-------------------------
004    200    김유신  4500

 

문제15. ■상품코드분류별 -10000~+10000 (3번) 노랭이기출116번

- 다음 중 아래의 SQL에 대한 설명으로 가장 적절한 것은?

[SQL]

SELECT 상품분류코드
       ,AVG(상품가격) AS 상품가격
       ,COUNT(*) OVER(ORDER BY AVG(상품가격)
                 RANGE BETWEEN 10000 PRECEDING
                 AND 10000 FOLLOWING) AS 유사개수
FROM 상품
GROUP BY 상품분류코드;

 

1. WINDOW FUNCTION을 GROUP BY 절과 함께 사용하였으므로 위의 SQL은 오류가 발생한다.

2. WINDOW FUNCTION의 ORDER BY 절에 AVG 집계 함수를 사용하였으므로 위의 SQL은 오류가 발생한다.

3. 유사개수 컬럼은 상품분류코드별 평균상품가격을 서로 비교하여 -10000 ~ +10000 사이에 존재하는 상품분류코드의 개수를 구한 것이다.

4. 유사개수 컬럼은 상품전체의 평균상품가격을 서로 비교하여 -10000 ~ +10000 사이에 존재하는 상품의 개수를 구한 것이다.
[해설]

GROUP BY 절의 집합을 원본으로 하는 데이터를 WINDOW FUNCTION과 함께 사용한다면
GROUP BY 절과 함께 WINDOW FUNCTION을 사용한다고 하더라도 오류가 발생하지 않으며,
유사개수 컬럼은 상품분류코드로 GROUPING된 집합을 원본집합으로 하여 상품분류코드별 평균상품가격을 
서로 비교하여 현재 읽혀진 상품분류코드의 평균가격 대비 -10000 ~ +10000사이에 존재하는 상품분류코드의 
개수를 구한 것이다.

 

문제16. ■200 50 300 100 (2번) 노랭이기출58번

- 다음 SQL의 실행 결과로 가장 적절한 것은?

[TABLE - TBL]

ID      AMT
-----------
A      50
A      200
B      300
C      100

[SQL]

SELECT ID, AMT
FROM TBL
ORDER BY (CASE WHEN ID = 'A' THEN 1 ELSE 2 END),
         AMT DESC;
1.                 2.
ID    AMT          ID    AMT
---------          ---------
B     300          A     200
A     200          A     50
C     100          B     300
A     50           B     100

3.                 4.
ID    AMT          ID    AMT
---------          ---------
A     50           B     300
C     100          A     200
A     200          A     50 
B     300          C     100

 

문제17. ■값이 제일 큰 것은? Ceil (4번)

 

문제18. ■ADD 컬럼명 DATE DEFAULT '날짜‘ NOT NULL (COLUMN 아니라고 합니다)

 

문제19. ■다중 컬럼 서브쿼리 (4번)

 

문제20. ■6월 (JUNE) (4번)

 

문제21. ■between 21일 나오는거 (3번)

 

문제22. ■45번. dense_rank, rank, first_value 2000 1500 1500 1500 (3번)

 

문제23. ■원자성 / 격리성 / 일관성 / 지속성 (3번)

 

문제24. ■44번. sum A>=B 10 10 10 10 -> 100 (3번)

 

문제25. ■not null.unique (4번)

 

문제26. ■ntile(2) 1 4 2 3 (3번)

 

문제27. ■개수가 다른것은? row number=2 / <=2 / (1,2) / 1or2 (1번)

 

문제28. ■rollback 3 (3번) 노랭이기출31번

- 아래와 같은 테이블에 SQL구문이 실행되었을 경우 최종 출력 값을 작성하시오.

[TABLE - 품목]

품목ID    단가
------------
001      1000
002      2000
003      1000
004      2000

[SQL]

BEGIN TRANSACTION
INSERT INTO 품목(품목ID, 단가) VALUES('005', 2000)
COMMIT
BEGIN TRANSACTION
DELETE 품목 WHERE 품목ID='002'
BEGIN TRANSACTION
UPDATE 품목 SET 단가=2000 WHERE 단가=1000
ROLLBACK
SELECT COUNT(품목ID) FROM 품목 WHERE 단가=2000

 

1. 0

2. 2

3. 3

4. 4

 

[해설]

ROLLBACK 구문은 COMMIT되지 않은 상위의 모든 TRANSACTION을 모두 ROLLBACK한다.

 

문제29. ■rollup(A,B) (2번 총계까지 다 나오는거)

 

문제30. ■아래 쿼리문의 결과값을 고르시오. / level<=2 : 0 / 1 / 2 / null (3번)

[SQL]
SELECT COUNT(*) FROM DUAL WHERE LEVEL<=2;


1. 0 
2. 1 
3. 2 
4. NULL

 

문제31. ■개수가 다른것은? count(3) (1번)

 

문제32. ■cascade fk삭제 (2번) -------------------정답여부 논란?

 

문제33. ■소계 (1번 ''나오는거)

 

문제34. ■search case expressions는 바로뒤에 컬럼? 붙는다 (4번)

 

문제35. ■view alter (1번)

 

문제36. ■union. union all 9,10 (4번)

 

문제37. ■trim REPLACE -> trim이 답

 

문제38. ■ESCAPE 6

 

문제39. ■CROSS JOIN (1번)

 

문제40. ■순방향어쩌고-> 널이면 전개안한다 (2번)

 

문제41. ■데이터분석함수 종류 user defined(1번)

 

문제42. ■order by 2 (4번)

 

문제43. ■탑10 서브쿼리 안에 order by가 있어야한다 (3번)

 

문제44. ■올바른 결과값 찾기. 보기가 전부 4x2 표로 구성. 결과값이 null인지 숫자인지 찾는 문제

(밑에 표는 예시. 정답X) (답 2번이라는 의견 다수)

count
Min
Max
...
5
1
A
3

문제45. ■서브쿼리-메인쿼리 문제 (메인쿼리는 서브쿼리 컬럼 쓸 수 없다 / 2번 Select절에 어쩌고 하면 다중컬럼 서브쿼리가 올 수 있다 / 4번 서브쿼리 레벨은 항상 메인쿼리의 영향을 받는다) (답 2번이라는 의견 다수)

*주관식*

문제46.  아래 T1테이블의 SQL 실행 후 결과값을 작성하시오.

[T1]
COL1    COL2    COL3
--------------------
10      NULL     10
NULL    50       10
0       10       10

[SQL]
ㄱ. SELECT SUM(col2) FROM T1;
ㄴ. SELECT SUM(col2) FROM T1 WHERE col1 > 0;
ㄷ. SELECT SUM(col2) FROM T1 WHERE col1 IS NOT NULL;
ㄹ. SELECT SUM(col2) FROM T1 WHERE col1 IS NULL;

 

정답:

ㄱ) 60

ㄴ) NULL

ㄷ) 10

ㄹ) 50 

 

 

문제47.  ORDER BY 한 결과로 3번째 오는 값을 작성하시오.

[TAB1]
ID
----
1
2
3
4


[SQL]
SELECT ID FROM TAB1
ORDER BY (CASE WHEN ID IN(1, 3) THEN ID*3 ELSE ID END) DESC;

 

정답:1

 

문제48.  START WITH CONNECT BY 수행 결과로 LEVEL = 2 인 것의 개수를 구하는 문제

 

정답: 3

 

문제49.  WINDOWS FUNCTION LAG/LEAD 구분하는 문제

결과 테이블이 주어져 있고 LAG/LEAD 함수를 넣는 자리에 빈칸이 되어있음

 

정답: LAG

 

문제50.  빈칸 채우기 GRANT INSERT() TABLE이름 () USER이름;

 

정답: ON, TO