4월 11일 내용정리
1.조인은 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말합니다.
2.정규화는 데이터의 중복을 피하기 위해 데이터를 공통부분없이 우선 먼저 쪼개는것
분리된 테이블에서 하나의 pk로 연결되어 있는데, 이것을 이어서 붙이는것을 join을 사용한다.
3.내부join과 외부join이 있다. 내부join을 더 자주 사용.
이때 pk는 한번만, fk는 여러번 쓸수 있음 참조키 이기 때문
4.select 테이블명, 열이름, 테이블명, 열이름, .....
from 연결할 테이블1
inner join 연결할 테이블2
on 조인될 조건
where 조건 ->생략 가능함
5.inner join : equi join, join대상 테이블에서 공통 속성을 기준으로
= 비교에 의해 같은 값을 가지는 행을 연결하며 결과를 생성하는 join방법
6.LEFT OUTER JOIN FROM 테이블명
LEFT OUTER JOIN 테이블명2
ON 테이블.컬럼명 = 테이블2.컬럼명;
조인문의 왼쪽에 있는 테이블의 모든 결과를 가져 온 후 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다.
7.cross join 내가 가지고 있는 첫번째 자료행과 두번째 자료행을 곱한값
즉 첫번째 자료행은 10행 두번째 자료행은 12개 이므로 10*12 하여 총120행 이다.
use jointestdb;
-- 문1
select pr.pcode, pr.pname, pr.price, po.orderdate, po.amount
from pordertbl po
inner join producttbl pr
on po.pcode =pr.pcode;
-- 아래와 같이 처리해도됨
select pr.pcode, pr.pname, pr.price, po.orderdate, po.amount
from pordertbl po, producttbl pr
where po.pcode =pr.pcode;
-- 문2
select cu.custid, cu.cname, po.amount
from customertbl cu
inner join pordertbl po
on cu.custid =po.custid;
-- 문3
select po.custid, address, orderdate, amount
from pordertbl po
-- 왼쪽에 있는 테이블은 모두 가져오고 오른쪽은 on또는 where조건에 해당하는 테이블자료를 가지고옴 right는 그반대 의미
left outer join customertbl cu
on po.custid=cu.custid
order by po.custid desc;
-- 문4
select*
from producttbl
cross join pordertbl;