반응형

❏ 정규화 하면서 테이블을 분리시킬 때 1:1로할껀지. 1:M으로 할건지 

❏ NVL, NULLIF, COALESCE

❏ 쿼리 주고 결과값 예측

❏ 그룹함수, 윈도우함수 다 쓸줄 알아야함. 그냥 함수란 함수는 다 알고있어야함.

❏ 절차형 SQL 프로시저,트리거,사용자함수 만들기 (끝에 END;)

❏ 비용기반 옵티마이저 구성요소, 옵티마이저의 개념

❏ 인덱스 스캔, 전체 테이블 스캔 차이점

❏ NL JOIN, HASH JOIN, MERGE JOIN 그림 순서   

❏ SQL 문을 빠르게 시간내에 해석할 수 있는 능력. 

 예) 회사원 사원 번호를 나타내는 SQL 문은? 예) 위 SQL 문과 동일한 결과를 나타내는 SQL 문은?

❏ 개요나 정의 지나치지 말기. 예) 데이터베이스의 원자성

❏ SQL의 역사 

❏ SQL에 벤더는 뭐가 있는지

❏ FULL OUTER JOIN 그림 이 안나오고 직접 FULL OUTER JOIN 해서 몇행 몇열인지 구하기

❏ 주 식별자의 특성 (고립성이 격리성, 지속성이 영속성 으로 출제)

❏ 테이블과 SQL 문을 주고 그것에 대한 값이나 테이블로 출력된 형태를 찾기

❏ 최적화 기본 원리 에서 흐름도 그림 보고 조인되는 순서 맞추기

❏ NULL 에 대해서 HASH 파티션 이라고 연관되서 출제

❏ LAG, LEAD

❏ ROLE

❏ 조인 (natural,left,right,full outer,cross)

❏ 다음 중 좋은 모델링에 해당하지 않는 것은?

  1. 기능성 2.중복배제 3.비지니스룰 4.완전성 1번

❏ NULL 과 관계 없는 것을 고르시오. NULLIF, ISNULL, COALESCE, IS NOT NULL

❏ CREATE TABLE TAB1 (

   key1 nunmber PRIMARY KEY,

   c1    character(1)

)

❏ 조건절을 만드는 문장

SELECT GROUPING (XXX)

FROM EMP

GROUP BY _____ (DNAME, JOB)


빈칸 채우기. (ROLLUP) . GROUPING ( ) 소계를 한번 나타냈으면 1, 그렇지 않으면 0






1과목 데이터모델링



1 '학점은 0~4.0 사이의 값만 저장할 수 있다.'와 같이 저장할 데이터 값을 제한하는 것



    1) 도메인

    2) 카탈로그

     ...



정답: 1) 

sqld 가이드 책 연습문제랑 거의 동일(보기는 같고 문제만 살짝 바뀌어서 나왔습니다.) 



 





2. 내부 스키마와 개념 스키마 사이를 연결하는 것    



    1) 물리적 독립성

    2) 개념/내부적 사상

    3) 개념/외부적 사상

    4) 논리적 독립성



정답: 2) 







3. 주식별자의 특징 중 옳은 것들로 짝지어진 것



가. 주식별자에 의해 모든 인스턴스가 구분되어야 한다.

나. 주식별자 구성 속성 수는 최소가 되어야한다.

다. 자주 변하지 않는 값이어야 한다. 

라. 반드시 값이 들어와야 한다.



  1) 가

  2) 가나

  3) 가나다

  4) 가나다라



정답: 4) 가나다라

각각 유일성, 최소성, 불변성, 존재성을 설명하는 것들 이었고 가나다라 모두 옳은 문장이었습니다.











4. 업무에 원래 존재하는 정보로서 독립적으로 생성이 가능한 엔터티를 무엇이라고 하는가?



  1) 기본엔터티

  2) 중심엔터티

  3) 행위엔터티

  4) 개념엔터티



정답: ​1

엔터티의 분류를 묻는 문제로, 마찬가지로 sql가이드 책의 연습문제랑 거의 비슷하게 나왔습니다. 













​5. erd에 대한 설명 중 옳지 않은 것은?



  1) 1976년 피터 첸이 표기법을 만들었다.

  2)  관계명은 중요하다. 

  3) 업무에서 중요한 엔터티는 오른쪽 상단에 배치한다.

...



정답: 

