join (두개의 테이블 합치기 ) → 컬럼을 확장할때 쓰임
- inner join 교집합
select * from [A] inner join [B] on <조건>
- left outer join 왼쪽 집합
select * from [A] left join [B] on <조건>
- right outerjoin 오른쪽 집합
select * from [A] right join [B] on <조건>
- Full outer join
select * from [Atb] left join [Btb] on <조건구문>
- 조인은 본인의 tb 값만을 출력하지만 union은 자신의 tb에 외부 tb 값을 추가할 수 있음(중복 처리)
- mysql 은 full join 지원 x
- left join, rigth join → 중복 값 처리: union
UNION ( 중복처리, 필드 칼럼에 외부 table 값을 넣음 select 2번)
- 칼럼 추가가 아닌 공유, 이주 시킴
- union
- select * from [A] union select [추가 내용]
select * from market union select 1,1,1,1; (O)
select * from market union select 1,1,1; (X) 칼럼수가 일치
select * from [A] union select [추가 내용] from [B]
select m_category,m_name,m_seller from market left join sword on m_name=s_name
union
select m_category,m_name,m_seller from market right join sword on m_name=s_name;
서브 쿼리 → 조건을 찾기 위해 where 절에서..
- 단일행 서브 쿼리 → 실행 결과가 1건
select * from sword where s_name = (select m_name from market where m_seller='evernick');
- 다중행 서브 쿼리 → 실행 결과가 여러 건인 서브 쿼리 ( 'in' 칼럼 1개만 비교 )
select * from sword where s_name in (select m_name from market where m_category='검');
- 다중열 서브 쿼리 → 'in' 칼럼 2개 이상 비교
select * from sword where (s_name,s_level) in (select m_name, 50 from market where m_category='검');
→ 50이라는 level이 market에 없기에 비교를 위해 컬럼을 임의로 만들어냄
- 뷰 테이블 만들기
create view [view명] as [sql문]