-
생활코딩( SQL join ) (1) - JOINBackend/JOIN심화 2021. 6. 5. 23:38
1. JOIN이란?
1-1) 정의
관계형 데이터베이스에서 여러 테이블을 하나의 테이블처럼 취급하는 방법
관계형 데이터베이스가 곧 JOIN이라고도 할 만큼 매우 중요한 개념
class로 분리하는 것 처럼, table 분리시 관리 유지/보수가 용이하고, 하나의 조합으로 사용하기 위해 Join을 사용
1-2) 알아야 하는 것
1) Join 방식의 종류
2) Join이 동작하는 원리
2. 테이블 분리
2-1) 테이블 분리의 중요성
Join에서 각 테이블들이 조합으로 쓰이므로, table을 잘 분리하는 방법을 먼저 알고 있어야 함
※ 실습 예제
2-2) 테이블 분리 방식
핵심은 중복은 없애는 것
1) Author 중복
Topic table.author_id : foreign key
2) Job 중복
> 결과
※ 모든 table은 하나의 theme(주제) 만 가져야 한다!
3. Join
링크 : link
에서 SQL Join Visualizer 확인할 수 있음
SELECT * FROM <tbl_A> .... <tbl_B>
1) Join operation 대상 A - B 순으로 나타내기
2) INNER, LEFT, RIGHT, OUTER에 순에 따라 A, B 테이블 중 기준이 정해짐
3) 조건절은 대상 A-B를 작성 후에 기술하는 syntax
3-1) INNER JOIN
> 교집합만 남겨두는 query
SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key
3-2) LEFT JOIN
> A - B 순서 중, LEFT의 A를 기준으로 query가 동작
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key WHERE B.key IS NULL
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
3-3) RIGHT JOIN
> A - B 순서 중 right의 B를 기준으로 query가 동작
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key WHERE A.key IS NULL
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key
3-4) FULL OUTER
SELECT * FROM TableA A FULL OUTER JOIN TableB B ON A.key = B.key
4. 연습예제 준비
링크 : link
에서 sql 생성 스크립트 가져와서 사용
mysql> source <path to .sql file>
참조
https://opentutorials.org/course/3884
SQL Join - 생활코딩
수업소개 관계형 데이터베이스에서 테이블과 테이블의 관계를 이용해서 새로운 테이블을 만들어내는 태크닉인 join을 알려드리는 수업입니다. 이 수업은 아래와 같은 내용을 다루고 있습니다.
opentutorials.org
https://opentutorials.org/course/3884/25179
표 쪼개기 - 생활코딩
수업소개 하나의 표가 거대한 정보를 다담아서 표 자체가 완제품이 될수도 있습니다. 한편, 여러개의 표에 정보를 분산해서 각각의 표가 부품으로 사용되도록 할수도 있습니다. 여기서는 표를
opentutorials.org
https://opentutorials.org/course/3884/25180
실습준비 - 생활코딩
수업소개 JOIN 연습장을 이용해서 JOIN을 하는 방법과 직접 SQL을 사용해볼 수 있는 샘플 데이터를 소개합니다. 강의소개 샘플 코드 DROP TABLE IF EXISTS `author`; CREATE TABLE `author` ( `aid` int(11) NOT NULL, `nam
opentutorials.org
반응형'Backend > JOIN심화' 카테고리의 다른 글
생활코딩( SQL join ) (5) - EXCLUSIVE JOIN (0) 2021.06.10 생활코딩( SQL join ) (4) - FULL OUTER JOIN (0) 2021.06.09 생활코딩( SQL join ) (3) - INNER JOIN (0) 2021.06.09 생활코딩( SQL join ) (2) - LEFT JOIN & RIGHT JOIN (0) 2021.06.06