보기의 문장은 정확히 기억이 안나서 의미만 복원해봤는데, 답이 뭔지 모르겠습니다. sqld 가이드 책 p30에는 관계명은 별로 중요하지 않다고 나와있고, 엔터티 배치는 중요한 것부터 왼쪽 상단에 배치하라고 나와있어서 헷갈리네요. 답이 두 개일리는 없고, 제가 문제를 잘못봤을 수도 있겠네요.













​6. 다음 데이터 모델의 문제점과 성능을 향상시킬 수 있는 방법은?



데이터 모델은

    sql가이드 책 p92에 나온 "모델"엔터티가 제시되었습니다. 



1) 2차정규화가 되지 않은 상태이고 ... 

2) 1차정규화가 되지 않은 상태이고 ... 

3) 2차정규화가 되지 않으 상태이고 ...

4) 1차정규화가 되지 않은 상태이고 ...



정답: 

각각의 보기는 몇차 정규화를 위반한 것인지, 그리고 어떻게 해결할 것인지로 구성되어 있었습니다만 정확한 내용은 기억이 안나네요. 



















2과목 sql기본 및 활용



11. 일반집합연산자 중 수학에서 합집합의 기능을 하는 것을 고르시오.

     1) union 

     2) intersect

     3) union all

     4) minus



정답: 1) union 







​12. window 함수에 대한 설명 중 틀린 것을 고르시오.

  1) windowing절에 'range between unbounded preceding and unbounded preceding' 라고 쓸 수 있다.

  2) window함수 중 first_value, last_vale, lead, lag, row_number는 sql server에서는 사용할 수 없다.

  ...



정답: 

 





13. 각 컬럼에 대한 데이터의 분포가 아래와 같을 때 특정 쿼리에 최적화된 인덱스 구성 찾기



분포도

col1 0.5

col2 0.33

col3 0.0001



 (* 분포도: 컬럼에 유일한 값이 3개이면 분포도는 0.33이다.)



쿼리

select col2

from tab01

where col3='1203' and col1='남'



1) col1, col2, col3

2) col3, col1, col2

...



정답: 2) 

(분포도는 SQLD 가이드 책에서 못봤던 개념인데, 문제에서 위에 써놓은 것처럼 제시해줬습니다.)











14. 서브쿼리의 설명  중 틀린 것을 고르시오.

   1) 다중행 서브쿼리의 비교 연산자를 단일행 서브쿼리에 사용할 수 있다.

   2) 연관 서브쿼리는 보통 메인쿼리에 값을 제공하기 위한 목적으로 사용한다.

  ...



정답: 2) 

연관 서브쿼리에 대한 설명과 비연관서브쿼리에 대한 설명을 뒤바꿔서 틀린 설명을 만들었습니다.











15. 아래 테이블에 대해 쿼리를 실행했을 때 결과값 중 옳은 것은?



select ,이름, 지역, sum(s

al) over (partition by deptno order by 지역 range between current row and unbounded following) as sumsal

from tab1;

 deptno
이름 
지역 
 sal
 10
김철수
 서울
 1000
 10
이철수
 서울
 500
 10
장철수 
 서울
 1000
 20
박영희
 경기
 1000
 20
한영희
 경기
 2000
 20
          김영희
 경기
 3000






     1) 결과 쿼리



이름
지역 
sumsal 
김철수
서울
 2500
이철수
서울
 2500
장철수
서울
 2500
박영희 
경기
 6000
한영희
경기
 6000
김영희
경기
 6000


...

​(위 문제는 오늘 나온 문제를 나름대로 비슷하게 만든 것이고 테이블명이나 컬럼명, 컬럼값들은 임의로 만들었습니다. 문제의 키는 윈도우함수(sum)의 wndowing절('지역 range between~')을 이해하는 것입니다.)





 

​ 



16. 옵티마이저에 대한 설명 중 옳지 않은 것



  1) 비용기반 옵티마이저는 통계정보가 바뀌면 실행계획이 바뀔 수 있다.

  2) 규칙기반 옵티마이저 중 우선순위가 가장 높은 것은 single row by rowid이다.

  ... 



정답: 

보기에 위의 두개는 확실히 있었던 걸로 기억하고, 문제가 옳은 것을 찾는거였는지 틀린 것을 찾는거였는지 기억이 안나네요. 정답은 잘 모르겠습니다.











17. 조인에 대한 설명 중 옳은 것

​  1) hash 조인은 인덱스가 없어도 된다.

  2) nl조인은 dw에서 효율이 좋다.

  3) nl조인은 driving테이블의 인덱스가 driven테이블의 인덱스보다 더 중요하다.



