< SQLD 1차 Offline Study >
- 일시 : 2011. 11. 06. (일) 늦은 4시
- 장소 : 구로디지털단지 (구체적 위치는 11월 3일 스터디 시간에 안내)
- 대상 : SQLD 스터디 멤버 + @ (참관 및 의견공유 환영!!)
- 회비 : 1만원 (세미나실 이용 비용 발생 시 회비지원금 + @ 식비 포함)
그래도 힘들게 모였으니 밥한끼는 같이 하는게 좋을 것 같습니다!! ^-^;;;
- 준비사항 (SQLD 스터디원은 1~4번은 필수 사항입니다.)
1. 교재 복습
2. 연습문제 풀어보기
3. 복습 겸 아래의 문제 풀어보기
4. 기출문제 1인 3문 이상 준비
5. Q & A
다음 중 아래 스키마를 보고 평점이 3.0 이상인 학생들의 이름을 보여주는 SQL을 표현한 것으로 가장 적절한 것은?
--------------------------------------------------------------------------------
<스키마>
※ 밑줄친 속성은 기본키(Primary Key)이며 ENROLL의 학번은 STUDENT의 학번을 참조하는 외래키(Foreign Key)이고, ENROLL의 강좌번호는 CLASS의 강좌번호를 참조하는 외래키이다.
STUDENT(학번, 학과, 이름)
CLASS(강좌번호, 시간, 강좌이름)
ENROLL(학번, 강좌번호, 학점)
--------------------------------------------------------------------------------
①
SELECT 학번, MIN(이름)
FROM STUDENT S, ENROLL E
GROUP BY E.학번
HAVING AVG(E.학점) >= 3.0
②
SELECT S.학번, MIN(이름)
FROM STUDENT S, ENROLL E
WHERE S.학번=E.학번
HAVING AVG(E.학??글>
③
SELECT S.학번, MIN(이름)
FROM STUDENT S, ENROLL E
WHERE S.학번=E.학번
GROUP BY S.학번
HAVING AVG(E.학점) >= 3.0
④
SELECT 학번, MIN(이름)
FROM STUDENT S, ENROLL E
WHERE S.학번=E.학번
GROUP BY S.학번
HAVING AVG(E.학점) > 3.0
다음 중 아래와 같은 테이블에서 Full Outer Join의 결과로 가장 적절한 것은?
[DEPT]
DEPTNO
DNAME
10
RESEARCH
30
SALES
[EMP]
DEPTNO
ENAME
30
KING
40
WARD
SELECT D.DEPTNO, E.DEPTNO
FROM DEPT D FULL OUTER JOIN EMP E
ON (D.DEPTNO = E.DEPTNO)--------------------------------------------------------------------------------
①
DEPTNO
DEPTNO
30
30
②
DEPTNO
DEPTNO
10
30
30
③
DEPTNO
DEPTNO
30
30
40
④
DEPTNO
DEPTNO
10
30
30
40
아래 테이블은 어느 회사의 사원들과 이들이 부양하는 가족에 대한 것으로 밑줄 친 칼럼은 기본키(Primary Key)를 표시한 것이다. 다음 중 ‘현재 부양하는 가족들이 없는 사원들의 이름을 구하라’는 질의에 대해 아래 SQL 문장의 ㉠, ㉡ 에 들어 갈 내용으로 가장 적절한 것은?
[테이블]
사원 (사번, 이름, 나이)
가족 (이름, 나이, 부양사번)
※ 가족 테이블의 부양사번은 사원 테이블의 사번을 참조하는 외래키(Foreign Key)이다.
[SQL 문장]
SELECT 이름
FROM 사원
WHERE ㉠ (SELECT * FROM 가족 WHERE ㉡ )
------------------------------------------------------------
① ㉠ : EXISTS ㉡ : 사번 = 부양사번
② ㉠ : EXISTS ㉡ : 사번 <> 부양사번
③ ㉠ : NOT EXISTS ㉡ : 사번 = 부양사번
④ ㉠ : NOT EXISTS ㉡ : 사번 <> 부양사번
다음 중 아래 테이블 정의와 인덱스 현황을 참고하여, 인덱스를 효율적(또는 정상적)으로 액세스할 수 없는 검색조건을 2개 고르시오. (단, Oracle의 Index Unique Scan, Index Range Scan 또는 SQL Server의 Index Seek 이외의 액세스 방식은 모두 비효율적이라고 가정한다.)
create table 주문 (
주문번호 int not null
, 주문자명 varchar(20) null
, 주문금액 money null
, 주문일자 varchar(8) null
)
create unique index 주문_pk on 주문 (주문번호)
create index 주문_x01 on 주문 (주문자명)
create index 주문_x02 on 주문 (주문일자 , 주문금액)
---------------------------------------------------------------------------
① where 주문번호 between 1 and 10
② where 주문자명 like '%홍길동%'
③ where 주문일자 >= '20100901'
④ where 주문일자 = 20100901
총 건수가 1,000만 건인 연도별지역별상품매출 테이블에 [출시연도 + 크기], [색상 + 출시연도] 순으로 구성된 두 개의 B*Tree인덱스가 있었다. 다음 중 이 두 인덱스를 제거하고 아래와 같이 세 개의 비트맵(Bitmap) 인덱스를 생성했을 때, 개별 쿼리의 블록 I/O 측면에서 개선 효과가 가장 미미한 것은?
create bitmap index 연도별지역별상품매출_bx1 on 연도별지역별상품매출(크기);
---------------------------------------------------------------------------
create bitmap index 연도별지역별상품매출_bx2 on 연도별지역별상품매출(색상);
create bitmap index 연도별지역별상품매출_bx3 on 연도별지역별상품매출(출시연도);
■ Distinct Value
크기 = { NULL, SMALL, MEDIUM, BIG }
색상 = { NULL, RED, GREEN, BLUE, BLACK, WHITE }
출시연도 = { NULL, 2001, 2002, 2003, 2004, 2005 2006, 2007, 2008, 2009, 2010 }
■ 데이터 분포는 모두 균일
① select count(*) from 연도별지역별상품매출 where 색상 is null;
② select count(*) from 연도별지역별상품매출where (크기 = ‘SMALL’ or 크기 is null)
and 색상 = ‘GREEN’
and 출시연도 = ‘2010’;
③ select 색상, count(*) from 연도별지역별상품매출 group by 색상;
④ select sum(판매량), sum(판매금액)from 연도별지역별상품매출
where 색상 = ‘BLUE’;
다음 중 Syntax 오류가 있는 SQL문 2개를 고르시오.
① SELECT 부서번호
FROM 직원HAVING COUNT(*) > 3;
② SELECT 직원이름
FROM 직원 JOIN 부서
ON (직원.부서번호 = 부서.부서번호)
WHERE 부서명 = ‘인사과’
③ SELECT 전화번호
FROM 직원
WHERE 전화번호 = ‘777’
GROUP BY 전화번호
④ SELECT 직원이름
FROM 직원 JOIN 부서
USING (부서.부서번호)
WHERE 부서명 = ‘인사과’
다음 중각 SQL 실행 결과를 가장 올바르게 설명한 것을 2개 고르시오.
① SELECT COL1, COL2 FROM TAB1 WHERE 1 = 2 ;
→ 실행 시 에러가 발생한다.
② SELECT NVL(COL1,'X') FROM TAB1 WHERE 1 = 2 ;
→ 실행 결과로 'X'를 반환한다.
③ SELECT NVL(MIN(COL1), 'X') FROM TAB1 WHERE 1 = 2;
→ 실행 결과로 'X'를 반환한다.
④ SELECT COL1, COL2 FROM TAB1 WHERE 1 = 2 ;
→ 실행 결과가 없다.(공집합)
문제출처 : DB Guide.net
http://www.dbguide.net/da.db?cmd=snb13_view&boardGroupUid=6&boardConfigUid=81&boardUid=151491