선택장애

데이터베이스(DB) - Join(cross join, 내부조인(inner join) - 예제,문제풀이_1 본문

데이터베이스(DB)

데이터베이스(DB) - Join(cross join, 내부조인(inner join) - 예제,문제풀이_1

yes or yes 2017. 8. 14. 15:48
반응형

Join은 종류가 아주 다양하다.
그중에서 개인적으로 자주쓴다고 생각하는
Cross Join, 내부조인외부조인을 예를 들면서 설명하겠습니다.
(양이 많아서 다음 포스트에서 계속...)

●먼저 테이블 컬럼부터 보여드려야죠
★ORDERS 테이블

 


★CUSTOMER 테이블

 



크로스 조인(간단하게 하겠습니다그냥 합치기만 하는거라서 이건;;)
문제 1. Customer 테이블을 Orders 테이블과 조건 없이 연결해보자. 
Customer와 Orders 테이블의 합  체 결과 튜플의 개수는 고객이 다섯 명이고 주문이 열 개이므로 5×10 해서 50이 된다.

SELECT *
FROM Customer, Orders;

 


●내부조인(천천히 하나씩 할게요)
내부 조인(inner join)은 여러 애플리케이션에서 사용되는 가장 흔한 결합 방식이며, 기본 조인 형식으로 간주된다. 내부 조인은 조인 구문에 기반한 2개의 테이블(A, B)의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다. 그 질의어는 조인 구문을 충족하는 모든 일치되는 결과 열을 찾기 위해 A 테이블의 각 열을 B 테이블의 각 열과 비교를 한다. 조인 구문이 충족되면, A, B 테이블에서 일치된 각 열의 컬럼 값은 결과 열로 결합된다. 조인으로 도출된 결과 값은 (테이블 A 내의 모든 레코드와 테이블 B에 있는 모든 레코드가 결합하여) 테이블에 존재하는 모든 레코드(또는 크로스 조인)의 최초의 곱집합의 결과값으로 정의될 수 있으며, 그런 이후 조인 구문을 충족시키는 모든 레코드 값을 반환한다.
(라고 하는데 전 실습 하는걸 좋아해서 이론은 잘 모르겠네요...;; 바로 실전으로 보시죠)

문제 2. 고객과 고객의 주문에 관한 데이터를 모두 보이시오.

SELECT *
FROM Customer, Orders
WHERE Customer.custid = Orders.custid 
/*Customer의 custid컬럼과 Orders의 custid의 컬럼을 기반으로 합치겠다*/
ORDER BY Customer.custid;
/*ORDER By는 그냥 보기 좋게 정렬하기 위해서*/

 


문제 3. 고객의 이름과 고객이 주문한 도서의 가격을 검색하시오.

SELECT name. saleprice
/*문제 2번은 모조리 다 뽑아오고 이건 이름과 가격만 뽑아오는거죠*/
FROM Customer, Orders
WHERE Customer.custid = Orders.custid;

 


문제 4. 고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬하시오.

SELECT  name, SUM(saleprice)
/*열 이름을 안 주었기 떄문에 (열 이름 없음)이라고 하는데 SUM(saleprice)뒤에 바로 이름만 쓰면 되겟죠*/
FROM  Customer, Orders
WHERE  Customer.custid =Orders.custid
GROUP BY Customer.name
ORDER BY Customer.name;

 

-------------------------------------------------------------------------------------------------------
내용이 길어져서 다음 포스팅에 계속 할게요 ㅜㅠ

 
 

 

 

반응형