Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30
단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INTO TAB1 VALUES ('2',''); INSERT INTO TAB1 VALUES ('3',''); -- Oracle -- SQL Server SELECT SUM(LENGTH(COL1) ), SUM(LENGTH(COL2) ) SELECT SUM(LEN(COL1) ), SUM(LEN(COL2) ) ; ; 2. 아래와같이문자와문자를연결하는함수에대해서작성하시오. SELECT ( ) (COL1, COL2) FROM EMP WHERE EMPID = 10; 3. 아래와같은테이블이있을때아래와같은 SQL 의수행결과에대해작성하시오 TAB1 COL1 COL2 Z 10 Y 20 ` X 30 SELECT COUNT(*) WHERE COL1 = 'X' AND COL2 < 20; 4. 아래와같은테이블이있을때하루에 2 번이상주문하는대상을조회하는 SQL 을완성하시오 TAB1 ` 주문번호주문일자고객명. SELECT 주문일자, 고객명, COUNT(*) GROUP BY 주문일자, 고객명
( ) 5. 아래와같은수행결과가나오도록 SQL 을완성하시오 SELECT CASE GROUPING (DNAME) WHEN 1 THEN 'All Departments' ELSE DNAME END AS DNAME, CASE GROUPING (JOB) WHEN 1 THEN 'All Jobs' ELSE JOB END AS JOB, COUNT(*) "Total Empl", SUM(SAL) "Total Sal" FROM EMP, DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO GROUP BY ( ); < 실행결과 > 6. 아래와같은수행결과가나오도록 SQL 을완성하시오 SELECT 매출월, 매출액, ( ) AS 누적매출 FROM 매출집계 WHERE 매출월 >= '201701'; < 실행결과 > 매출월매출액누적매출 201701 1000 1000 201702 2000 3000 201703 3000 6000 201704 1000 7000
201705 400 7400 201706 5000 12400 7. Object 의권한이나 Role 을부여할때사용하는명령어는 GRANT 이다. 부여된권한을회수하는명령어는? ( ) 8. 아래와같은상황에서사용되는 SQL Join Mechanism 을작성하시오 조건 1 : TAB1 과 TAB2 를조인하여결과를가져와야한다. 조건 2 : 두개테이블에는인덱스가없다. 조건 3 : Equal Join 에서만해당조인방식을사용할수있다. 단답형 (25 회기출문제 ) 1. 아래와같은명령어가순서대로수행된이후의결과를작성하시오 < 단계별 SQL 수행 > - 01 : CREATE TABLE TAB1 (N1 NUMBER, N2 NUMBER) ; - 02 : INSERT INTO TAB1 VALUES (1,1); - 03 : INSERT INTO TAB1 VALUES (2,2); - 04 : CREATE TABLE TAB2 (V1 VARCHAR2(10), V2 VARCHAR2(10)); - 05 : ROLLBACK; - 06 : SELECT COUNT(*) ; 2. 아래와같은테이블에대한수행결과가다음과같을때빈칸을완성하시오 < 테이블구조 > TAB1 COL1 COL2 A01 10 A02 20 ` A03 30 NULL 40 ** 문자열이아닌 NULL 임 NULL 50 ** 문자열이아닌 NULL 임 < 실행결과 > CO1 CO2 A02 20 A03 30 NULL 40 NULL 50
< 수행 SQL> SELECT COL1, COL2 WHERE ( ); NVL(COL1, 'X') <> 'A01' 3. 아래와같은테이블에대한수행 SQL 결과에대해서작성하시오 < 테이블구조 > TAB1 COL1 COL2 TAB2 COL1 COL3 A01 10 A01 가 A02 20 A02 나 ` A03 30 ` A03 다 A10 40 A04 라 A11 50 A05 마 < 수행 SQL> SELECT COUNT(*) FROM ( ); SELECT A.COL1, B.COL3 A INNER JOIN TAB2 B UNION ON (A.COL1 = B.COL1) SELECT A.COL1, B.COL3 A LEFT OUTER JOIN TAB2 B UNION ON (A.COL1 = B.COL1) SELECT COL1, COL3 NATURAL INNER JOIN TAB2 4. 쿼리를수행하는데소요되는일량또는시간을기반으로최적화를수행하는옵티마이저는무엇인지작성하시오. ( ) 옵티마이저 5. 아래와같은테이블이있을때 SQL 수행결과와동일한결과를얻기위한 SQL 을작성하시오. < 테이블구조 > TAB1 COL1 COL2 COL3 한국 A01 1000 한국 A01 2000 ` 한국 A02 5000 한국 A02 3000 중국 B01 100
중국 B01 200 중국 B03 500 미국 C01 10000 미국 C01 20000 미국 C03 5000 < 실행결과 > COL1 COL2 CNT T_SUM 미국 C01 2 30000 미국 C03 1 5000 미국 3 35000 중국 B01 2 300 중국 B03 1 500 중국 3 800 한국 A01 2 3000 한국 A02 2 8000 한국 4 11000 10 46800 < 수행 SQL> SELECT COL1, COL2, COUNT(*) AS CNT, SUM( 연봉 ) AS T_SUM GROUP BY ( ) ORDER BY 1,2; 6. 5 번의테이블구조에서아래와같은누적 SUM 을구하기위한 SQL 을완성하시오.(COL3 기준으로정렬된누적평균임 ) < 실행결과 > COL1 COL2 COL3 누적평균 미국 C03 5000 5000 미국 C01 10000 7500 미국 C01 20000 11667 중국 B01 100 100 중국 B01 200 150 중국 B03 500 267 한국 A01 1000 1000 한국 A01 2000 1500 한국 A02 3000 2000 한국 A02 5000 2750 < 수행 SQL> SELECT COL1, COL2, ROUND ( AVG (COL3) OVER( ), 0) AS 누적평균
ORDER BY COL1, COL3; 7. 아래와같은결과처럼파티션별윈도우에서제일먼저나오는것을 0 으로, 제일늦게나오는것을 1 로하여값이아닌 행의순서별백분율을구하는 Window Funciton 은무엇인가? ( ) < 실행결과 > 8. 프로그래밍에서사용되는중첩된반복문과유사한방식으로조인을수행하는방식을무엇이라하는가? ( ) 단답형 (24 회기출문제 ) 1. 아래와같은트랜잭션이일어났을때트랜잭션종료후값이트랜잭션의어느속성을위배하는가? ( ) Time Session 1 *** 문제의예제가적절하지는않음. 하나의트랜잭션에서중간 Erorr Start 10,000 발생후 commit 이되었을때그값이변했다를의미함. T1 Update 이러한현상이발생하면어떤트랜잭션속성을위배했는지를묻는 T2 Error 문제임 T3 Update T4 Commit End 9,000 3. 아래와같은테이블이있을때수행결과와같은 SQL 을작성하시오 < 테이블구조 > TAB1 COL1 COL2 COL3 0001 001 1500
0002 001 1500 ` 0003 001 1000 0004 001 500 0005 002 1000 0006 002 1000 0007 003 500 0007 004 1000 < 수행 SQL> SELECT * FROM ( SELECT COL2, ( ) WHERE MOD(RNUM,2)=1; ) OVER (PARTITION BY COL2 ORDER BY COL3 ) RNUM < 수행결과 > COL2 COL3 RNUM 001 500 1 001 1500 3 002 1000 1 003 500 1 004 1000 1 *** 동일등수를허용하지않으며등수에서짝수등수는제외함 4. 아래와같은 SQL Set Operation ( 색칠부분 ) 이무엇인지작성하시오. ( ) 5. 아래와같은계층구조로되어있는데이터에대해서아래 SQL 수행결과를작성하시오. (, ) < 테이블구조 > TAB1 EMP_ID MGR_ID DEPT_NM A HEADROOM B A HEADROOM ` C A HEADROOM D C TECH
E C TECH < 수행 SQL> SELECT COUNT(EMP_ID), COUNT(MGR_ID) FROM TEST_24_10 WHERE 1=1 START WITH MGR_ID IS NULL CONNECT BY PRIOR EMP_ID = MGR_ID; 6. 아래와같은계층구조로되어있는데이터에대해서계층형결과를보여주는 SQL 을작성하시오. < 테이블구조 > TAB1 EMP_ID MGR_ID DEPT_NM A HEADROOM B A HEADROOM ` C A HEADROOM D C TECH E C TECH < 수행결과 > LEVEL 사원관리자 ISLEAF DEPT_NM 1 A 0 HEADROOM 2 B A 1 HEADROOM 2 C A 0 HEADROOM 3 D C 1 TECH 3 E C 1 TECH < 수행 SQL> SELECT LEVEL, LPAD(' ', 4 * (LEVEL-1)) EMP_ID 사원, MGR_ID, CONNECT_BY_ISLEAF ISLEAF, DEPT_NM FROM TEST_24_10 WHERE 1=1 START WITH MGR_ID IS NULL CONNECT BY PRIOR ( ); 7. Self 조인관련된문제로미복원 ( 추후대체문제로복원 ) 8. Self 조인관련된문제로미복원 ( 추후대체문제로복원 ) 단답형 (21 회기출문제 )
1. 아래와같은테이블이있을때아래와같은결과가나오기위한주어진 SQL 구문을완성하시오 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 '%' RESULT> N1 V1 1 a 3 b 2. EMP 테이블은사원과메니저의정보를담은계층형데이터를포함한테이블이다. 메니저부터사원까지결제단계가가장많은레벨을구할려고할때빈칸을완성하시오 SELECT ( ) FROM SCOTT.EMP START WITH MGR IS NULL CONNECT BY PRIOR EMPNO = MGR; 3. 아래의 NOT EXISTS 구문을동일한결과를출력하는 SQL 로변경할때빈칸을완성하시오 SELECT... FROM 급여이력 S WHERE NOT EXISTS (SELECT 'X' FROM 사원 P WHERE P. 사원번호 = S. 사원번호 ) SELECT... FROM 급여이력 S LEFT OUTER JOIN 사원 P ON (S. 사원번호 = P. 사원번호 ) WHERE ( ) 4. 아래 SQL 의출력되는 ROWS 의개수를구하시오 EMP TABLE DEPTNO JOB SAL DEPT TABLE DEPTNO DNAME 20 CLERK 800 10 ACCOUNTING
30 SALESMAN 1600 20 RESEARCH 30 SALESMAN 1250 30 SALES 20 MANAGER 2975 40 OPERATIONS 30 SALESMAN 1250 30 MANAGER 2850 10 MANAGER 2450 20 ANALYST 3000 10 PRESIDENT 5000 30 SALESMAN 1500 20 CLERK 1100 30 CLERK 950 20 ANALYST 3000 10 CLERK 1300 SELECT DNAME,JOB, COUNT(*) "Total Emp", SUM(SAL) "Total Sal" FROM SCOTT.EMP A, SCOTT.DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(DNAME,JOB) 5. 아래와같은 SQL 이있을때조건절을넣기위한키워드는무엇인지작성하시오 SELECT * FROM EMP ( ) EMPID = 10; 6. 아래의 SQL 의결과로나오는 ROWS 의수는? TAB1 COL1 TAB2 COL2 1 1 2 2 3 4 SELECT * A, TAB2 B WHERE A.COL1 <> B.COL1; 7. 아래의 SQL 의출력결과를작성하시오. TAB1 COL1 COL2 TAB2 COL1 COL2 Z 10 Y 1 Y 20 Y 2
X 30 Y 3 SELECT COUNT(*) WHERE EXISTS (SELECT 1 FROM TAB2 WHERE TAB2.COL1 = 'X');