현재 2개의 테이블에서 서로 관계를 맺은건 detail_id 한개이다.
Join
//기본예시
SELECT *
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
//Inner Join
SELECT *
FROM selectanswerlist
INNER JOIN detailsurvey
ON selectanswerlist.detail_id = detailsurvey.detail_id;
//Left Join
SELECT *
FROM selectanswerlist
LEFT JOIN detailsurvey
ON selectanswerlist.detail_id = detailsurvey.detail_id;
//Right Join
SELECT *
FROM selectanswerlist
RIGHT JOIN detailsurvey
ON selectanswerlist.detail_id = detailsurvey.detail_id;
1. Join의 결과는 다음과 같으며 detail_id를 기준으로정렬되있다
2. 내부 조인은 두 테이블에서 조건이 일치하는 행만 반환
Natural join
Natural join의 경우 테이블에서 이름이 같은 칼럼을 찾아 이를 기준으로 열을 정렬한다.
from에서 사용한 테이블의 칼럼이 순차적으로 나오고 이후에 join된 테이블의 칼럼이 순차적으로 나온다.
일반적인 join보다 칼럼이 중복된걸 자동으로 없애주기에 간결해진다.
SELECT *
FROM table1
NATURAL JOIN table2;
select *
from selectanswerlist
natural join detailsurvey;
Union, Union all (합집합)
union은 두 개 이상의 SELECT 문의 결과를 결합하여 단일 결과 집합으로 보여준다.
union all의 경우 2개의 테이블중 겹치는 칼럼의 중복을 제거해준다.
//(select column_name from Table_name1) union (select column_name from Table_name2)
//(select column_name from Table_name1) union all (select column_name from Table_name2)
(select detail_id from selectanswerlist) union (select detail_id from answer);
(select detail_id from selectanswerlist) union all (select detail_id from answer);
Intersect, Intersect all (교집합)
2개의 테이블중 겹치는 부분만 출력
intersect all의 경우 각 테이블에 값이 2개씩 있다면 2번씩 출력
//SELECT column_name FROM Table_name1 INTERSECT SELECT column_name FROM Table_name2;
select member_id from answer intersect select member_id from member;
select member_id from answer intersect all select member_id from member;
except, except all (차집합)
2개의 테이블중 서로 겹치지 않는 부분만 출력
except all의 경우 겹치지 않는 것들에서 중복된것도 출력
a = 1,2,3,3 // b = 2,5 일때
except는 1,3,5를출력
except all은 1,3,3,5를 출력
//(select column_name from Table_name1) except (select column_name from Table_name2);
(select detail_id from selectanswerlist) except (select detail_id from answer);
(select detail_id from selectanswerlist) except all (select detail_id from answer);
'DB' 카테고리의 다른 글
(김영한 로드맵) JPA 프로그래밍 - 1 (mybatis VS JPA) (0) | 2024.08.24 |
---|---|
[데이터베이스]데이터 가져오기 - 1 (0) | 2024.02.14 |