▶ 테이블 결합(JOIN)
두 테이블 관계를 활용하여 테이블을 결합하는 명령어. 이를 통해 여러 테이블을 활용하여 분석 가능
테이블 간 1:1, 1:N, N:N 형태로 연결이 가능함
종류: INNER JOIN, LEFT JOIN, RIGHT JOIN
▶ ERM (Entity-Relationship Modeling)
개체-관계 모델링으로, 관계형 데이터베이스에 테이블을 모델링할 때 사용됨
* 개체(Entity) : 하나 이상의 속성(Attribute)으로 구성된 객체
* 관계(Relationship) : 속성(Entity)들 간 관계
▶ ERD (Entity-Relationship Diagram)
ERM 모델링을 통해 만들어진 개체 간의 관계를 도표로 표현함
한 테이블에서 공통값이 PK면 다른 테이블은 FK
* FK(FOREIGN KEY): 다른테이블에서 PK(PRIMARY KEY)와 연결되는 키
▶ INNER JOIN
두 테이블의 공통값이 매칭되는 데이터만 결합
SELECT *
FROM 회원테이블 AS A
INNER
JOIN 주문테이블 AS B
ON A.MEM_NO = B.MEM_NO;
→ 두 가지 테이블이 매칭되어 하나로 결합되어 조회됨
여기서 WHERE A.MEM_NO = '회원번호' 이어서 작성시 A에서 특정 데이터 조회 가능
(회원테이블과 주문테이블이 회원번호 기준으로 1:N 관계인지 확인)
회원 가입 후, 주문이력이 있는 회원
▶ LEFT JOIN
두 테이블의 공통값이 매칭되는 데이터만 결합 + 왼쪽 테이블의 매칭되지 않는 데이터는 NULL
위에 INNER을 LEFT로 변경
(회원테이블이 왼쪽 주문테이블이 오른쪽)
NULL 값 → 회원가입만 하고 주문하지 않은 상태
회원가입 후, 주문이력이 있는 회원 + 회원가입 후 주문이력이 없는 회원
▶ RIGHT JOIN
두 테이블의 공통값이 매칭되는 데이터만 결합 + 오른쪽 테이블의 매칭되지 않는 데이터는 NULL
WHERE A.MEM_NO IS NULL 하면 NULL 값만 필터링 됨
* IS NULL: 비교 연산자
NULL 값 → 비회원
회원 가입 후, 주문이력이 있는 회원 + 비회원
▶ 테이블 결합(JOIN) 및 데이터 조회(SELECT)를 활용해 여러 테이블 결합해 조회 및 분석 가능
1) 회원 테이블 주문 테이블 결합 (위와 같은 방식)
2) 임시테이블 생성
CREATE TEMPORARY TABLE 임시테이블명
SELECT A.* (그냥 *하면 임시테이블도 하나의 테이블이기 때문에 열 생성 X)
B.ORDER_NO
임시테이블은 서버 연결 종료시 자동 삭제
3) 성별 남성 조건 필터링(WHERE) + 거주지별 구매횟수 집계(GROUP BY) + 구매횟수 100회 미만 (HAVING) + 구매횟수 낮은순 (ORDER BY)
SELECT ADDR
COUNT(ORDER_NO) AS 구매횟수
FROM 임시테이블명
WHERE GENDER =’MAN’;
GROUP
BY ADDR;
HAVING COUNT(ORDER_NO) < 100
ORDER
BY COUNT(ORDER_NO) ASC;
▶ 3개 이상 테이블 결합
회원 - 주문 - 상품
회원 및 주문 테이블은 회원번호 기준으로 1:N 관계 (1명 회원이 여러번(N) 주문 가능)
주문 및 상품 테이블은 상품코드 기준으로 N:1 관계 (1개 상품을 여러 번(N) 주문 가능)
* 주문 테이블 기준으로 회원 및 상품 테이블 LEFT JOIN으로 결합
1) 회원 테이블 LEFT JOIN
SELECT *
FROM 주문테이블 AS A (기준 테이블로)
LEFT
JOIN 회원테이블 AS B
ON A.MEM_NO = B.MEM_NO (회원번호 기준)
2) 상품 테이블 LEFT JOIN (이어서 코드 작성)
LEFT
JOIN 상품테이블 AS C
ON A.PRODUCT_CODE = C.PRODUCT_CODE; (상품코드 기준)
'IT 기초 > SQL' 카테고리의 다른 글
[SQL 활용] 연산자 및 함수 - 함수 (0) | 2023.04.04 |
---|---|
[SQL 활용] 연산자 및 함수 - 연산자 (0) | 2023.04.04 |
[SQL 문법] 서브 쿼리(Sub Query) (0) | 2023.04.01 |
[SQL 기본구조] SQL 정의, 관계형 데이터베이스, SQL 명령어 (0) | 2023.03.31 |
[SQL 문법] 데이터 조회 (SELECT) (0) | 2023.03.30 |