정답: 1) 

 





18. 테이블의 구조는 그대로 두면서, 데이터를 모두 지우고 디스크에 쓰여진 공간을 반환하도록 하고자 할 때 옳은 명령어는?



  1) delete 

  2) truncate

  3) drop



정답: 2) 

각각의 명령어에 대한 기능을 묻는 문제 











19. 트리거에 대한 설명 중 옳지 않은 것



  1) 트리거는 데이터베이스에서 자동으로 호출된다.

  2) 트리거는 update, insert, delete시 자동으로 호출된다.

  3) 트리거 내에 tcl을 사용할 수 있다.

  4) 트리거는 로그인에 대해서도 설정할 수 있다.



정답: 3)​ 

프로시져에는 tcl을 사용할 수 있지만, 트리거에는 사용할 수 없습니다. - sql가이드 p440





 





20. pl/sql에 대한 설명 중 옳지 않은 것



1) pl/sql은 하나의 트랜잭션으로 처리되어야 한다.

...



정답:  

보기는 하나밖에 기억이 안나네요. 











21. 쿼리의 결과를 보고 a, b, c, d에 적용된 함수가 올바른 것을 고르시오. 

 

sal
 a
 b
c
d
 400
 1
 1
 1
 1
 300
 2
 2
 2
 1
 300
 2
 2
 3
 1
 200
 4
 3
 4
 2
 100
 5
 4
 5
 2
 



1) rank, dense_rank, row_number, ntile(2)

2) rank, row_number, dense_rank, cume_dist



정답: 1) 

실제 시험에서 쿼리 결과는 특정 컬럼 기준으로 partition되어 있었고, 결과도 조금 더 복잡하게 제시되었으나 간단하게 복원했습니다.







​ 



22. 보기의 테이블이 있을 때 아래의 결과가 나오도록 쿼리 빈칸을 채울 sql 중 올바른 것을 고르시오 (2개)



보기

센서유형   센서코드   수량

a             1              10

a             1              20

b             2              10

b             2              20

c             3              10



쿼리 

select 센서유형, 센서코드, max(수량), sum(수량)

from tab1

(     )



결과

 

 센서유형
 센서코드
 max(수량)
sum(수량) 
null 
1
 20
30 
null
2
 20
30
null
3
 10
10
 null
null 
 20
70 
 



1) group by grouping sets(센서유형, 센서코드)

    having grouping(센서유형) > 0;



2) group by cube(센서유형, 센서코드)

    having 센서유형 is null;  



3) group by rollup(센서유형, 센서코드)

    having 센서유형 is null;



4) group by rollup(센서코드, 센서유형)

    having grouping(센서유형) > 0;



정답:  

컬럼명이 정확히 기억은 안나는데 위의 문제처럼 센서 관련된 것이었고, 정답은 2)번, 4)번으로 했습니다.

order by가 없으면 결과값은 비슷하게 출력되지만 정렬이 다르게 돼서 답이 없는 것 처럼 보이는데, 

제가 문제를 잘못 봤을 수도 있겠네요.

문제의 키는 위에서 나온 rollup, cube, grouping sets, grouing 함수를 이해하는 것 같습니다.





















주관식 

 



43. 'select lower(trim('l' from 'Hello World')) from dual;' 의 결과를 적으시오.



정답: hello world 











44. 아래 결과를 나타낼 수 있도록 [a] 부분을 적으시오.



select ename, sal, [a] over ~...



 ename
sal 
[a] 
 김철수
 100

 이철수
 200
0
 박철수
 300
100 
 김영희
 400
200
 박영희
 500
300 
 

정답: lag(sal,2,0)









45. 권한을 편리하게 관리하기 위한 것으로 중개자 역할을 하는 것



정답: role









46. 아래 테이블과 데이터를 참고하여 not exists 상호관련 서브쿼리의 결과를 적으시오.



select count(*)

~ where exsists (select ~)



위 형태의 쿼리와 테이블에 저장된 데이터가 제시되었습니다. 









47. natural join, left join, full outer join, cross join의 각각의 결과 건수를 순서대로 적으시오.



tab1                      tab2

col1  col2                     col1  col2

3       가                        3      다

3       나                        4      마

3       다                        5      바



natural join => 1건

left join => 3건

full outer join => 5건

cross join => 9건









48. 아래 쿼리와 같은 결과를 출력하도록 괄호를 채우시오.



쿼리 

select *

