[Database] SQL 간단 실습

박채은·2022년 12월 6일
0

Database

목록 보기
2/2

따옴표, 백틱의 사용 시점

  • 따옴표 : 문자열, 날짜를 감쌀 때
  • 백틱/쌍따옴표 : 객체 이름(테이블명)이나 식별자(속성명)을 감쌀 때
    • 객체 이름이나 식별자에 공백이 있으면 이를 구분하기 위해 사용
    • 객체 이름을 만드는 규칙에 위배되지 않는다면 백틱은 생략할 수 있다.(공백이 있거나, 예약어이거나, 숫자로 시작하거나 등)
    • 쌍따옴표도 사용되지만, 주로 백틱을 사용한다.

쿼리 작성 순서/실행 순서

작성 순서

  1. select
  2. from (+ join-on)
  3. where
  4. group by
  5. having
  6. order by

실행 순서

  1. from
  2. on
  3. join
  4. where
  5. group by
  6. having
  7. select
  8. order by

조회할 테이블 확인 -> 추출 조건(where) -> 데이터 그룹화 ->
그룹화 조건(having) -> 데이터 추출 -> 데이터 순서 정렬


where/having

where과 having은 필터링을 한다는 점에서 비슷하지만 퍼포먼스적으로는 where 문이 더 좋다.

where 문은 from으로 전체 데이터(테이블)를 불러온 후, 바로 필터링을 하지만,
having 문은 from으로 전체 데이터를 불러오고 group by를 통해 전체 데이터를 그룹화한 후에, 필터링을 하기 때문에 더 비효율적이다.

where 문을 쓸 수 있는 상황이면 where 문을 쓰자!


다중 Join

다중 Join도, 일반 Join과 동일하다. 그저 JOIN-ON을 사용하는 횟수가 늘어난 것이다.

1. 여러 개의 JOIN-ON 사용

select * from 테이블이름X x 
JOIN 테이블이름Y y ON x.col_name1 = y.col_name2
JOIN 테이블이름Z z ON y.col_name3 = z.col_name4;

2. ON 대신에 where 문으로 조건 설정

select *
from 테이블이름X x, 테이블이름Y y, 테이블이름Z z, ...
where x.col_name1 = y.col_name2
  and y.col_name3 = z.col_name4;

Error

Unknown column 'x' in 'having clause'

Having 절은 Group By 또는 SELECT에 있는 colmuns만 사용할 수 있다. 따라서 x를 select에 추가해주거나 having 대신에 where 문을 사용해야 한다.


[참고]

https://bicloud.tistory.com/20
https://myjamong.tistory.com/172
다중 Join
따옴표/백틱 차이점
https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql

0개의 댓글