Study Room Doc.02 : SQLD 예상문제 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 21 회기출문제를바탕으로작성 작성자 : 월야루 2016-09-04
객관식 1번풀이사전지식 * 비교연산자 ANY ( 서브쿼리 ) - 서브쿼리의결과에존재하는어느하나의값이라도만족하는조건을의미. 비교연산자로 " > " 를사용했다면메인쿼리는서브쿼리의값들중어떤값이라도만족하면되므로서브쿼리의결과의최소값보다큰모든건이조건을만족 - SOME 과동일 1번해답 : 1번 A.MANAGER_ID = B.EMPLOYEE_ID 이므로 A 테이블의메니저아이디가 B 테이블의직원아이디이므로 A 가직원, B 가상사라고볼수있음 SELECT A.EMPLOYEE_ID AS " 부하직원 ", A.LAST_NAME, A.MANAGER_ID " 상사 ", A.SALARY AS " 부하연봉 ", B.SALARY AS " 상사연봉 " FROM HR.EMPLOYEES A, -- EMPLOYEE SALARY HR.EMPLOYEES B -- MANAGER SALARY WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY; 이므로상사의연봉이어떤부하직원보다도큰결과를뽑는 sql임 2번풀이사전지식 * 비교연산자 ALL ( 서브쿼리 ) - 서브쿼리의결과에존재하는모든값을만족하는조건을의미. - 비교연산자로 " > " 를사용했다면메인쿼리는서브쿼리의모든값을 - 만족해야하므로서브쿼리의결과의최대값보다큰모든건이조건을만족 2번해답 : 2번 A.DEPARTMENT_ID <= ALL(30,50) 이므로 30 보다작고, 50 보다작아야함즉, 30보다작거나같은값이모두해당됨 3번풀이사전지식 NOT IN 의경우조건절이아래와같이변형되어수행됨 LNNVL(V1 <> :B1 ) -----> NULL 인경우 Unkown 으로 True Return. --> 조건절만족, Not Exists 를만족하지않음 HASH AN 으로풀릴경우 A.V1 = B.V1 으로 ACCESS 됨즉, NOT 조건이므로 NULL 연산이 Unknow 으로처리되 True 로반환되는현상이나타남 3 번해답 : 2 번 SQLD_21_02 의 V1 에 NULL 이존재하므로 NOT IN 경우 NULL 로인해모든조건이참이되어 NOT INT 결과 0 건이 RETURN 됨
4번풀이 4번해답 : 1번논리모델링의외래키는물리모델에서반드시구현되지않음. ( 선택사항임 ) 실제데이터베이스구축시참고되는모델은물리적데이터모델링이다개념모델링에서물리모델링으로가면서더구체적이며개념모델링이가장추상적이다데이터모델링의 3요소는 Thing, Attirbutes, Relationship 이다 5 번풀이 5 번해답 : 1 번 6 번풀이 6 번해답 : 3 번 하나의속성은하나의속성값을가지며하나이상의속성값을가지는경우정규화가필요함 7번풀이 7번해답 : 2번학생본인이학번으로주로조회를하기때문에학번이선두컬럼으로있는인덱스가가장적절함학교명이앞으로올경우반드시학교명을적어야하는부담이있음해당문제는 SQLD 보다는 SQLP 에가까운튜닝문제임 8번풀이사전지식 * FLOOR : 숫자보다작거나같은최대정수를리턴 * CEIL/CEILING : 숫자보다크거나같은최소정수를리턴 * TRUNC : 숫자를소수 m 자리에서잘라서리턴 (m default : 0) * ROUND : 숫자를소수 m 자리에서반올림하여리턴 (m default : 0) 8 번해답 : 2 번 TRUNC(3.46) = 3, FLOOR(3.46) = 3, ROUND(3.46)=3 CEIL(3.46) = 4
9번풀이사전지식 * 1차정규형 - 모든속성은반드시하나의값을가져야한다. 즉, 반복형태가있어서는안된다. - 각속성의모든값은동일한형식이어야한다. - 각속성들은유일한이름을가져야한다. - 레코드들은서로간에식별가능해야한다. * 2차정규형 - 식별자가아닌모든속성들은식별자전체속성에완전종속되어야한다. - 이것을물리데이터모델의테이블로말하면기본키가아닌모든칼럼들이기본키에종속적이어야 2차정규형을만족할수있다는것이다 * 3차정규형 - 2차정규형을만족하고식별자를제외한나머지속성들간의종속이존재하면안된다. - 이것이 3차정규형을만족하는것이다. 9 번해답 : 3 번 왼쪽 2 차정규화, 3 차정규화참고
10번풀이사전지식 GROUP BY ROLLUP(DNAME,JOB) GROUP BY GROUPING SET(DNAME,JOB) = GROUP BY DNAME,JOB = GROUP BY DNAME GROUP BY DNAME GROUP BY JOB 모든집합그룹결과 GROUP BY CUBE(DNAME,JOB) = GROUP BY DNAME,JOB GROUP BY DNAME GROUP BY JOB 모든집합그룹결과 10 번해답 : 4 번 GROUPING SETS(A,B,C) = GROUP BY A GROUP BY B GROUP BY C 이므로 4 번만다른결과를도출함 11번풀이사전지식 ANSI SQL 에서조인조건절 (ON 절 ) 에사용된조건절은조인전조건으로작용한다 ON 절이후 WHERE 절에서쓰인조건절은조인후조건절로사용된다 11 번해답 : 4 번 조인조건과조회조건이분리되어야하므로조회조건은 WHERE 절로분리되어야함 OUTER JOIN 이아닌 INNER JOIN 이므로 INNER JOIN 에조회조건분리가된 4 번이맞음 12 번풀이 12 번해답 : 3 번 View 는논리적인 SELECT 를포함하는 OBEJCT 로실제데이터를저장하지않음
13번풀이 * INSERT 구문은 IDENTITY 문제또는 CHECK 문제가주로나옴사전지식 * SQL SERVER : IDENTITY [ ( seed, increment ) ] - SEED : 첫번째행이입력될때의시작값 - 증가되는값 - 해당컬럼에값을넣을경우 Error 발생 (Error 발생을막기위해서는 IDENTITY_INSERT 를 OFF 로하면되나이런경우 IDENTITY 를쓴의미가없어짐 ) 13 번해답 : 1 번 SQL SERVER 의 IDENTITY 로지정된컬럼에는값을넣으면에러가남 ORACLE 의 CHECK 조건을만족하지못할경우에러가나나 NULL 은무시됨 14번풀이 14번해답 : 3번, 4번 Hash Join 은 Non Equal Join 은불가능함. Equal Join 만가능함사전 Sorting 작업이필요한 Join 알고리즘은 Sort Merge Join 임 15번풀이 15번해답 : 1번 Outer Join 이라고표시된 SQL Operation 이존재하지않음 Hash Join 의선행테이블은 SCOTT.DEPT 테이블임 Predicate 정보를보면 DEPT 테이블에대한 Full Scan 후 DNAME ='SALES' 로필터됨 16 번풀이 16 번해답 : 1 번 17번풀이사전지식 * 문자를숫자형으로형변환함 * 예외적으로 LIKE 의경우 COL 을무조건형변환함. 숫자를문자로변환함 17번해답 : 2번 LIKE 의경우컬럼을무조건문자로형변환함. 즉, 해당조건절은 WHERE TO_CHAR(COL1) LIKE '2%' 로변형되어인덱스를사용하지못함 IS NOT NULL 은해당인덱스를 FULL SCAN 할수있으나효율이떨어짐부정형비교는인덱스사용이불가함 18 번풀이 18 번해답 : 4 번 SAPCE 를추가하여길이를맞춰비교하는방법은 CHAR 타입인경우임
19번풀이 19번해답 : 4번 Oracle 의결합함수 : CONCAT / SQL Server : + 20번풀이사전지식 * TOP (Expression) [PERCENT] [WITH TIES] - WITH TIES : ORDER BY 조건기준으로 TOP N 의마지막행으로표시되는추가행의데이터가같을경우 N+ 동일정렬순서데이터를추가반환하도록지정하는옵션 ( 마지막기준공통일경우모두출력 ) 20 번해답 : 2 번 ROWNUM < 4 의의미는 3 건까지출력이므로 TOP(3) 임 WITH TIES 를사용할경우동일데이터가있을때추가건수가출력되는현상이가능함 21 번풀이 21 번해답 : 2 번 NATURAL JOIN 에서사용된열은식별자를가질수없음. 즉 EMP.DEPTNO 와같이 OWNER 명을사용하면에러가남 22번풀이사전지식 * 엔터티기준 - 엔터티는사람, 장소, 물건, 사건, 개념등의명사에해당한다. - 엔터티는업무상관리가필요한관심사에해당한다. - 엔터티는저장이되기위한어떤것 (Thing) 이다. 22번해답 : 3번교수, 학생은논란의여지가없으나, 수강과청약자에서논란이일어남청약자라는개념은관심사라기보다는청약의주체가되는속성에가까운곳으로보임. 속성값을가지기에애매함 * 참고 : 대다수수강이라고했으나청약자로체킹한분이만점으로답으로인정 23번풀이사전지식 CONNECT_BY_ISLEAF : 전개과정에서해당데이터가리프데이터면 1, 아니면 0 CONNECT_BY_ISCYCLE : 전개과정에서자식을갖는데, 해당데이터가조상으로존재하면 1, 그렇지않으면 0 여기서조상이란자신으로부터루트까지의경록에존재하는데이터를말함 SYS_CONNECT_BY_PATH : 하위레벨의컬럼까지모두표시해줌 ( 구분자지정가능 ) CONNECT_BY_ROOT : Root 노드의정보를표시 23 번해답 : 1 번
24번풀이사전지식 FULL OUTER JOIN = LEFT OUTER JOIN UNION RIGHT OUTER JOIN 24번해답 : 1번 25번풀이사전지식 RANGE BETWEEN start_point AND end_point - start_point는 end_point와같거나작은값이들어감 - Default값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW - UNBOUNDED PRECEDING : start_point만들어갈수있으며, 파티션의 first row - UNBOUNDED FOLLOWING : end_point만들어갈수있으며, 파티션의 last row - CURRENT ROW : start, end_point 둘다가능. 윈도우는 CUREENT ROW에서 start하거나 end 함 25번해답 : 4번 UNBOUNDED PRECEDING 은 end point 에사용될수없음 26 번풀이 26 번해답 : 1 번 27번풀이사전지식 Non Equal Join 의경우는조인조건을제외한 Cross 조인후조인조건을필터조건으로처리하는것이좋음 27 번해답 : 3 번 Cross Join 결과 12 건에대한조건체크 ( 조건체크시 NULL 제외 ) 후 SUM A A 1 A 1 A B 1 A 2 2 B 2 B A 3 B 3 B B 3 C A 4 C 4 C B 4 SUM = 12 28 번풀이 28 번해답 : 3 번 서브쿼리, 특히 INLINE VIEW 의컬럼을메인쿼리에서도사용가능함 29 번풀이 29 번해답 : 2 번 DBA 권한은 SYSTEM,SYS 등의상위유저와그에해당하는권한을가진경우부여가능
단답형 1 번풀이 1 번해답 : UPPER 소문자 / 대문자로되어있는경우두개의문자열이같기위해서적용해야하는함수 UPPER 를사용 유사문제 만약주어진테이블의데이터가아래와같을경우는빈칸제거가답임 TABLE SQLD_21_01 TABLE SQLD_21_02 N1 V1 N1 V1 --------- ---------- --------- ---------- 1 A ( 스페이스뒤에있음 ) 1 A 2 2 3 B ( 스페이스뒤에있음 ) 3 B 4 C ( 스페이스뒤에있음 ) SELECT A.* FROM SQLD_21_01 A, SQLD_21_02 B WHERE ( )(A.V1) LIKE B.V1 -> TRIM 2 번풀이 2 번해답 : MAX(LEVEL) 계층형쿼리에서최대계층의수를구하기위한문제. MAX (LEVEL) 을사용하여최대계층수를구함 3번풀이 3번해답 : P. 사원번호 IS NULL NOT EXISTS 의 OUTER JOIN 으로의변형을묻는문제로 NOT EXISTS 는 OUTER JOIN 으로변경시 NOT NULL COLUMN 에대한 IS NULL 체크로 NOT EXISTS 를구현가능하다 유사문제 SELECT... FROM 급여이력 S WHERE NOT EXISTS (SELECT 'X' FROM 사원 P WHERE P. 사원번호 = S. 사원번호 ) SELECT... FROM 급여이력 S (LEFT OUTER) JOIN 사원 P ON (S. 사원번호 = P. 사원번호 ) WHERE P. 사원번호 IS NULL
4번풀이사전지식 ** DNAME 의그룹은 3, JOB 의그룹은 5, DNAME,JOB 의그룹은 9개가형성됨 ** GROUP BY CUBE(DNAME,JOB) = GROUP BY DNAME,JOB GROUP BY DNAME GROUP BY JOB 모든집합 4번해답 : 18건 DNAME JOB Total Emp Total Sal 14 29025 CLERK 4 4150 ANALYST 2 6000 MANAGER 3 8275 SALESMAN 4 5600 PRESIDENT 1 5000 SALES 6 9400 SALES CLERK 1 950 SALES MANAGER 1 2850 SALES SALESMAN 4 5600 RESEARCH 5 10875 RESEARCH CLERK 2 1900 RESEARCH ANALYST 2 6000 RESEARCH MANAGER 1 2975 ACCOUNTING 3 8750 ACCOUNTING CLERK 1 1300 ACCOUNTING MANAGER 1 2450 ACCOUNTING PRESIDENT 1 5000 5 번풀이 5 번해답 : WHERE 6 번풀이 객관식 27 번과동일함 6 번해답 : 7 건 7 번풀이 7 번해답 : 0