데이터베이스(DB)

SQL 고급 문법(3)

sck07013 2024. 11. 23. 17:42

외부 조인

테이블에 모두 데이터가 있어야 결과가 나오는 내부 조인과 달리 외부 조인은 한짜에만 데이터가 있어도 결과가 나옴

 

외부조인의 형식

select  m.mem_id, m.mem_name, m.addr
	from member m -- 왼쪽에 있는 회원 테이블 기준으로 외부조인
    		left outer join buy b -- 왼쪽에 있는 회원 테이블 기준으로 외부조인, 왼쪽 테이블의 내용은 모두 출력되어야 한다
    		on m.mem_id = b.mem_id
	order by m.mem_id;

 

기타 조인

 

상호 조인

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능

 

회원 테이블과 구매 테이블의 상호 조인

select * 
	from buy
		cross join member ;

 

대용량 테이블 만들기

create table ~select문 사용 

create table cross_table
	select *
		from sakila.actor
			cross join world.country;

select * from cross_table limit 5;

 

자체 조인

자신이 자신과 조인한다는 의미

예시)  회사의 조직 관계

 

자체 조인의 형식

select <열 목록>
from <테이블> 별칭A
	inner join <테이블> 별칭B
	on <조인될 조건>
[where 검색 조건]

 

자체 조인 활용

경리부장 직속 상관의 연락처

use market_db;

insert into emp_table value('대표', null, '0000');
insert into emp_table value('영업이사', '대표', '1111');
insert into emp_table value('관리이사', '대표', '2222');
insert into emp_table value('정보이사', '대표', '3333');
insert into emp_table value('영업과장', '영업이사', '1111-1');
insert into emp_table value('경리부장', '관리이사', '2222-1');
insert into emp_table value('인사부장', '관리이사', '2222-2');
insert into emp_table value('개발팀장', '정보이사', '3333-1');
insert into emp_table value('개발주임', '정보이사', 3333-1-1);

select A.emp "직원", B.emp "직속상관", B.phone "직속상관연락처"
	from emp_table A
		inner join emp_table B
		on A.manger = B.emp
    where A.emp = '경리부장';