조인이란 무엇입니까?
이것은 두 개의 테이블을 하나의 테이블로 결합하는 것을 의미합니다.
내부 가입
이것은 가장 많이 사용되고 일반적인 조인 방법입니다.
“내부”를 삭제하고 조인이라고 부르십시오.
조인에 대해 알아보기 전에 일대다 관계, 기본 키 및 외래 키에 대해 알아야 합니다.
쇼핑몰의 회원 및 쇼핑 테이블의 경우를 고려하십시오.
기본 키
테이블 데이터를 식별할 수 있는 중복되지 않는 값, 즉 하나의 값만 존재합니다.
구성원 테이블에서 구성원의 ID는 기본 키 역할을 할 수 있습니다.
구매 테이블에서 AUTO_INCREMENT를 사용하여 중복 없이 숫자를 입력할 수 있습니다.
알 수 없는 키
Members 테이블과 Purchases 테이블은 서로 관계가 있습니다.
이는 구매 테이블에 회원이 구매한 회원 ID가 포함되어 있기 때문입니다.
회원이 여러 상품을 구매한 경우 동일한 회원 ID의 데이터가 구매 테이블에 나타납니다.
또한 구매 테이블 구성원 ID는 구성원 테이블 구성원 ID에만 존재합니다.
두 테이블을 연결하는 항목 ID를 외래 키라고 합니다.
일대다 관계
위에서 설명한 것처럼 멤버 테이블의 단일 멤버는 구매 테이블에서 여러 날짜를 가질 수 있습니다.
일대다 관계는 한 테이블의 데이터 값 하나만 다른 테이블의 여러 데이터와 관련되는 경우입니다.
일반적으로 기본 키가 있는 테이블은 “One”이고 외래 키가 있는 테이블은 “Many”입니다.
이제 조인으로 돌아갑시다.
조인(내부 조인)의 기본 구문은 다음과 같습니다.
--WHERE절은 생략 가능
SELECT '열 목록'
FROM '첫 번째 테이블'
INNER JOIN '두 번째 테이블'
ON '조인될 조건'
WHERE '검색 조건'
위 구문을 Member 및 Buy 테이블에 적용해 보겠습니다.
--buy테이블과 member 테이블을 조인하는데 buy테이블의 mem_id와 member테이블의 mem_id가 같아야 한다
SELECT *
FROM buy
INNER JOIN member
ON buy.mem_id = member.mem_id ;
내부 조인은 두 테이블 모두에 존재하는 데이터를 기반으로 하기 때문에 구매 내역이 없는 멤버는 조인 결과에 나타나지 않습니다.
구매 내역이 없는 회원까지 인증하고 싶다면 외부 조인을 이용하세요.
외부 연결
내부 조인과 다른 점은 두 개의 테이블을 조인할 때 결과로 한 테이블의 데이터만 표시된다는 것입니다.
기본 구문은 다음과 같습니다.
--첫 번째 테이블이 LEFT, 두 번째 테이블이 RIGHT이다.
SELECT '열 목록'
FROM '첫 번째 테이블'
(LEFT | RIGHT | FULL) OUTER JOIN '두 번째 테이블'
ON '조인할 조건'
WHERE '검색 조건' ; --WHERE절은 생략 가능
왼쪽 외부 링크첫 번째 테이블의 모든 데이터를 병합하는 방법입니다.
오른쪽 외부 조인두 번째 테이블의 모든 데이터를 병합하는 방법입니다.
완벽한 외부 연결두 테이블의 데이터를 병합하는 방법입니다.
FROM 절에 어느 테이블을 넣느냐에 따라 왼쪽과 오른쪽을 커스터마이즈할 수 있기 때문에 LEFT와 RIGHT 중 하나만 사용할 수 있다.
예
--member테이블 기준으로 외부 조인 했기 때문에 구매이력이 없는 회원은 prod_name이 null로 만들어진다.
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id;
--WHERE절을 사용해 구매이력이 없는 회원만 추출할 수도 있다.
SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
WHERE B.prod_name IS NULL
교차 연결
두 테이블의 모든 데이터를 조인합니다.
첫 번째 테이블의 1번 행을 두 번째 테이블의 모든 행에 조인하는 과정을 반복합니다.
따라서 조인 결과는 첫 번째 테이블의 행 수(N) x 두 번째 테이블의 행 수(M)입니다.
무의미한 링크이므로 결과는 무의미하지만 대량의 테스트 데이터를 생성하는 데 사용됩니다.
-- 상호 조인 기본 문법
SELECT *
FROM '첫 번째 테이블'
CROSS JOIN '두 번째 테이블' ;
-- 두 테이블을 크로스 조인한 테스트 데이터용 테이블을 만들 수 있다.
CREATE TABLE mock_data
SELECT *
FROM '첫 번째 테이블'
CROSS JOIN '두 번째 테이블' ;
가입하세요
이것은 단일 테이블에 연결하는 특이한 방법입니다.
테이블의 데이터 간에 관계가 있을 때 사용할 수 있습니다.
예를 들어 조직도의 경우 직원의 상급자와 부하직원의 직속관계를 표시할 때 직속/과장/하급자 정보를 셀프링크로 표시할 수 있다.
직원(기본 키) | 직접 임명 | 연락하다 |
ㅏ | 영 | 1111 |
비 | ㅏ | 2222 |
씨 | 비 | 3333 |
--직원의 직속선임과 직속선임의 연락처를 갖는 테이블을 만들 수 있다.
SELECT A.emp "직원" , B.emp "직속선임", B.phone "직속선임연락처"
FROM emp_table A
INNER JOIN emp_table B
ON A.manager = B.emp;