Q. 어느 회사의 사원들과 이들이 부양하는 가족에 대한 것으로 밑줄 친 칼럼은 기본키(Primary Key)를 표시한 것이다. 다음 중 ‘현재 부양하는 가족들이 없는 사원들의 이름을 구하라’는 질의에 대해 아래 SQL 문장의 ㉠, ㉡ 에 들어 갈 내용으로 가장 적절한 것은?
사원 (사번, 이름, 나이)
가족 (이름, 나이, 부양사번)
※ 가족 테이블의 부양사번은 사원 테이블의 사번을 참조하는 외래키(Foreign Key)이다.
[SQL 문장]
SELECT 이름
FROM 사원
WHERE ㉠ (SELECT * FROM 가족 WHERE ㉡ )
------------------------------------------------------------------------------------------------------
① ㉠ : EXISTS ㉡ : 사번 = 부양사번
② ㉠ : EXISTS ㉡ : 사번 <> 부양사번
③ ㉠ : NOT EXISTS ㉡ : 사번 = 부양사번
④ ㉠ : NOT EXISTS ㉡ : 사번 <> 부양사번
Q. 다음 중 아래 테이블 정의와 인덱스 현황을 참고하여, 인덱스를 효율적(또는 정상적)으로 액세스할 수 없는 검색조건을 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
Q. 총 건수가 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’;
Q. 다음 중 Syntax 오류가 있는 SQL문 2개를 고르시오.
FROM 직원HAVING COUNT(*) > 3;
② SELECT 직원이름
FROM 직원 JOIN 부서
ON (직원.부서번호 = 부서.부서번호)
WHERE 부서명 = ‘인사과’
③ SELECT 전화번호
FROM 직원
WHERE 전화번호 = ‘777’
GROUP BY 전화번호
④ SELECT 직원이름
FROM 직원 JOIN 부서
USING (부서.부서번호)
WHERE 부서명 = ‘인사과’
Q. 다음 중각 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 ;
→ 실행 결과가 없다.(공집합)
2022.04.13 - [IT/SQLP] - [SQL 기초강의] 1강. SQL의 이해
2022.04.05 - [IT/SQLP] - SQLP 실습 문제 (1-2번)
'IT > SQLP' 카테고리의 다른 글
SQLP 기출문제 3편 (0) | 2022.04.22 |
---|---|
SQLP 기출문제 2편 (0) | 2022.04.21 |
[SQL 기초강의] 2강. SELECT (3) | 2022.04.14 |
[SQL 기초강의] 1강. SQL의 이해 (2) | 2022.04.13 |
[SQLP] 객관식 문제 (2) (0) | 2022.04.06 |
댓글