티스토리 뷰

DEVELOPE/MYSQL&MARIADB

MYSQL 조인의 종류

소찾나 2017. 2. 6. 16:35
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MYSQL 조인의 종류

MYSQL 조인의 종류


MYSQL 조인의 종류



MYSQL 조인의 종류




조인의 종류



1.JOIN


둘 이상의 테이블 간의 논리적 관계를 기준으로 데이터를 검색하여 결과 집합을 만든다.


 


기본형식



SELECT 열 목록

   FROM 첫번째 테이블 join_type 두번째 테이블

       ON(join_condition)

* join_type : 수행될 조인 유형을 지정한다. (INNER, OUTER, CROSS, SELF)

* join_condition : 조인할 행의 각 쌍에 대해 선택할 조건을 정의한다. 일반적으로 키와 키를 지정


 


고려사항

1) 조인은 하나의 쿼리에서 여러 테이블이 참조되기 때문에 모든 열 참조는 명확해야 한다. (테이블이름.컬럼이름)

2) 조인조건은 FROM절이나 WHERE 절에 지정할 수 있으며 FROM 절에 지정하는 것이 좋다.

3) WHERE절과 HAVING 절에는 조인 조건에서 선택된 행을 자세히 필터링하는 검색 조건이 포함될 수 있다.


 


2. INNER JOIN

결합된 테이블에 조건의 내용이 공통으로 들어가 있는 값을 결과 집합으로 만들어준다. ON 다음에 들어가는 조건에 맞는 내용들만 보여주게 된다.



기본형식



SELECT 열 목록

   FROM 첫번째 테이블 [AS 별칭] INNER JOIN 두번째 테이블 [AS별칭]

       ON(join_condition)


 


SELECT 회원이름, 구매한도서, 작가, 구매시기

   FROM 회원정보 INNER JOIN 구매내역

 WHERE 회원이름 = '김군'


 


SELECT DISTINCT M.회원정보, M.회원이름, M.거주지역

   FROM 회원정보 AS M

   INNER JOIN 구매내역 AS B

       ON M.회원번호 = B.회원번호

 ORDER BY M.회원번호


 


SELECT M.회원이름, B.구매한도서, P.가격

  FROM 회원정보 AS M

  INNER JOIN 구매내역 AS B

      ON M.회원번호 = B.회원번호

  INNER JOIN 가격 AS P

      ON B.구매한도서 = P.구매한도서

 ORDER BY M.회원이름


 


 


2.2 OUTER JOIN

INNER JOIN 문을 포함하고 한쪽에만 내용이 있더라도 지정한 기준 테이블에 있는 모든 데이터를 가져오는 조인방식



기본형식


 


SELECT 열목록

   FROM 첫번째 테이블

   <LEFT | RIGHT | FULL> OUTER JOIN 두번째 테이블

       ON(join_condition)

   [WHERE 검색조건]


 


(1) LEFT OUTER JOIN

왼쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 오른쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.



SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기

   FROM 회원정보 AS M

    LEFT OUTER JOIN 구매내역 AS B

      ON M.회원번호 = B.회원번호

 ORDER BY M.회원번호


 


(2) RIGHT OUTER JOIN

오른쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 왼쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.



SELECT B.구매한도서, B.작가, B.구매시기, M.회원이름

  FROM 회원정보 AS M

  RIGHT OUTER JOIN 구매내역 AS B

      ON M.회원번호 = B.회원번호

ORDER BY B.구매시기


 


(3) FULL OUTER JOIN

왼쪽과 오른쪽에 관계없이 조건이 일치하지 않아도 양쪽의 모든 내용을 포함해서 나타낸다.



SELECT M.회원이름, B.구매한 도서, B.작가, B.구매시기

   FROM 회원정보 AS M

    FULL OUTER JOIN 구매내역 AS B

 ORDER BY M.회원번호


 


 


2.3 CROSS JOIN

결과값이 한쪽 테이블의 모든행들과 다른쪽 테이블의 모든 행을 조인시킨다.

결과 집합은 두 테이블의 개수를 곱한 값만큼 생성되며, 조인되는 테이블에 공통되는 행이 없어도 되며 조건절인 ON 키워드가 사용되지 않는다.



SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기

  FROM 회원정보 AS M

 CROSS JOIN 구매내역 AS B

 ORDER BY M.회원번호


 


 


2.4 SELF JOIN

하나의 테이블에 같은 데이터가 존재하는데 그 의미가 다르게 존재하는 경우. 즉, 같은 데이터이지만 다른 열에 있는 경우에는 두 테이블을 서로 SELF JOIN 문으로 확인가능



SELECT A.회원이름, A.주거지역, A.연락처, B.회원이름 AS 추천인, B.연락처

  FROM 회원정보 AS A

  INNER JOIN 회원정보 AS B

      ON A.추천한 회원 = B.회원번호

WHERE A.회원이름 = '김군'





'DEVELOPE > MYSQL&MARIADB' 카테고리의 다른 글

mysql에서 root로 접속불가 문제 해결방법  (0) 2017.02.09
MYSQL 백업과 복구  (0) 2017.02.06
mysql 프로시저  (0) 2017.02.01
MySQL MyISAM과 InnoDB 엔진 활용  (0) 2017.02.01
mysql 포트변경후 외부접속방법  (0) 2017.02.01
댓글