JOIN문
SQL 조인은 두개 혹은 그이상의 테이블들을 공통필드를 가지고 머지하는데 사용된다.
이는 스타 스키마로 구성된 테이블들로 분산되어있던 정보를 통합하는데 사용된다
왼쪽 테이블을 LEFT라고 하고 오른쪽테이블을 RIGHT으로 보며 JOIN의 결과는 방식에 상관없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게된다
조인의 방식에 따라 다음 두 가지가 달라진다
- 어떤 레코드들이 선택되는지
- 어떤 필드들이 채워지는지
JOIN의 종류
- INNER JOIN
- LEFT JOIN, RIGTH JOIN
- 조인 테이블에 데이터가 없어도 기준 테이블의 모든 데이터가 조회되고 조인테이블에 데이터가 존재할 경우 해당 데이터를 참조
- FULL OUTER JOIN
- 양쪽 테이블을 전체다 조회하고 대응되는 값이 있으면 출력하고 없으면 NULL을 출력
- SELF JOIN
- CROSS JOIN
- 기준테이블의 행을 조인테이블의 행만큼 증가시킴
JOIN시 고려할점
- 먼저 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 확인(중요!)
- 조인하는 테이블간의 관계를 명확하게 정의
- one to one
- one to many
- many to one
- 방향만 바꾸면 one to many와 같기때문에 사실상 동일
- many to many
- 이런경우는 많지않으며 이는 one to one이나 one to many 로 바꾸는것이 변환하여 조인하는것이 덜 위험
- 어느 테이블을 베이스로 잡을지 결정해야됨
NULLIF
- NULLIF(field, 0) → 첫번째 인자와 두번째 인자가 같을경우 NULL을 리턴하라
예시로 필드끼리 값을 나눌때 한쪽 필드의 값이 0이 들어가면 오류가 발생해버리기 때문에 0이면 NULL이 들어가도록 조치하여 해당 결과값을 NULL로 만들어 오류를 피하는방법에 사용될수 있음
COALESCE
- NULL 값을 다른 값으로 바꿔주는 함수
- 즉 NULL대신에 다른 백업값을 리턴해주는 함수
- COALESCE(exp1, exp2, exp3,….)
- exp1부터 인자를 하나씩 살펴서 null이 아닌값이 나오면 그걸로 리턴
- 끝까지 갔는데도 모두 NULL이면 NULL리턴
공백 혹은 예약키워드를 필드이름으로 사용하는방법
CREATE TABLE test(
'group' int primary key
)