-
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_noOUTER 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_idCROSS 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반응형