달력

62024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

SQL, 우리가 쿼리를 짠다고 하는 .. 그 SQL.

SQL의 작성 순서는 어떻게 될까? 

쿼리 좀 짠다는 사람들은 "쿼리는 집합적 사고방식을 가져야 한다." 라는 말을 

몇번씩 들어 봤을 것이다. 

본인 역시 공감한다. 

 

단순한 쿼리야 뭐 어떻게든 작성할 수 있지만 

당장 테이블 3,4 개 이상만 조인을 하게 된다고해도 "집합적" 인 사고방식이 아니고서야 

작성 자체가 힘들어 하는 쿼린이들이 있을 것이다.

 

나보다 더 훌륭한 쿼리 고인돌들이 이글을 보면 뭐라고 할지 모르겠지만 

가장 첫 번째로 생각할 것은 

내가 가져오려고 하는 데이터가 어디에 있는가? 이다 

예를 들어 내가 Select 해야하는 컬럼의 갯수가 20 라고 가정할때 

저 20개 컬럼이 한 테이블에 다 모여 있다면 ?? 매우 Happy 하다. ㅎㅎ

근데 이런일은 없다 ㅠㅠ 

어지간한 데이터 건수가 아니면 집계테이블도 없고 

설사 집계테이블을 생성할 수 있다고 해도 집계테이블의 특성상 

언제나 비동기적이기 때문에 생성 자체를 고민해야 하고 ...

여튼...이건 설계 문제이니 다시 본론으로 돌아와서 

20개의 컬럼이 어디에 분포 되어 있는지를 찾는다.....가 첫번째 할일이다

이를 SQL로 본다면  SELECT * FROM T1, T2, T3, T4, T5 에 해당 될것이다. 

주의점은 SELECT 는 * 로 거들뿐 지금 단계에서는 고민 하지 않는다.

 

두번째는 이  T1 ~ T5 를 어떻게 연결(JOIN) 할 것인가? 이다. 

이부분은 WHERE 절에 해당 되는 내용이다. 

 

그러면 남은건? SELECT 에 원하는 20 컬럼을 잘 선택해서 사용 하면 되는것.  이게 세번째 ... 

 

근데 왜? 쿼리짜는걸 어려워 할까?  쉬운데....

나 어렸을적.. 43분마다 혼나던 시절을 떠올려 보면 

 

결국 두가지다

1. 원하는 데이터가 TABLE 로 없다...

모든 데이터가 단순히 테이블 조인으로 연결이 된다면 어려울리가 없겠지..

근데 실상은 그렇지가 않다. 

그러니 이 테이블을 SQL상에서 임시로 만들어야 하는 경우가 생긴다. 

이럴때 집합적인 사고방식이 필요하다는 것. 

 

2. JOIN의 개념을 모른다.

테이블(임시 테이블 포함) 간의 조인을 하는 부부이 어려웠다 

특히 OUTER JOIN과 INNER JOIN

근데 이건 뭐 일단은 공부하고 외우는 수밖에 없다. 

좀더 고급진 조인은 그 다음 문제...

 

그럼.... 저 두가지 문제를 어떻게 해결 해야 할까? 

그 방법은 다음에 작성하도록 한다.   뿅

Posted by redev
|