wintertreey 님의 블로그
[MySQL] Rename, JOIN 본문
RENAME
테이블 이름 변경
RENAME TABLE table1 TO table2;
자세한 설명은 하단에 첨부한 글을 참고.
JOIN
https://opentutorials.org/course/3161/19545
DATABASE가 다음과 같다고 가정
LEFT JOIN
SELECT
D.product_id, -- 상품 ID
D.product_name, -- 상품 이름
D.product_type, -- 상품 타입
P.user_id -- 해당 유저가 상품을 보유/권한 있는지
FROM PRODUCT D
LEFT JOIN PRODUCT_USER P
ON P.product_id = D.product_id
AND P.user_id = '13';
실행 결과
product_id | product_name | product_type | user_id |
1 | 노트북 | 전자제품 | 13 |
2 | 키보드 | 전자제품 | NULL |
3 | 책 | 도서 | NULL |
LEFT JOIN을 사용할경우,
모든 상품을 출력하고, 유저 13이 권한이 있는 상품 뿐만 아니라, 권한 없는 상품도 NULL로 출력된다.
INNER JOIN (,)
SELECT
D.product_id ID, -- 상품 ID
D.product_name AS NAME, -- 상품 이름
D.product_type, -- 상품 타입
P.user_id -- 해당 유저가 상품을 보유/권한 있는지
FROM PRODUCT D, PRODUCTUSRPAIR P
WHERE P.product_id = D.product_id
AND P.user_id = '13';
실행결과
ID | NAME | product_type | user_id |
1 | 노트북 | 전자제품 | 13 |
INNER JOIN 이므로 유저 13이 권한이 있는 상품만 출력된다.
권한 없는 상품은 아예 결과에서 제외됨.
ALIAS 별명을 줄때 AS 를 사용한다. 그러나 AS 가 생략되어도 문제없이 출력된다.
JOIN의 활용 범위 및 주의할점
현재 데이터에 관련된 작업을 할 경우에는, JOIN을 써도 된다.
그러나 과거 데이터를 보관하는 경우엔 JOIN을 걸면 안된다.
로그는 변하면 안되는 데이터 이기 때문.
5년전의 데이터에선 글쓴이의 별명이 "완두콩싫어" 였다가, 현재 데이터에서의 글쓴이의 별명이 "완두콩좋아"가 되었다면,
과거의 데이터 기록상에선 "완두콩싫어"로 남아있어야지, 현재 데이터와 조인되어서 "완두콩좋아"가 되면 안되기 때문.
https://extbrain.tistory.com/61
[MySQL] 테이블 이름 변경 (RENAME)
▶MySQL 테이블 이름 변경 (RENAME) ▶설명 전에 쓴 글인 ' [MySQL] 테이블 수정 (ALTER TABLE) 간단 정리' 에서 이미 테이블 이름 변경을 설명했습니다. 왜 똑같은 글을 쓰는지 의문인 사람도 있을 수 있습
extbrain.tistory.com
'SQL과 DB' 카테고리의 다른 글
[MySQL] Transaction (0) | 2025.09.08 |
---|---|
[MyBatis]1:N 객체 매핑 : <resultMap> <collection>, flatMap이란 (0) | 2025.09.04 |
[MySQL] UPDATE (0) | 2025.08.29 |
[MySQL] SELECT (2) | 2025.08.26 |
[MySQL] INSERT (0) | 2025.08.26 |