소개
6개월차 신입 데이터 분석가입니다. SQL에 대해 조금 더 깊게 이해하고자 공부를 시작합니다.
SQL 관련 포스팅 링크를 모아둔 아카이브 페이지가 있습니다.
글의 목표
본인이 SQL을 사용하면서 자주 겪는 에러 유형 정리
1. 콤마 위치
-- 흔하디 흔한 실수
SELECT FIVE,
FOUR,
SIX,
FROM blartable
첫 번째 유형, 위와 같이 마지막 컬럼에도 콤마를 찍는 유형이 있다.
콤마를 위와 같이 컬럼 마지막에 적게되면 발생할 수 있는 유형이다.
해결책은?
-- 콤마를 앞에 쓰자.
SELECT FIVE
,FOUR
,SIX
FROM blartable
이렇게 콤마를 컬럼 앞에다가 찍게 되면 오류 발생 확률이 줄어든다.
(본인부터 실천하자.)
2. Where과 and
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM blartable
WHERE FIVE = 'a'
AND SIX = 'b'
위와 같이 where절 조건이 여러개면 AND를 사용하게 된다.
만약, FIVE의 조건이 필요 없어지는 경우
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM blartable
AND SIX = 'b'
가끔 이런 미친 실수를 할 때가 있다. 사실, 가끔 아닌듯
해결책은?
쿼리를 작성하기 전에 예약어를 한번 더 체크하자.
3. 서브 쿼리 괄호
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM
(
select *
from blartable
) A
서브쿼리는 위와 같이 괄호로 감싸주어야 한다.
근데 간혹 서브쿼리 깊이가 깊어지면
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM
(
select *
from
select
from
blartable
)A
) B
위와 같이 중간에 괄호로 닫아주는걸 깜빡할 때가 있다.
-- 서브쿼리는 괄호를 먼저 적고 거기서 시작
SELECT FIVE
,FOUR
,SIX
FROM (
select *
from (
select
from
blartable
)A
) B
해결책은?
무작정 예약어만 적지 말고 반드시 괄호 () 를 먼저 쓰고 쿼리를 날리자.
4. 조인 조건
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM TABLE_A A
LEFT JOIN TABLE_B B
ON A. = B.
보통 이렇게 조인을 사용한다.
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,SIX
FROM TABLE_A T
LEFT JOIN TABLE_B D
ON D. = T.
그런데 간혹 위와 같이 조인 조건을 잘못 거는 경우가 있다.
문제가 무엇일까?
테이블 약어를 마음대로 사용했기 때문이다. 보통 뇌는 순서대로 인식을 하지만, 위 쿼리 같은 경우 T -> D로 작성하여 부자연스럽게 테이블 약어를 지정했다.
해결책은?
약어 또한 합리적으로 지정해야 한다.
5. group by 절 사용 시
-- 흔하디 흔한 실수
SELECT FIVE
,FOUR
,count(SIX)
FROM TABLE_A
group by FIVE
위 쿼리의 문제점은 뭘까? FOUR 컬럼이다. 왜? group by를 사용하려면 반드시 group by 절과 집계 컬럼을 제외한 select절의 열이 일치해야 한다.
-- 흔하디 흔한 실수
SELECT FIVE
,count(SIX)
FROM TABLE_A
group by FIVE
6. 영타 오류
다음 유형으로 영타 오류가 있다. 한글이야 우리가 친숙한 언어니까 빠르게 사용가능하지만, 영타 같은 경우 스펠링을 명확하게 기억을 하지 못하는 오류가 있다.
그리고, 친숙한 언어가 아니기 때문에 그 오류에 대해 자각하는 속도가 매우 늦다.
그래서, 본인은 영타를 칠 때는 평소보다 타자를 조금 더 천천히 치려는 습관을 들이려 하는 편이다.
이상.
'딥상어동의 딥한 SQL > LV1.쿼리초보탈출기' 카테고리의 다른 글
[MSSQL] 한번에 끝내는 순위 함수 ROW_NUMBER, RANK, DENSE_RANK (0) | 2020.12.30 |
---|---|
[MSSQL] 문자열 숫자 변환 (0) | 2020.12.17 |
[MSSQL] ROW_NUMBER에 대한 고찰 (0) | 2020.11.14 |
[Oracle SQL] JOIN시 WHERE 절과 ON 절의 차이(where clause vs on clause (0) | 2020.11.10 |
[Oracle SQL] 쉽게 배워보는 JOIN의 원리 (Cross Join, Inner Join, Left Join) (0) | 2020.11.08 |
제 블로그에 와주셔서 감사합니다! 다들 오늘 하루도 좋은 일 있으시길~~
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!