• 검색 결과가 없습니다.

3장 SQL 기초(2) (Structured Query Language)

N/A
N/A
Protected

Academic year: 2022

Share "3장 SQL 기초(2) (Structured Query Language)"

Copied!
20
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

(Structured Query Language)

데이터베이스 연구실

1

(2)

[목 차]

3.5 2개 이상 테이블에서 결과가 필요하다

3.5.1 조인을 이용한 여러 테이블 질의 3.5.2 부속질의를 사용한 여러 테이블 질의 3.5.3. 집합 연산

3.5.4. EXISTS 문 3.6 SQL DML 문

3.6.1 SQL INSERT 문 3.6.2 SQL Update 문 3.6.3 SQL DELETE 문 연습문제

[목 차]

3.5 2개 이상 테이블에서 결과가 필요하다

3.5.1 조인을 이용한 여러 테이블 질의 3.5.2 부속질의를 사용한 여러 테이블 질의 3.5.3. 집합 연산

3.5.4. EXISTS 문 3.6 SQL DML 문

3.6.1 SQL INSERT 문 3.6.2 SQL Update 문 3.6.3 SQL DELETE 문 연습문제

2

(3)

3.5.1 조인을 이용한 여러 테이블 질의

SELECT 문

- (고객과 주문 데이터의 의미 없는 연결)

SELECT *

FROM CUSTOMER, ORDERS;

3

(4)

SELECT 문

- 고객과 고객의 주문에 관한 데이터를 모두 보여라.

SELECT *

FROM CUSTOMER, ORDERS

WHERE CUSTOMER.custid=ORDERS.custid;

4

(5)

- 고객과 고객의 주문에 관한 데이터를 고객번호로 정렬 하여 모두 보여라.

SELECT *

FROM CUSTOMER, ORDERS;

WHERE CUSTOMER.custid=ORDERS.custid ORDER BY CUSTOMER.custid;

SELECT *

FROM CUSTOMER, ORDERS;

WHERE CUSTOMER.custid=ORDERS.custid ORDER BY CUSTOMER.custid;

5

(6)

SELECT 문

-고객의 이름과 구매된 모든 도서의 구매값(saleprice)을 구하라.

SELECT CUSTOMER.name, saleprice FROM CUSTOMER, ORDERS

WHERE CUSTOMER.custid=ORDERS.custid;

6

(7)

- 고객별로 구매된 모든 도서의 구매값(saleprice)을 구하여 고객별로 정렬하여라.

SELECT CUSTOMER.name, SUM(saleprice) FROM CUSTOMER, ORDERS

WHERE CUSTOMER.custid=ORDERS.custid GROUP BY CUSTOMER.name

ORDER BY CUSTOMER.name;

SELECT CUSTOMER.name, SUM(saleprice) FROM CUSTOMER, ORDERS

WHERE CUSTOMER.custid=ORDERS.custid GROUP BY CUSTOMER.name

ORDER BY CUSTOMER.name;

7

(8)

SELECT 문

- 고객의 이름과 구매한 도서의 이름을 구하여라.

SELECT CUSTOMER.name, BOOK.bookname FROM CUSTOMER, ORDERS, BOOK

WHERE CUSTOMER.custid=ORDERS.custid AND ORDERS.bookid=BOOK.bookid;

SELECT CUSTOMER.name, BOOK.bookname FROM CUSTOMER, ORDERS, BOOK

WHERE CUSTOMER.custid=ORDERS.custid AND ORDERS.bookid=BOOK.bookid;

8

(9)

- 20000원 이상 책을 구매한 고객의 이름과 구매한 도서의 이름을 구하여라.

SELECT CUSTOMER.name, BOOK.bookname FROM CUSTOMER, ORDERS, BOOK

WHERE CUSTOMER.custid=ORDERS.custid AND ORDERS.bookid=BOOK.bookid

AND ORDERS.saleprice >= 20000;

SELECT CUSTOMER.name, BOOK.bookname FROM CUSTOMER, ORDERS, BOOK

WHERE CUSTOMER.custid=ORDERS.custid AND ORDERS.bookid=BOOK.bookid

AND ORDERS.saleprice >= 20000;

9

(10)

3.5.2 부속질의를 사용한 여러 테이블 질의

SELECT 문

- 주문이 있는 고객을 찾아라(전체 고객중에서)

