[SQLD] 39회 기출문제 오답노트
5. 정답: 3
해설: 제3정규화는 주식별자를 제외한 칼럼 간에 종속성을 확인해서 종속성이 있으면 분할하는 과정이다.
6. 정답: 3
해설: 교차 엔터티는 M:N 관계를 해소하기 위해서 인위적으로 만들어진 엔터티이다.
예) 학생, 과목 테이블을 이어주는 수강테이블
7. 정답: 2
해설: 테이블 상의 계좌마스터의 기본키가 계좌번호와 고객번호이므로 전체 고객에게 유일한 번호가 할당되는 것은 아니다. 즉, 고객별 유일한 계좌번호가 된다.
고객별 계좌번호가 같을 수 있지만, 한 명의 고객의 계좌번호는 유일하다.
17. 정답: 4
해설: 순위 함수에 ORDER BY를 사용해서 순위를 기준으로 오름차순 혹은 내림차순으로 출력할 수 있다.
RANK() : 중복값은 중복등수, 등수 건너뜀(1위, 1위, 3위, 4위)
DENSE_RANK() : 중복값은 중복등수, 등수 안 건너뜀(1위, 1위, 2위, 2위) *동일 등수 순위에 영향이 없다.
ROW_NUMBER() : 중복값이 있어도 고유 등수 부여(1위, 2위, 3위, 4위)
24. 정답: 2
해설 : CHAR는 길이가 서로 다르면 짧은 쪽에 스페이스를 추가하여 같은 값으로 판단한다. 같은 값에서 길이만 서로 다를 경우 다른 값으로 판단하는 것은 VARCHAR(가변길이 문자형 : 입력한 크기만큼 할당 )로 비교하는 경우이다.
예) CHAR(5)으로 칼럼을 생성하고 입력값이 3개의 문자일때 'abc' → 'abc ' 와 같은식으로 나머지 2개는 공백으로 입력된다.
29. 정답: 3
해설 : 학생과 과목 간의 M:N 관계를 해소하기 위해 수강이라는 교차 엔터티가 사용된다.
35. 정답: 4
해설 : 특정 하나의 값에 대한 자신의 상위 KPI를 검색하는 것으로, MAINKPI가 0부터 출발하여 WHERE SUBKPI가 30이면(특정 하나의값) 30의 상위 KPI (MAINKPI = 20) 이 같이 출력된다.
( 프 → 자 → 부 → 순 ) PRIOR, 자식, 부모, 순방향 전개
( 프 → 부 → 자 → 역 ) PRIOR, 부모, 자식, 역방향 전개
37. 정답: 2
해설 : 서브쿼리에 있는 칼럼을 자유롭게 사용할수 없다
38. 정답: 2
해설 : 오늘 날짜를 구하기 위해서 SYSDATE+1을 해주면된다. 단, 데이트 타입을 문자열 TO_CHAR 로 변환해주어야 한다.
43. 정답: 3개
해설 : 2차 정규화 → 3차 정규화(종속 존재를 분해) 학번,코스코드(FK),평가코드(FK) = 3개
44. 정답: 7.5, 7.45, 7, 7, 8
해설 : ROUND(반올림) → ROUND(7.45, 1)이므로 함수의 첫 번째 인자값인 7.45를 소수점 첫째 자리까지 반올림
ABS(절댓값) : 예) ABS(-7.45) → 7.45
FLOOR(CEIL의 반대, 정수로 내림)
TRUNC(소수점 버림)
CEIL(정수로 올림)
45. 정답: ROLE
해설 : ROLE은 데이터베이스에서 OBJECT(테이블, 프로시저, 뷰) 등의 권한을 묶어서 관리할 수 있다.
49. 정답: 9
해설 : (헷갈리기 쉬운 문제)
SQLD39_42 테이블의 COL1 은 {1, 1, 2, 3, 3} 이렇게 5개가 있습니다.
COL1 을 하나씩 불러오면
문제 WHERE 조건이 A.COL1 = B.COL1 이므로
A.COL1 = 1 일때 B.COL1 = 1 인 레코드 → 2개
A.COL1 = 1 일때 B.COL1 = 1 인 레코드 → 2개
A.COL1 = 2 일때 B.COL1 = 2 인 레코드 → 1개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 → 2개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 → 2개
2+2+1+2+2 = 9
50. 정답: EXISTS
해설 : SQL1 의 결과는 (120, 400) SQL2 에 같은 결과를 반환하기 위해서는 빈칸에 EXISTS를 작성해주어야 합니다.
EXISTS 연산자는 하위 쿼리에 레코드가 있는지 테스트 하는 데 사용됩니다.
하위 쿼리가 하나 이상의 레코드를 반환하는 경우 TRUE 그렇지 않은경우 FALSE
반대 연산자는 NOT EXISTS
EXISTS의 이점은 속도가 빠르다.
IN 연산자의 경우 서브쿼리의 결과 를 전부 구하고 비교를 시행하지만,
EXISTS는 단 하나라도 결과를 발견하면 즉시 리턴한다.(오로지 존재의 여부만 봄)
레코드가 수십만 개가 넘어가는 테이블의 경우에 EXISTS의 효율을 체감할 수 있음
다음 내용
[SQLD] 자주 틀렸던 부분
CASE 문에서 ELSE 생략하면 ELSE에 해당하는 값은 NULL 값으로 출력FROM 절에 아무리 많은 테이블이 나열되더라도 항상 2개씩 조인데이터 관점: 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의
puppy-foot-it.tistory.com