1. order by
- order 절은 제일 마지막에 실행되는 절로써 뒤에는 어떤 절도 올 수 없다.
- ASC : 오름차순, Default 값 즉, 안 써도 됨.
- DESC : 내림차순
- 정렬을 성능을 정말 많이 떨어뜨리는 녀석중 하나이다.
- 만약 column 이 alias 상태라면 "그대로" 따라써 줘야한다.
- 위 사진은 order by 절에 alias 상태를 그대로 쓰지 않아서 난 오류이다.
- 또한 여러가지 조건을 부여해 multiful order을 진행할 수 있다.
SQL> select last_name, department_id, salary
2 from employees
3 order by department_id, salary desc // 부서번호로 정렬 후 월급으로 내림차순 정렬.
2. join의 개념(Cartesian Product)
- Join : 여러개의 table의 data를 검색
- Join의 원리 : join이 발생하면 join의 대상 table을 하나의 논리적인 table로 합쳐주는 일련의 과정을 거친다. 이때 table이 합쳐지면 각각의 talbe의 행들을 하나의 행으로 조합하는데 이때 무결정이 보장이 된 행으로 조합이 필요하다.
- Join은 반드시 n-1개의 조인 조건을 where절에 명시해야한다.(n:조인대상 table의 개수) 만약 3개의 table을 join 실행하려면 2개의 join 조건이 필요하다.
- Cartesian Product(카티시안 곱) : error에 가까우며 join 시 조건이 없는경우 가능한 모든 행을 조합하여 없는 경우의 수가 없는 table이 나와버림.
- Cartesian Product는 조인 조건을 생략한 경우, 조인 조건이 부적합한 경우 발생한다.
- Join시에는 반드시 소유주의 table을 접두에로 명시해야한다. 그렇지 않게된다면 pc는 여기 table 저기 table을 검색하느라 불필요한 자원을 소모하기 때문이다.
- Join시에는 무조껀 and 연산자로 해야한다. 그렇지 않으면 Cartesian Product가 발생한다.
3. join (equi-join)
- 등가 join 이라고도 하며 실제 90% 이상이 equi-join이다.
- 같은 column의 data가 존재할 때 사용된다.
- 위 사진은 department_id로 equi-join을 수행하였다.
- PK와 FK로 연결되어있는 table끼리 주로 사용
- pc는 data 비교를 앞서 말 했든시 ASC코드로 진행하기 때문에 column이름이 달라도 무방하다. 즉, data type과 data value 만 같아도 수행할 수 있다.
- 2개의 table에 같은 1개의 column을 참조하여 떨어져있는 column을 하나로 붙혀서 시각화 할 수 있음.
- table alias(별칭)은 AS나 ""가 아닌 무조건 공백문자이다.
- 마찬가지로 추가조건은 AND 연산자로 where절 밑에 이어붙힐 수 있음.
4. join (non-equi-join)
- 다른 column의 data로 join을 진행한다.
5. join (outer-join)
-
어느 한쪽의 table에 data가 더 많을 때 수행하는 join
-
대신 어느 한 table에 (+) 조건 즉, null값들을 채워줌으로써 null==null 조건이 완성되어 값을 출력할 수 있다. 다음 2가지 예시를 통해 보겠다.
-
아래 사진은 employ talble에 null 값을 부여하여 department에 빈칸을 전부 출력하였다. 직원 107명 + 사람없는 부서 16개 = 122개의 행출력.
- 아래 사진은 department에 null값을 추가하여 employees에 있는 모든 행을 출력하였다. 직원 106명 + 아직 부서가 없는 인원 1명 = 총 직원 107명
6. join (self-join)
- 위의 3개의 join은 반드시 2개 이상의 talbe로 join을 진행하지만 self-join은 이름대로 1개의 table만으로 join을 수행할 수 있다. 자체적으로 equi, non-equi, outer join을 수행한다.
- 1개의 table을 2개의 alias로 라벨링하여 2개의 table처럼 쓰명 서로를 join한다.
- 위 사진은 employees의 talbe을 하나는 e로 하나는 m으로 설정하여 2개의 table처럼 사용하여 equi-join을 수행하는 사진이다.
7. etc
- 성능을 떨어뜨리는 3대장 1.정렬 2.join 3.그룹화