[Database] - 데이터 검색 Join

오동훈·2021년 4월 10일
0

Database

목록 보기
6/39

1. Join

  • 조인 검색 - 여러 개의 테이블을 연결하여 데이터를 검색하는 것
  • 조인 속성 - 조인 검색을 위해 테이블을 연결해주는 속성
    - 연결하려는 테이블 간에 조인 속성의 이름은 달라도 되지만 도메인은 같아야 함
    - 일반적으로 외래키를 조인 속성으로 이용함
  • FROM 절에 검색에 필요한 모든 테이블을 나열
  • WHERE 절에 조인 속성의 값이 같아야 함을 의미하는 조인 조건을 제시
  • 같은 이름의 속성이 서로 다른 테이블에 존재할 수 있기 때문에 속성 이름 앞에 해당 속성이 소속된 테이블의 이름을 표시
    ex). 주문.주문고객

1.1 Join 문법

명령문법설명
일반조인SELECT <속성들>
FROM 테이블1, 테이블2
WHERE <조인조건> AND <검색조건>
--------------------------------------------------------
SELECT <속성들>
FROM 테이블1 INNER JOIN
         테이블2 ON <조인조건>
WHERE <조인조건> AND <검색조건>
SQL 문에서는 주로 동등조인을 사용함
두가지 문법 중 하나를 사용할 수 있음
외부조인SELECT <속성들>
FROM 테이블1 {LEFT | RIGHT | FULL [OUTER]} JOIN
         테이블2 ON <조인조건>
WHERE <검색조건>
외부조인은 FROM 절에 조인 종류를 적고
ON을 이용해 조인조건을 명시함

1.2 일반조인 example

1.2.1 example 1

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

SELECT *
FROM Customer, Orders
WHERE Customer.custid = Orders.custid;

1.2.2 example 2

example 2. 고객과 고객의 주문에 관한 데이터를 고객번호 순으로 정렬하여 보이시오.

SELECT *
FROM Customer, Orders
WHERE Customer.custid = Orders.custid
ORDER BY Customer.custid;

1.2.3 example 3

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

SELECT (Customer.)name, (Orders.)saleprice 
FROM Customer, Orders
WHERE Customer.custid = Orders.custid

1.2.4 example 4

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

SELECT name, sum(saleprice) AS 총 판매액
FROM Customer, Orders
WHERE Customer.custid = Orders.custid
GROUP BY Customer.custid
ORDER BY Customer.name;

1.3 세 개 이상의 릴레이션 간의 연결

1.3.1 example 5

example 5. 고객의 이름과 고객이 주문한 도서의 이름을 구하시오.

SELECT Customer.name, Book.bookname
FROM Customer, Orders, Book
WHERE Customer.Custid = Orders.Custid AND Orders.bookid = Book.bookid;

1.3.2 example 6

example 6. 가격이 20,000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하시오.

SELECT Customer.name, Book.bookname
FROM Customer, Orders, Book
WHERE Customer.Custid = Orders.Custid AND Orders.bookid = Book.bookid
      AND Book.saleprice = 20000;

1.4 외부조인

example 7. 도서를 구매하지 않은 고객을 포함하여 고객의 이름과 고객이 주문한 도서의 판매가격을 구하시오.

SELECT Customer.name, saleprice
FROM Customer LEFT OUTER JOIN Orders 
              ON Customer.custid = Orders.custid;
profile
삽질의 기록들🐥

0개의 댓글