본문 바로가기

데이터분석(DataBase)/MySQL

MySQL로 배우는 데이터베이스 개론과 실습 답안 - Chapter 04

##연습문제 

1.

 

2. 

(1) NULL값은 출력이 되지 않는다.

(2) NULL값이 나오는 값을NVL 명령어0으로 대체한다.

(3) NULL값도 검색 조건이 된다. price가NULL값인 것을 찾을 수 있다.

(4) price가 빈 공간은NULL값으로 취급하지 않는다. 잘못된 명령어이다.

(5) 모든price값에100을 더해도NULL값에는 더해지지 않는다.

(6) 출력할 값이 없으면NULL값으로 대체되어 출력된다.

(7) NULL값은 없는 존재로 확인되어 카운트에 포함되지 않는다.

(8) NULL값은 계산에 포함 되지 않는다. NULL값이 있으면 그 값을 제외하고 정상적으로 작동한다.

 

 

3. 

(1)

BOOKID BOOKNAME PUBLISHER PRICE

1 축구의 역사 굿스포츠 7000

2 축구 아는 여자나무수 13000

3 축구의 이해 대한미디어 22000

4 골프 바이블 대한미디어 35000

5 피겨 교본 굿스포츠 8000

6 역도 단계별기술 굿스포츠 6000

7 야구의 추억 이상미디어 20000

8 야구를 부탁해이상미디어 13000

9 올림픽 이야기삼성당 7500

10 Olympic Champions Pearson 13000

(2)

BOOKID BOOKNAME PUBLISHER PRICE

1 축구의 역사 굿스포츠 7000

2 축구 아는 여자나무수 13000

3 축구의 이해 대한미디어 22000

4 골프 바이블 대한미디어 35000

5 피겨 교본 굿스포츠 8000

(3)

BOOKID BOOKNAME PUBLISHER PRICE

1 축구의 역사 굿스포츠 7000

5 피겨 교본 굿스포츠 8000

2 축구 아는 여자나무수 13000

3 축구의 이해 대한미디어 22000

4 골프 바이블 대한미디어 35000

(4)

BOOKID BOOKNAME PUBLISHER PRICE

6 역도 단계별기술 굿스포츠 6000

1 축구의 역사 굿스포츠 7000

9 올림픽 이야기삼성당 7500

5 피겨 교본 굿스포츠 8000

2 축구 아는 여자나무수 13000

(5)

BOOKID BOOKNAME PUBLISHER PRICE

1 축구의 역사 굿스포츠 7000

5 피겨 교본 굿스포츠 8000

2 축구 아는 여자나무수 13000

3 축구의 이해 대한미디어 22000

4 골프 바이블 대한미디어 35000

(6)

BOOKID BOOKNAME PUBLISHER PRICE

1 축구의 역사 굿스포츠 7000

5 피겨 교본 굿스포츠 8000

2 축구 아는 여자나무수 13000

3 축구의 이해 대한미디어 22000

4 골프 바이블 대한미디어 35000

 

 

4. 

(1) orders에 custid로 customer과 join하여 주소로 맵핑하여 합계를 출력(고객ID 와 주소와 총 구매액을 출력해준다.)

(2) orders의 주문 정보를 받아 이름으로 맵핑하여 평균 주문 price를 출력(손님 이름과 평균 구매액을 출력해준다.)

(3) customer의 custid 값이 3보다 작은 경우와 orders의 custid가 동일한 경우에 saleprice의 합(주문 테이블에서 총 구매액(TOTAL)을 고객ID가 3이하이고, 고객테이블과 주문테이블에서ID가 같다는 조건하에 화면에 출력한다.)

 

 

5. 

view의 장점

  • 편리성: 미리 정의된 뷰를 일반 테이블처럼 사용 할 수 있다.
  • 재사용성: 자주 사용되는 질의를 뷰로 미리 정리해 놓는다.
  • 보안성: 각 사용자 별로 필요한 데이터만 선별하여 보여줄 수 있다.

view의 단점

  • SELECT문을 제외한 일부 물리적인 테이블의 갱신 작업을 수행하는데 제약이 있다. DML 작업은 수행되지 않는 경우도 있다.

 

6. 

(1)

CREATE VIEW highorders (bookid,bookname,name,publisher,saleprice)

AS SELECT od.bookid,bk.bookname,cs.name,bk.publisher,od.saleprice

FROM Orders od, Customer cs, Book bk

WHERE cs.custid=od.custid AND od.bookid=bk.bookid AND saleprice >= 20000;

(2)

SELECT bookname, name

FROM highorders;

(3)

CREATE OR REPLACE VIEW highorders

AS SELECT od.bookid, bk.bookname, cs.name, bk.publisher

FROM Customer cs, Orders od, Book bk

WHERE cs.custid=od.custid AND od.bookid= bk.bookid AND saleprice>= 20000;

 

 

7.

(1)

SELECT ename

FROM Emp

WHERE mgr IS NULL;

(2)

SELECT ename, (SELECT dname

FROM Dept de

WHERE de.deptno=ep.deptno) "dname"

FROM Emp ep;

(3)

SELECT ename

FROM (SELECT deptno, loc

FROM Dept

WHERE loc='CHICAGO') dp, Emp ep

WHERE dp.deptno=ep.deptno;

(4)

SELECT ename, sal

FROM Emp

WHERE sal > (SELECT AVG(sal)

FROM Emp);

(5)

SELECT ename

FROM Emp ep1

WHERE ep1.sal > (SELECT AVG(sal)

FROM Emp ep2

WHERE ep1.deptno=ep2.deptno);

 

 

## 심화문제

8. 

(1)

CREATE VIEW 극장_고객

AS SELECT 극장이름, 이름

FROM 극장, 예약, 고객

WHERE 극장.극장번호=예약.극장번호AND 예약.고객번호=고객.고객번호;

(2)

CREATE VIEW 대한_고객

AS SELECT 극장이름, COUNT(고객번호)

FROM 극장, 예약, 고객

WHERE 극장.극장번호=예약.극장번호AND 예약.고객번호=고객.고객번호

GROUP BY 극장이름, 날짜

ORDER BY 날짜;

 

9. 

(1) 극장별 예약 수

(2)강남 극장의 예약 수

(3)극장예약 중 가장 적은 예약 수

(4)극장예약이 된 총 극장 수

(5)예약 수가100건이 넘는 극장들의 이름

(6)극장이름을 예약수 기반 내림차순 정렬

 

 

10. 

탐색 시간(헤드가 트랙을 찾아가는 시간) + 회전 지연 시간(해당 섹터가 헤드 앞으로 올 때까지 걸리는 시간) + 데이터 전송 시간(데이터를 읽는 시간)

반응형