----------------------
JOIN
----------------------
-- 두개 이상의 테이블을 서로 묶어서 하나의 조회 결과를 만드는데 사용
----------------------
JOIN 종류
----------------------
-- INNER JOIN : ON 이하의 조건절을 만족하는 행만 JOIN
-- OUTER JOIN : ON 이하의 조건절을 만족하지 않는 행도 JOIN
-- LEFT OUTER JOIN : 조건을 만족하지 않는 왼쪽 테이블의 행도 JOIN
-- RIGHT OUTER JOIN : 조건을 만족하지 않는 오른쪽 테이블의 행도 JOIN
-- FULL OUTER JOIN : 조건을 만족하지 않는 왼/오른쪽 테이블의 행도 JOIN
-- CROSS JOIN : 한쪽 테이블의 모든 행과 반대쪽 테이블의 모든 행을 조인, 조건절이 없음
-- SELF JOIN : 한 테이블 내에서 JOIN
< INNER JOIN >
- 기본
select * from usertbl 으로 왼쪽 테이블을 지정해주고
inner join buytbl 로 오른쪽 테이블을 지정해준다. 그리고
on usertbl.userid = buytbl.userid; 을 사용해 각각의 기본키와 연결되어 있는 외래키를 입력해준다.
- 원하는 열만 출력
열이름 중복시 특정 테이블의 열 이름으로 선택해서 지정한다.
이유는 userid를 그냥 넣으면 userid라는 열이 두개가 존재해 모호하다는 에러가 뜨기 때문에
어느 테이블의 열이라는 것을 지정해주는 것이 좋다. ex) usertbl.userid
- 별칭 지정
테이블 옆에 별칭으로 지정할 문자를 적어주면 간단하게 조인할 수 있다.
- where 조건절 사용
where 조건절을 사용해 원하는 값을 추출해 낼 수 있다.
< 연습 문제 >
1.
select U.userid, birthyear, prodname, groupname
from usertbl U
inner join buytbl B
on U.userid = B.userid
where name ='바비킴';
2.
select name, addr, prodname, concat(mobile1,'-', mobile2) as PHONE
from usertbl U
inner join buytbl B
on U.userid = B.userid
where amount*price >= 100;
3.
select U.userid, name, birthyear, prodname
from usertbl U
inner join buytbl B
on U.userid = B.userid
where groupname = '전자';
< OUTER JOIN >
- LEFT OUTER JOIN ( on 조건을 만족하지 않는 left 테이블의 행도 출력)
left outer join으로 구매하지 않은 고객의 정보도 출력이 되게 할 수 있다.
(왼쪽 테이블이 usertbl임)
- RIGHT OUTER JOIN(on 조건을 만족하지 않는 right 테이블의 행도 출력)
이번에는 왼쪽, 오른쪽 테이블을 바꿔 right outer join을 해줬다.
- FULL OUTER JOIN(on 조건을 만족하지 않는 left, right 테이블의 행도 출력)
mysql에서는 full outer join 을 지원하지 않고 대신 union 을 사용해서 left, right outer join을 연결한다.
select * from usertbl left outer join buytbl on usertbl.userid=buytbl.userid
union
select * from usertbl right outer join buytbl on usertbl.userid=buytbl.userid;
< 여러 테이블들 JOIN >
- INNER JOIN
inner join을 두번 사용함.
- RIGHT OUTER JOIN
'IT수업 > 데이터베이스' 카테고리의 다른 글
it 수업 7주차 (23) JSON (0) | 2024.02.05 |
---|---|
it 수업 7주차 (22) VIEW (0) | 2024.02.05 |
it 수업 6주차 (20) index (0) | 2024.02.02 |
it 수업 6주차 (19) 업, 다운로드 (0) | 2024.02.02 |
it 수업 6주차 (18) if, case when 조건문 (1) | 2024.02.01 |