-
728x90
INNER JOIN 키워드
INNER JOIN 키워드는 두 개의 테이블에서 공통으로 매칭하는 데이터를 가진다.
INNER JOIN 이해하기
아래와 같이 레지스트레이션과 로그인 테이블이 있다고 할때, 두 테이블에서 공통으로 있는 name이란 컬럼으로 두 테이블을 같이 묶을 수 있다 (쉬운 예제를 위해 이름은 중복이 되지 않는다고 가정).
그랬을 때, 레지스트레이션 테이블과 로그인 테이블에서 공통으로 가지고 있는 name 컬럼의 Andrew와 Bob이 INNER JOIN 되는 것이다.
INNER JOIN의 기본 문법은 다음과 같다.
SELECT column_name FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
한 가지 알아두면 좋을 점은, INNER JOIN은 대칭 다이어그램이기 때문에 테이블의 순서나 컬럼의 순서가 바뀌어도 전혀 상관이 없다.
SELECT column_name FROM table2 INNER JOIN table1 ON table1.column_name = table2.column_name;
위에서 예제로 들었던 테이블을 INNER JOIN 키워드를 활용해 SQL문으로 작성하면 다음과 같다.
SELECT * FROM registrations INNER JOIN logins ON registrations.name = logins.name;
INNER JOIN 사용 후 위 이미지처럼 중복되는 데이터가 반환되는 것이 싫다면, 다음과 같이 SQL문에서 어떤 특정 컬럼을 원하는지 명확히 해줄 수 있다.
SELECT * FROM reg_id, logins.name, log_id from registrations INNER JOIN logins ON registrations.name = logins.name;
위에서 보이는 것과 같이 SELECT문에서 name이 아닌
logins.name
이라고 테이블 이름과 같이 명시되어있는 것을 볼 수 있다. name이란 컬럼을 중복된 값이므로 특정 컬럼을 원한다면 저렇게 테이블까지 명시해주어야 한다.INNER JOIN 사용하기
우선 간단히 payment 테이블에과 customer 테이블에서
customer_id
를 기준으로 INNER JOIN 해보자.SELECT * FROM payment INNER JOIN customer ON payment.customer_id = customer.customer_id;
두 테이블은 공통의 값을 가지고 있는, INNER JOIN으로 이미 묶인 테이블이기 때문에, 아래의 쿼리처럼 customer 테이블에만 있는 유니크한
first_name
컬럼도 SELECT문으로 선택할 수 있다SELECT payment_id, payment.customer_id, first_name FROM payment INNER JOIN customer ON payment.customer_id = customer.customer_id; SELECT payment_id, payment.customer_id, first_name FROM customer INNER JOIN payment ON payment.customer_id = customer.customer_id;
이전에 언급했던 것처럼 테이블의 위치가 바뀌어도 전혀 상관이 없다.
728x90'Back-end > SQL' 카테고리의 다른 글
SQL LEFT OUTER JOIN 키워드 (0) 2021.06.12 SQL FULL OUTER JOIN 키워드 (0) 2021.06.09 SQL JOIN절 (0) 2021.06.01 SQL AS 키워드 (0) 2021.06.01 SQL HAVING절 (0) 2021.05.31 댓글