from player where position <> 'mf';



select * from player

minus 

select *

from player 

where position < 'mf' (    괄호   ) position >'mf';



문제가 정확히 기억나지 않아서 임의로 복원했습니다.

위의 쿼리를 아래와 같이 바꾸라는 형태의 문제였습니다.









​49. emp 테이블에 직급별 인원수는 사원 300명 대리 200명 차장 20명, null이 10명이 있다. 다음 쿼리의 결과 출력되는 건수를 순서대로 적으시오.



select * from emp; =>

select * from emp where 직급 <> '차장' => 

select count(*) group by 직급 => 

 

정답: 530, 500, 4



문제는 조금 다르지만 비슷하게 복원했습니다. 





​50. 트랜잭션의 특성 중 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다는 것을 의미하는 것



정답: 고립성







[출처] 2015/06/06 SQLD 기출|작성자 atnoon



 

--------------------------------------------------------------------------------------





1.트랜잭션의 4가지 속성이 아닌것은?  원자성,영속성,독립성,일관성



2. A 테이블에있는 속성중 한 속성이 B테이블의 데이터들만을 참조할 때 가장 옳은 방식은?

    가. JOIN  나. 기억안남   다. PRIMARY KEY CONSTRAINT  라.FOREIGN KEY CONSTRAINT



3. 우리 은행은 기본예금, 특별예금(?) 으로 구분이되고 원금과 예금기간, 이자율을 관리하려고 한다.

   또한 이로부터 이자를 계산하여 관리하고자 한다 이에대하여 옳지 않은 것은.

    제가 찍은 답만 기억나네요... (가.이자와 이자율은 파생속성이다) - 전 이것을 채택했습니다.



4. 테이블 2개가 주어지고 각 결과 레코드의 수를 쓰는 거였는데, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN,

     FULL OUTER JOIN, 카디션프로덕트 이렇게 5가지를 수행한 결과 레코드의 개수를 각각 쓰시오 였습니다.



5.또 연습문제를 약간 변형시켜서 나온것 있었는데 틀릴뻔 했네요. 각 업무별로 동사적 연관관계가 있는가? 이거였는데

   책에는 명사적 연관관계가 있는가 라고 나와있잖아요 ㅋ 책에서는 오답이었는데 여기서는 명사 대신 동사라고 되어있어서

   답안 대충읽고 틀리다 처리할뻔 했네요.



6.SQL문 결과가 주어지고 SQL 빈칸에 알맞은 것 채우기 였는데 ROLLUP도 나오고 CUBE도 나오고 GROUPING SETS도 

   나왔습니다.



7.아 또 기억나는게 SUM(ALL COL1) 과 SUM(DISTINCT COL1) 과 SUM(COL1)의 차이점도 나왔습니다



8. 키 170 이하 180 이상의 직원을 추출하는 쿼리문에 빈칸채우기 나왔는데 (사실 이게 굉장히 애매한게 출제자의 의도는

   NOT BETWEEN 170 AND 180 이것일거라 생각했는데 마지막까지 의심을 지울 수는 없더군요 왜냐하면

   이상, 이하라는 개념은 170과 180을 포함해야 하는데 NOT BETWEEN 은 170과 180을 배제하거든요 그래서

   AND HEIGHT = 170 OR HEIGHT = 180 을 추가하려고 고민하다가 그냥 말았습니다.(빈칸좌우의 구조가 참... 애매해서 ㅋ)

    

9. 또한 다중칼럼 서브쿼리 나왔습니다. 부서가 20이면서 매니저가 A이고 부서가 30이면서 매니저가 B인것을 쓰는 부분

    (DEPTNO, MANAGER) IN ((20, 'A'),(30,'B')) 저 틀렸네요 문자는 ' ' 이거 써야했는데 ㅜㅜㅜㅜㅜㅜㅜㅜ

  지금 깨달았네요 ㅜㅜ 답안체크하면서  피눈물이 날 줄이야...



10. SELECT 7 + MOD(6/3) + MOD(7/3) + ROUND(7.125) + ROUND(7.125, 2) + CEIL( 7.12) + FLOOR( 7.12)

   뭐 대충 이런식으로 해놓고 결과는??? 이거였습니다.



11. 두 테이블을 놓고 NLJOIN 시에 화살표에 순서정하는것.







반응형
도움이 되셨다면 공감 클릭 부탁드리며
출처만 남겨주시면 글 내용은 마음껏 퍼가셔도 좋습니다 :)