sql 명령어에는 select, limit 등 다양하게 있다. 이 중에서도 join에 대해 정리해보려고 한다.
join에는 크게 inner join, outer join이 있다.
(1) inner join
테이블간의 공통된 부분만 검색한다.
SELECT * FROM 테이블_1 JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
문제) Jiwon이 작성한 content의 category name을 찾기 위한 SQL을 작성해보자.
select category.name from category //'on'을 이용해서 조건을 작성한다. inner join content_category on category.id = content_category.categoryId inner join content on content_category.contentId = content.Id inner join user on content.userId = user.id where user.name='Jiwon'
(2) left outer join
SELECT * FROM 테이블_1 LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
문제) user의 name과 email 그리고 그 user가 속한 role name을 찾기 위한 SQL을 작성해보자. 속한 role이 없더라도, user의 name과 email,role name을 모두 찾아야한다.
select user.name, user.email, role.name from user //모든 user의 정보를 출력해야 하기 때문에 left join을 사용했다. left join role on user.roleId = role.id
(3) right outer join
SELECT * FROM 테이블_1 RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
right outer join은 right outer join과 똑같은 결과를 낼 수 있다. 다만 왼쪽에 작성한 테이블을 관점으로 하는지, 오른쪽에 작성한 테이블을 관점으로 하는지에 따라 달려있다.
select user.name, user.email, role.name as roleName from role right join user on user.roleId = role.id
이번시간에는 mysql에 대해 공부했다.
다음시간에는 데이터베이스를 이용해 Cmarket을 구현한다
오늘은 여기까지 :)