SELECT name

FROM CUSTOMER

WHERE custid IN (SELECT custid FROM ORDERS);

10

(11)

- ‘대한미디어’ 출판사 책을 구매한 고객의 이름을 보여라.

SELECT name

FROM CUSTOMER

WHERE custid IN (SELECT custid FROM ORDERS

WHERE bookid IN (SELECT bookid FROM BOOK

WHERE publisher='대한미디어'));

SELECT name

FROM CUSTOMER

WHERE custid IN (SELECT custid FROM ORDERS

WHERE bookid IN (SELECT bookid FROM BOOK

WHERE publisher='대한미디어'));

11

(12)

(SELECT custid FROM ORDERS WHERE bookid IN SELECT name

FROM CUSTOMER WHERE custid IN

앞의 SQL문을 이해하려면 아래서부터 읽어야 한다.

(SELECT bookid FROM BOOK

WHERE publisher='대한미디어') (SELECT custid

FROM ORDERS WHERE bookid IN

마지막 SELECT문은 ‘대한미디어’에서 출판한 책의 bookid를 구한다. 가 운데 SELECT 문은 bookid를 주문한 고객의 custid를 구한다. 맨 위

SELECT 문은 중간 SELECT 문에서 찾은 custid에 대한 name을 구한다.

12

(13)

SELECT 문

- 도서를 구매하지 않은 고객의 이름을 보여라.

SELECT name

FROM CUSTOMER MINUS

SELECT name

FROM CUSTOMER

WHERE custid IN (SELECT custid FROM ORDERS);

SELECT name

FROM CUSTOMER MINUS

SELECT name

FROM CUSTOMER

WHERE custid IN (SELECT custid FROM ORDERS);

13

(14)

3.5.4. EXISTS 문

SELECT 문

- 주문이 있는 고객을 보여라

SELECT name, address FROM CUSTOMER c1 WHERE EXISTS

(SELECT *

FROM ORDERS c2

WHERE c1.custid=c2.custid);

조건에 맞는 튜플이 존재하면 결과에 포함이 되도록 하는 문장이다.

SELECT name, address FROM CUSTOMER c1 WHERE EXISTS

(SELECT *

FROM ORDERS c2

WHERE c1.custid=c2.custid);

14

(15)

FROM CUSTOMER c1 WHERE EXISTS

(SELECT *

FROM ORDERS c2

WHERE c1.custid=c2.custid);

②`

15

(16)

3.6 SQL DML 문

3.6.1 SQL INSERT 문

INSERT INTO BOOK(bookid, bookname, publisher, price) VALUES(11, '스포츠 의학‘, ’한솔의학서적‘, 90000);

INSERT INTO BOOK(bookid, bookname, publisher) VALUES(11, '스포츠 의학', '한솔의학서적');

입력하지 않은 도서의 가격은 0이 아니고 NULL이라 는 특수한 값이 입력된다.

16

- 대량 삽입(Bulk Insert)

INSERT INTO BOOK(bookid, bookname, price, publisher)

SELECT bookid, bookname, price, publisher

FROM IMPORTED_BOOK;

(17)

UPDATE 문은 기존 행의 값을 바꾸는 문장이다.

UPDATE CUSTOMER

SET address = '대한민국 서울' WHERE custid=5;

- 대량 수정

UPDATE CUSTOMER

SET address = ‘대한민국 서울’;

UPDATE CUSTOMER

SET address = ‘대한민국 서울’;

- 다른 테이블의 값을 이용한 수정 UPDATE CUSTOMER

SET address =

(SELECT address

FROM CUSTOMER WHERE name='김연아‘) WHERE name= '박세리‘;

17

(18)

3.6.3 SQL DELETE 문

DELETE FROM CUSTOMER WHERE custid = 5;

18

(19)

2. 책 번호가 1인 도서의 이름 검색

3. 책 값이 20000원 이상인 책 이름의 검색 4. ‘박지성’의 총 구매액

5. 박지성이 구매한 총 도서의 수 [1] - 마당서점 기초문제 - 고객

[2] - 마당서점 심화문제 - 운영자/경영자

1. 2011년 7월 4일에서 7월 7일 사이에 주문된 책의 주문번호

2. 2011년 7월 4일에서 7월 7일 사이에 주문되지 않은 책의 주문 번호 3. 성이 김씨인 고객의 이름과 주소

4. 성이 “김”씨이고 이름이 “아”로 끝나는 고객의 이름과 주소 5. 주문을 하지 않은 고객의 이름(조인 사용)

6. 주문 금액의 총액과 주문의 평균 금액.

7. 고객의 이름과 고객 별 주문액

8. 고객의 이름과 고객이 구매한 도서 목록

9. 도서의 값과 도서의 구매 값의 차이가 가장 많은 주문

10. 고객들의 평균 구매액보다 구매액이 많은 고객들의 이름 [2] - 마당서점 심화문제 - 운영자/경영자

1. 2011년 7월 4일에서 7월 7일 사이에 주문된 책의 주문번호

2. 2011년 7월 4일에서 7월 7일 사이에 주문되지 않은 책의 주문 번호 3. 성이 김씨인 고객의 이름과 주소

4. 성이 “김”씨이고 이름이 “아”로 끝나는 고객의 이름과 주소 5. 주문을 하지 않은 고객의 이름(조인 사용)

6. 주문 금액의 총액과 주문의 평균 금액.

7. 고객의 이름과 고객 별 주문액

8. 고객의 이름과 고객이 구매한 도서 목록

9. 도서의 값과 도서의 구매 값의 차이가 가장 많은 주문

10. 고객들의 평균 구매액보다 구매액이 많은 고객들의 이름

19

(20)

[3] - 마당서점 어려운 문제

1. 박지성이 구매한 책의 출판사와 같은 출판사에서 책을 구매한 고객들 이름 2. 2개 이상의 서로 다른 출판사에서 책을 구매한 고객의 이름

3. 전체 고객의 30%이상의 고객이 구매한 도서

[4] 다음 DML 문을 작성하여라

1. 도서 (‘스포츠 세계’, ‘대한미디어’, 10000원)가 새로 마당서점에 들어왔다.

2. ‘이상미디어’에서 출판한 도서의 삭제

3. 출판사 ‘삼성당’이 ‘삼성출판사’로 이름이 바뀌었다.

[3] - 마당서점 어려운 문제

1. 박지성이 구매한 책의 출판사와 같은 출판사에서 책을 구매한 고객들 이름 2. 2개 이상의 서로 다른 출판사에서 책을 구매한 고객의 이름

3. 전체 고객의 30%이상의 고객이 구매한 도서

[4] 다음 DML 문을 작성하여라

1. 도서 (‘스포츠 세계’, ‘대한미디어’, 10000원)가 새로 마당서점에 들어왔다.

2. ‘이상미디어’에서 출판한 도서의 삭제

3. 출판사 ‘삼성당’이 ‘삼성출판사’로 이름이 바뀌었다.

20

참조

관련 문서

본래 쇼핑의 목적 이 상품자체의 효용성, 즉 구매한 상품을 사용함으로써 얻는 만족감이나 즐거움이 아니기 때문에, 쇼핑한 뒤에 는 곧바로 상품에 대한 흥미를

남자 아이가 같은 책을 읽은 여자 아이에게 재밌는 책인 것 같은 데 어떻게 생각하느냐고 물었으므로 동의하는 응답은 알맞다..

본 프로그램은 감성 지능 중심 교육인 사회 정서 학습 SEL(Social and Emotional Learning)을 목표로 오토마 타의 설계 및 제작 과정을 통해 자기/타인 관찰 능력, 메타인지

특히 오토마타의 갖가지 독창적인 움직임을 표현하기 위해서는 캠, 크랭크, 기어와 같은 기계요소를 어떤 모양과 순서로 만드는지에 따라 다양한 오토마타를 완성할

갑자기 지각변동이 시작된다... 수업용

교사 강은경 (제주중앙초등학교) 교사 김은영 (중문초등학교) 교사 김이립 (제주남초등학교) 교사 문미희 (신광초등학교) 교사 전진수 (화북초등학교)

연구원 강태경 (제주대학교 STS연구센터) 연구원 고영해 (제주대학교 교육대학) 연구원 고경리 (제주대학교 교육대학) 연구원 김경환 (제주대학교

유통사마다 다른 디지털 저작권 관리 시스템 (Digital Rights Management, 이하 DRM) 적용으로 인해 전자책 서점마다 전 용뷰어가 있고, 전자책 서점에서 구매한 전자책을