교재에 있는 실전 모의고사 150문제를 모두 풀었고
틀렸거나, 찍어서 맞춘 문제들은
한번씩 왜 틀린건지 만 짚어보고
기출문제로 넘어가자
교재 - 이기적 SQL 개발자 이론서+기출문제 (영진닷컴)
2. 데이터 모델링의 세가지 중요 개념
데이터 모델은 업무가 관여하는 어떤 것(things), 업무가 관여하는 어떤 것의 성격(attributes), 업무가 관여하는 어떤 것의 관계(relationships) 로 구분이 된다.
3. 발생시점에 따라 구분할 수 있는 엔터티의 유형이 아닌 것은?
엔터티는 발생시점에 따라 기본/핵심 엔터티, 중심엔터티, 행위엔터티로 구분이 된다.
6. 데이터 모델의 개념
도메인(domain)은 속성에 대한 값의 범위 등 제약사항을 기술할 수 있다.
7. 엔터티간 1:1, 1:M 과 같이 관계의 기수성을 나타내는 것을 무엇이라 하는가?
엔터티간 1:1, 1:M 등과 같이 관계 참여 인스턴스의 수를 지칭하는 것은 관계 차수이다.
8. 관계를 정의할 때 주요하게 체크해야 한느 사항과 거리가 먼 것은?
관계를 정의할 때 주요하게 체크해야 하는 사항은 업무기술서, 장표에 관계 연결을 가능하게 한느 동사가 있는가 있다.
명사는 거리가 멈
10. 다음 개념에 해당하는 관계는?
보기 - 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 앟고 일반적인 속성으로만 사용한다.
부모엔터티로부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하느 것은 비식별자 관계(non-identifying relationship)에 대한 설명이다.
12. 데이터 모델링에 대한 관계중 아래에서 설명하는 단계는 어떤 단계의 모델링인가?
보기- 추상화 수준이 높고 업무 중심적이며 포괄적인 수준의 데이터 모델링이 진행 된다.
- 전사적 데이터모델링, ea 수립 시 많이 사용 된다.
답 - 개념적 데이터 모델링
전사적 관점에서 기업의 데이터를 모델링 한다.
추상화 수준이 가장 높은 모델링이다.
계층형 데이터 모델, 네트워크 모델, 관계형모델에 관계없이 업무 측면에서 모델링 한다.
13. 엔터티 - 인스턴스 - 속성 - 속성값에 대한 관계 설명중 틀린 것을 고르시오.
하나의 속성은 하나의 속성값을 가지며 하나 이상의 속성값을 가지는 경우 정규화가 필요하다.
14. 다음 중 분산 데이터베이스의 특징으로 가장 부적절한 것은?
분산데이터베이스는 네트워크에 떨어져 있는 데이터베이스를 구축하고 관리해야하기 때문에 처리 비용이 증가한다.
분산 데이터베이스의 장단점
장점 | 단점 |
지역 자치성, 시스템 용량 확장 | 소프트웨어 개발 비용 |
신뢰성과 기용성 | 오류의 잠재성 증대 |
효용성과 융통성 | 처리비용의 증대 |
빠른 응답 속도와 통신비용 절감 | 설계, 관리의 복잡성과 비용 |
데이터의 기용성과 신뢰성이 증가 | 불규칙한 응답 속도 |
시스템 규보의 적절한 조절 | 통제의 어려움 |
각 지역 사용자의 요구 수용 증대 | 데이터 무결성에 대한 위험 |
15. 데이터 모델링 관점
데이터모델링의 3가지 관점
데이터 관점 - 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해서 모델링 하는 방법
프로세스 관점 - 업무가 실제로 하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링 하는 방법
데이터와 프로세스의 상관관점 - 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링 하는 방법
16. hash join 기법에 대한 설명으로 옳은 것은?
해시조인은 CPU 연산이 많이 발생되는 조인으로 조인을 할때 선행 테이블의 크기가 작아야 유리한 조인이다.
HASH JOIN 의 특징
- HASH JOIN 은 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있는 기법이다.
- HASH JOIN 은 해시 함수를 이용하여 조인을 수행하기 땜누에 '=' 으로 수행하는 조인인 동등조건에서만 사용할 수 있다.
- 해시함수가 적용될 때 동일한 값을 항상 같은 값으로 해시됨을 보장한다.
- HASH JOIN 작업을 수행하기 위해서 해시 테이블을 메모리에 생성해야한다.
- 해시 테이블을 저장할 때 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 저장한다
- HASH JOIN 을 수행할 때는 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다.
- 선행 테이블을 BIULD INPUT이라고 하며, 후행 테이블은 PROVE INPUT 이라 한다.
17. 설명하는 속성의 종류
속성의 종류
기본속성 - 업무로 부터 추출한 모든 속성이 여기에 해당하며 엔터티에 가장 일반적이고 많은 속성을 차지한다. 코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호와 같은 설계속성이나 다른 속성을 계산하거나 영향을 받아 생성된 속성인 파생속성을 제외한 모든 속성은 기본 속성이다.
설계 속성 - 업무상 필요한 ㄴ데이터 이외에 데이터 모델링을 위해, 업무를 규칙화 하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 원래 속성을 업무상 필요에 의해 변형하여 만든 코드성 속성이 이에 해당하고 일련번호와 같은 속성은 단일한 식별자를 부여하기 위해 모델상에서 새로 정의하는 속성이다.
파생속성 - 다른 속성에 영향을 받아 발생하는 속성으로서 보통 게산된 값들이 이에 해당된다. 다른 속성에 영향을 받기 때문에 프로세스 설계시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 적게 정의하는 것이 좋다.
18. 3차 정규화에 대한 설명으로 옳은 것을 고르시오
정규화 종류 | 정규화 내용 |
제1정규화 | 모든 속성은 중복된 값을 가지지 않는다 (각 속성에 대한 도메인을 원자값으로 구성한다.) |
제2정규화 | 식별자의 부분 속성에 대해서만 종속관계인 부분함수 중속을 제거하여 식별자 전체 속성에 대해서 종속관계인 완전 함수 종속을 구성한다. |
제3정규화 | 식별자를 제외한 일반 속성 간에 종속을 제거한다. |
보이스-코드정규화 | 다수의 주식별자를 분리시킨다. |
19. 데이터 모델 정규화 대상 확인
기본키가 2개이거나 종속자가 결정자중 일부에만 종속되었기 때문에
1차정규화를 한 상태이고 2차정규화가 필요한 상태이다.
20. 다음 모델의 배송 엔터티에서 고객의 정보를 찾을 때, 성능 향상과 SQL 문장을 단순화 하게 할 수 있도록 가장 적절한 반정규화 방법은 무엇인가? ( 전제사항 - 주문모록 엔터티에서는 고객의 주식별자를 상속받기를 원하지 않음, 배송엔터티에서는 고객 엔터티의 모든 속성을 참조하기를 원함)
해설 - 고객 엔터티의 모든 속성을 참조하기를 원할 때 가장 효율성이 좋은 반정규화 기법은 관계를 중복하는 방법이며 이를 적용하면 두 테이블의 조인 경로를 단축하게 되고 SQL 문장을 단순하게 구성할 수 있다.
22. 다음 슈퍼타입/서브타입 모델에서 설계단계에서 변환할 수 있는 테이블의 형태가 아닌 것은?
논리적인 데이터 모델에서 이용이 되는 슈퍼/서브 타입의 데이터 모델을 성능을 고려한 물리적엔 데이터 모델에서 변환하는 방법은 세가지 ( 1:1타입, 슈퍼+서브타입, ALL IN ONE 타입) 이 있다.
23. 다음중 분산 데이터베이스의 투명성(Transparency) 에 속하지 않는 것은?
분산 데이터베이스의 투명성의 종류에는 분할투명성, 위치투명성, 지역 투명성, 복제투명성, 병행투명성, 장애투명성 이 있다.
24. 테이블의 반정규화 기법 중 데이터 무결성을 깨뜨릴 위험을 가지 않고서도 데이터 처리의 성능을 향상 시킬 수 있는 기법은?
- 테이블과 칼럼의 반정규화는 데이터 무결성에 영향을 미치지만 관계의 반정규화 기법 중 중복관계 추가는 데이터 무결성을 깨뜨릴 위험을 갖지 않고서도 데이터 처리의 성능을 향상시킬 수 있다.
- 데이터 모델 전체가 관계로 연결되어 있고 관계가 서로 먼 친척 간에 조인 관계가 빈번하게 되어 성능 저하가 예상 된다면 관계의 반정규화를 통해 성능향상을 도모할 필요가 있다.
25. ERD 관계
- ERD 관계에서 계정 그룹은 다수의 계정을 포함할 수도, 안할 수도 있다.
- 계정은 반드시 단 하나의 계정 그룹에 소속 되어야 한다. 왜냐하면 외래키를 쓰고있기 때문
26. 분산 데이터베이스의 특징 중 저장장소 명시가 불필요 하다는 특성은 무엇인가?
위치투명성이란 사용하려는 데이터의 저장 장소 명시가 불필요하며 위치정보가 SYSTEM CATALOG에 유지되어야 함을 말한다.
지역 사상 투명성 이란 지역 DBMS 와 물리적 DB 사이의 MAPPING 을 보장한다. 각 지역 시스템과 이름과 무관한 이름 사용이 가능하다.
28. 데이터 모델링이 최종적으로 완료된 상태라고 정의히ㅏㄹ 수 있는, 즉 물리적 스키마 설계를 하기 전 단계를 가리키는 말은?
논리적 데이터 모델링의 결과로 논리 데이터 ㅁ도ㅔㄹ은 데이터 모델링이 최종적으로 완료된 상태라고 정의할 수 있다. 즉, 물리적인 스키마 설계를 하기 전 단계의 '데이터모델' 상태를 일컫는 말이다.
29. 엔터티에 대한 개념 중 엔터티 정의의 공통점 3가지가 아닌 것은?
엔터티의 3가지 공통점
- 개념, 사건, 사람, 장소 등과 같이 명사이다.
- 비즈니스 프로세스에서 관리되어야 하는 정보이다.
- 저장이 필요한 어떤 것이다.
32. 데이터 유형에 대한 설명중 틀린 것은 무엇인가?
VARCHAR 는 가변 길이 문자형이다.
CHAR 유형은 고정 길이 문자형
NUMERIC 유형은 숫자형 데이터를 표현한다.
37. 어떠한 데이터 타입도 사용이 가능한 집계 함수는 어느 것인가?
MAX, MIN, COUNT 함수는 숫자 유형만 아니라 문자유형, 날자유형에도 적용이 가능한 함수이다.
39. SQL 문장 ORDER BY 절
ORDER BY 절에서 정렬 기준이 생략되면 default 로 ASC 정렬이 되고 ORDER BY 절에는 칼럼명 대신에 SELECT절에 기술한 칼럼의 순서번호나 칼럼의 ALIAS 명을 사용할 수 있다.
40. 다음 SQL 문장에서 틀린 부분은 어디인가?
FROM 절에 테이블에 대한 ALIAS 를 사용했을때 중복된 이름이 있는 경우 SELECT 절에서는 반드시 ALIAS 명을 사용해야 한다.
41. 다음 JOIN 에 종류에 대한 설명으로 틀린 것은 무엇인가?
EQUI JOIN 은 반드시 기본키 외래키 관계에 의해서만 성립되는 것은 아니다. 조인 칼럼이 1:1로 맵핑이 가능하면 사용할 수 있다.
43. 다음 설명중 틀린것
UNION ALL 연산자는 조회 결과에 대해 별도의 정렬 작업을 하지 않는다. 또한 중복 데이터에 대해서도 삭제하지 않고 여러번 중복 표현된다.
INTERSECT 연산자는 조회 결과에 대한 교집합을 의미한다.
44. 다음 중 SELF JOIN 을 수행해야 하는 때는 어떤 경우인가?
SELF JOIN 은 하나의 테이블에서 두개의 칼럼이 연관 관계를 가지고 있는 경우에 사용한다.
45. 일반적으로 FORM 절에 정의된 후 먼저 수행되어 SQL 문장 내에서 절차성을 주는 효과를 볼 수 있는 것은 어떤 유형의 서브 쿼리 문장인가?
FROM 절에 정의된 서브쿼리는 INLINE VIEW 이다. INLINE VIEW 는 일반적으로 메인 쿼리보다ㅏ 먼저 수행되므로 SQL 문장 내에서 절차성을 주는 효과를 얻을 수 있다.
46. 다음 서브쿼리에 대한 설명 중 틀린 것을 고르시오
상호연관 서브쿼리는 서브쿼리가 메인 쿼리의 행 수 만큼 실행되는 쿼리로서 실행속도가 상대적으로 떨어지는 SQL 문장이다. 그러나 복잡한 일반 배치 프로그램을 대체할 수 있기 때문에 조건에 맞는다면 적극적인 검토가 필요하다.
52. 실행 계획에 대한 설명으로 적절하지 않은 것은?
동일 SQL 문에 대해 실행 계획이 다르다고 결과가 달라지지는 않는다. 그러나 실행 계획의 차이로 성능이 달라질 수 있다.
56. 다음 중에서 DDL 에 해당되지 않는 것은?
DDL (Data Definition Language) 은 SQL 문 중에서 생성에 관련된 것으로 create table, alter table, drop table, create view, drop view 가 있다.
REVOKE 는 권한을 삭제하는 것으로 DCL 이다.
59. 다음의 SQL문에 대한 설명으로 올바르지 않은 것은?
그룹 함수를 사용하는 경우 NULL 값은 연산에서 제외된다. 그래서 NVL 함수를 사용하는 것은 합계 오류 예방과는 전혀 관계가 없다.
60. 권한 부여 SQL문
GRANT 는 권한을 부여하는 SQL 문이다. 반대로 권한을 취소하는 것은 REVOKE 이다.
GRANT CREATE TABLE ON EMP TO JOODASA;
61.
create table tab1 (
qwe number(5) );
insert into tab1 values(1);
insert into tab1 values(2);
update tab1 set qwe=7 where qwe=2;
insert into tab1 values(9);
하면 결과는
1 7 9 가 나옴
62. 두 sql문은 같은 결과값을 반환함
GROUP BY CUBE(DEPTNO, JOB);
=
GROUP BY GROUPING SETS(DEPTNO, JOB, (DEPTNO, JOB), () );
64. 게층형 쿼리
START WITH - 트리구조 최상위 행
CONNECT BY PRIOR 자식=부모 => 부모->자식 방향
CONNECT BY PRIOR 부모=자식 => 자식->부모 방향
68. 그룹 내 순위 함수
RANK() - 레코드 단위로 순차적으로 순위를 부여하며 같은 값에 대해서는 동일한 순위를 부여하고 중복된 순위 다음에는 해당 개수만큼 건너뛴 다음 순위를 부여한다.
ROW_NUMBER() - 레코드 단위로 동일한 값이라도 매번 새로운 순위를 부여한다.
DENSE_RANK() - 중복된 순위 다음에 바로 다음 순위를 부여한다.
69. null 을 조건문에 쓸때 is null 로 하는게 맞는듯
73. rollup
ROLLUP 은 칼럼별 소계와 전체합계를 계산해준다.
74. ALL 연산자는 서브쿼리 값 모두가 조건에 만족하면 TRUE 를 반환한다.
75. SELECT 'X' 이거는 그냥 무시해도 되는거고 뒤에 오는 WHERE 을 쓰기 위한 더미값인듯
77. A 테이블에 행이 4개, B 테이블에 행이 3개 있다
INNER JOIN - 두 테이블에서 같은 것만 찾음
LEFT OUTER JOIN - INNER JOIN 했을때 같은 것 2개 말고도 행이 2개 더있는데 그걸 모두 출력
RIGHT OUTER JOIN - INNER JOIN 했을때 같은것 2개 말고도 행이 1개 더있는데 그걸 모두 출력
78. CUBE 는 전체합계와 각 칼럼별로 부분합계를 출력한다.
행수=CUBE 나오는 칼럼 수 + 칼럼별 합계 행 수 + 전체합계 행
79.
LIKE 검색 문자열 앞뒤에 모두 % 기호를 붙이면 정상적인 INDEX RANGE SCAN 이 불가능 하다.
81. 인덱스를 사용하라 수 없는 경우
NVL(key,0) 를 사용했을 때
to_char 함수로 인덱스 키 칼럼을 형변환 할때
'||" 는 문자열을 결합하는 것으로 인덱스를 변경하게 되어 인덱스를 사용할 수 없음
85. SORT MERGE 방식이 Nested Loop 보다 효율적일 때
기본키와 외래키 관계ㅔ서 외래키에 인덱스가 없을 때
86. table을 탐색하지 않는 즉, 테이블을 참조하지 않는 인덱스를 생성
IOT ( Index-Organized Table )
87. 다중 행 쿼리 기법
all : 서브쿼리의 결과값 중 모든 값이 만족되어야 결과값을 반환한다.
any : 서브쿼리의 결과값 중 어느 하나의 값이라도 만족이 되면 결과값을 반환한다.
LIKE - 문자열 의 패턴 을 검색하는데 사용
88. X
90. WHERE 절 서브쿼리
WHERE 절에 서브쿼리를 사용할 수 있으나 다수 값이 반환되면 IN 을 써줘야함
단일값이면 IN 을 안써줘도 되긴 함
92. GROUP BY 조건절
GROUP BY 에 조건을 걸기 위해서는 HAVING 절을 사용해야 함
은근 숫자랑 영어로 장난침
93. 인덱스 튜닝
인덱스 칼럼 순서를 아무리 바꿔도 테이블 RANDOM ACCESS 횟수는 줄지 않는다.
96. NULL 연산
SQL 문에서 NULL과 NULL 을 비교할 수 없다. 만약 NULL 값을 조회하려면 IS NULL 을 사용해야 하고 NULL 이 아닌 것을 조회하려면 IS NOT NULL 을 사용해야 한다.
97. 순서 관련 함수
FIRST_VALUE
LAST_VALUE
LAG 가 순서 관련 함수이다.
99. X
102. CASE 문에서 ELSE 를 생략하면 어떤 현상이 발생하는가?
ELSE 조건이 만족하게 되면 NULL이 리턴된다.
104. 우선순위를 계산하는 윈도우 함수에서 동일한 우선순위가 나와도 고유한 값을 부여하기 위한 방법으로 올바른 것은 무엇인가?
ROW_NUMBER();
106. ROWNUM 사용할때 문자열이랑 사용하려면 인라인뷰랑 같이 사용해야 하는듯?
107. SQL 개선 측면에서 서브쿼리의 종류
ACCESS SUBQUERY - 쿼리의 변형이 없고 제공자의 역할을 하는 서브쿼리
FILTER SUBQUERY - 쿼리의 변형이 없고 확인자 역할을 하는 서브쿼리
EARLY FILTER SUBQUERY - 쿼리의 변형이 없고 서브쿼리가 먼저 실행하여 데이터를 걸러낸다.
109. ANSI/ISO 표준 SQL 에서 두 테이블 간에 동일한 칼럼 이름을 가지는 것을 모두 출력하는 조인 방식
NATURAL JOIN
110. 차수와 카디널리티
차수는 결과로 나올 수 있는 행들의 수고
카디널리티는 그중 선택된 행들의 수이다.
사실 잘 몰루
112. 외래키로 참조한 테이블 삭제
테이블 만들때 ON CASCADE 로 만들었어서 지울때 참조되는 행이 같이 지워지고
이후 COUNT() 하는 문제가 나옴
113. 함정문제
COUNT(번호) 해놓고 월급에 NULL 값이 존재할 수 있음을 물어봄
문제 잘읽어야겠다
115. 숫자형 함수
SIGN() = 양수 음수 0을 구분해줌, 양수면 1 리턴, 음수면 -1 리턴, 0이면 0리턴
120. EMP 테이블에서 EMPNO가 7689이 있으면(EXISTS 구 사용) DETPNO 30번에 대해서 EMPNO, ENAME, DEPTNO를 조회하는 SQL 문을 작성하시오
SELECT EMPNO, ENAME, DEPTNO FROM EMP
WHERE EXISTS ENPNO=70 IN EMP
GROUP BY DEPTNO
HAVING DEPTNO=30;
정답 :
SELECT EMPNO, ENAME, DEPTNO FROM EMP
WHERE EXISTS (SELECT * FROM EMP WHERE EMPNO=7689) AND DEPTNO=30;
121. X
122. X
123. 다음의 SQL문과 그 결과를 보고 효과적인 인덱스를 생성하시오
보기 - SELECT SAL FROM EMP ORDER BY SAL DESC;
CREATE INDEX IDX_SAL ON EMP(SAL DESC);
124. EMP 테이블에서 1부터 5개의 행만 조회하는 SQL 문을 작성하시오. 작성할 SQL 문은 ROWNUM 을 사용하시오
SELECT * FROM EMP
WHERE (SELECT 'X' FROM
WHERE ROWNUM<6);
답 :
SELECT *
FROM (SELECT ROWNUM AS LIST, EMPNO FROM EMP)
WHERE LIST <=5;
125. ANY 사용한 함정 문제
ANY는 하나라도 조건을 만족하면 참
126. 인덱스
인덱스에 변형이 일어나면 실행이 되지 않는다
있는 그대로의 인덱스를 비교문을 활용해서 사용하는건 괜찮지만 + - 등으로 변형해서 사용하면 에러가 난다
127. COUNT(*)
JOIN 조건 없이 2개의 테이블에 대해 COUNT(*)하면 카테시안 곱이 일어난다.
129. NTILE(N)
NTILE(N) 은 데이터를 N 값으로 N등분 하는 함수이다.
130. LAG()
LAG() 윈도우 함수는 이전 행의 몇번째 행 값을 가지고 올 수 있다.
LEAD() 윈도우 함수는 다음 행의 몇번째 행 값을 가지고 올 수 있다.
131. ANY ALL
ALL 은 전부 일치한느 것만 출력 AND 라고 생각하면 됨
ANY 는 OR 라고 생각하면 된다.
132. X
134.
135.
136.
137.
141. UNION
UNOIN 혹은 UNION ALL 구를 사용할 때는 상위 SQL 문의 칼럼 수와 데이터 타입이 모두 일치 되어야 한다.
안그러면 실행이 안됨
142. DECODE
DECODE(EMPNO, 1, 'A', 'B')
ENPNO가 1이면 A 출력, 아니면 B 출력
144. CUME_DIST()
CUME_DIST() 함수는 주어진 그룹에 대한 상대적인 누적분포도 값을 반환하는 것으로 분포도 값(비율)은 0초과 1이하 사이의 값이다.
147.
148.
149. NULL
SQL SERVER 는 NULL 값을 인덱스 맨 앞에 저장한다
Oracle 은 NULL 값을 인덱스 맨 뒤에 저장함
150. UNION 변형
- SELECT - WHERE - GROUP BY 로 변형 가능
'파이썬 > SQLD' 카테고리의 다른 글
[SQLD] 5.28 SQLD 시험 후기 (0) | 2022.05.30 |
---|---|
[SQLD] 시험준비 4주 4일차 - 기출문제 오답노트 (0) | 2022.05.27 |
[SQLD] 시험준비 4주 2일차 3 - SQL 기본 및 활용 단원정리문제 (0) | 2022.05.25 |
[SQLD] 시험준비 4주 2일차 2 - SQL 최적화의 원리 + 확인문제 (0) | 2022.05.24 |
[SQLD] 시험준비 4주 2일차 1 - SQL 활용 확인문제 (0) | 2022.05.24 |