ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MYSQL Join(inner, outer, left , right) 기능 설명
    DATABASE/MYSQL 2020. 4. 3. 23:54

     

    조인이란 ? 

    join(조인) 또는 결합 구문은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다. 따라서 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. JOIN은 2개의 테이블에서 각각의 공통값을 이용함으로써 필드를 조합하는 수단이 된다.

     

     

     

    INNER JOIN 

    INNER JOIN 조건에서 동일한 값이 있는 행만 반환하는게 특징 

    A와 B 테이블에 겹치는 부분을 가져온다 (교집합) .

    EXAMPLE 

    SELECT 가져올 컬럼 

    FROM 테이블명1 INNER JOIN 테이블명2 테이블명1.컬럼=테이블명2.컬럼2 


    SELECT dept_emp.emp_no , dept_manager.emp_no 
    FROM dept_emp INNER JOIN dept_manager ON dept_emp.emp_no=dept_manager.emp_no 

    OUTER JOIN

    한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것

     

    OUTER JOIN 에는 LEFT RIGHT JOIN이 있다

     

     

    선언 방식은 

     

    SLECET 가져올 컬럼 

    FROM 테이블1 LEFT|RIGHT OUTER JOIN 테이블2 ON 비교할데이터 테이블1명.컬럼 = 테이블2.컬럼 


    SELECT dept_emp.emp_no , dept_manager.emp_no
    FROM dept_emp LEFT OUTER JOIN dept_manager ON dept_emp.emp_no=dept_manager.emp_no

     

    또한 

    SQL JOIN 에는  FULL OUTER JOIN 이 있다. 

    MYSQL 에는 쿼리문으로 정의는 안되어있지만 

     

    FULL OUTER JOIN 이 란것이 있다 .

     

    EXAMPLE 

    SLECET 가져올 컬럼

    FROM 테이블1 LEFT|RIGHT OUTER JOIN 테이블2 ON 비교할데이터 테이블1명.컬럼 = 테이블2.컬럼 

    UNION 

    SLECET 가져올 컬럼

    FROM 테이블1 RIGHT|LEFT OUTER JOIN 테이블2 ON 비교할데이터 테이블1명.컬럼 = 테이블2.컬럼 

    UNION 에 대하여 간단하게 설명하자면 두개의 쿼리문을 한개의 쿼리문으로 사용하게 해준다고 생각하면된다. 

    SELECT *
    FROM  city c1 
    LEFT JOIN country  c2 
    ON c1.country_id = c2.country_id 
    UNION  
    SELECT * 
    FROM city c1 RIGHT JOIN country c2 
    ON c1.country_id = c2.country_id

     

    CROSS JOIN 

    한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능을 한다.

    A 테이블 row 개수 X B 테이블 row 개수 

     

    SELECT * FROM cities CROSS JOIN transport;

    SELECT 가져올 컬럼  FROM 테이블명1 CROSS JOIN 테이블명2;


    SELECT departments.dept_name , dept_manager.to_date
    FROM departments CROSS JOIN dept_manager;

     

     

    SELF JOIN 

     

    Self join이란 테이블을 자기 자신과 조인시키는 것입니다. Self join이라는 명령어가 따로 있는 것은 아니고, outer join이던 inner join이던 자기 자신과 조인할 경우는 self join이 됩니다

    SELECT 지정컬럼 
    FROM 테이블명 
    JOIN 테이블명 
    ON 조건문 

    SELECT em1.category_id , em1.name ,em2.name
    FROM category em1
    JOIN category em2
    ON em1.category_id != em2.name

     

     

     

    댓글

Designed by Tistory.