ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.
데이터 분석가로 사회에 발을 딛은 지 벌써 3년이 되어갑니다. 작은 경험이나마 도움이 되길 바라는 마음으로 본 글을 작성하였습니다.
SQL의 기본을 알고 싶어요.
SQL을 공부하면서 과연 이런 걸 실무에서 사용할까? 하는 의문보다는 이런 것도 쓰는구나, 어렵겠다 싶었습니다. 경험이 많진 않으나 경험해 본 바, 늘 쓰이는 핵심들이 있더군요. 하지만 그 전에 기초를 알아야겠지요? 이번 포스팅에서는 그 기본만 알려드릴려 합니다.
1. SELECT COLUMN FROM TABLE
가장 쉬운 예시를 들어봅시다. 내가 구매한 쇼핑몰 사이트에서 구매내역을 "조회" 합니다. 이 말은 곧, "내가 구매한 내역(컬럼)을 쇼핑몰(테이블)로 부터 조회(SELECT)합니다" 라는 말이 됩니다. 그럼 실제로 사용하는 방법은 어떨까요?
SELECT 구매내역 FROM 쇼핑몰;
쇼핑몰이라는 사이트로부터(FROM TABLE) 구매내역을(COLUMN) 조회(SELECT)한다. 여기까지 이해되셨나요?
그렇다면 이건 어떨까요?
"오늘 다녀온 맛집에서 먹었던 메뉴 전부를 알고싶어!" 한 번 생각해본 후 아래 접은글을 펼쳐보시면 정답을 확인하실 수 있습니다.
SELECT 메뉴 FROM 맛집;
2. WHERE
앞 단계에서 우리는 특정한 조건 없이 조회만 해보았습니다. 그렇다면 조건을 걸고 싶을 땐 어떻게 해야 할까요?
바로 WHERE이라는 구문을 사용하는 것 입니다.
사실상, SELECT과 WHERE은 세트 상품이나 다름없습니다. 그럼 예시를 한 번 살펴볼까요?
"내가 작년에 다녔던 학교에서 김씨 성을 가진 친구의 주소를 까먹어서 알고 싶은데.."
SELECT 주소
FROM 학교
WHERE 연도 = '작년'
AND 성씨 LIKE '김%';
이해가 확 되시나요?
물론 아직 LIKE라는 문법에 대한 설명을 하진 않았지만,
쉽게 말해 '~로' 시작하는 것을 조회한다고 생각하면 쉽습니다.
3. GROUP BY
여기까지 조회와 조건절을 사용하는 방법을 익혀보았습니다. 하지만 결코 해당 문법들로만 실무를 할 순 없겠지요?
사실상 가장 중요한 개념인 GROUP BY 입니다.
해당 문법은 더 쉬운 예제로 들어보겠습니다.
"우리학교에서 올해 2학년 남,녀 평균키가 어떻게 되지?"
SELECT 성, AVG(키)
FROM 학교
WHERE 학년 = '2학년'
GROUP BY 성;
해당 예제에서 핵심은 성비별 키의 평균입니다. 기준이 되는 성을 GROUP BY하여 평균(AVG)을 내는 것이지요.
이외에도 합계는 SUM, 최대값은 MAX, 최소값은 MIN 등등이 있습니다.
그럼 다른 예제도 들어볼까요?
"우리 회사에서 회계팀의 각 팀장과 사원들의 급여 합은 어떻게 됩니까?"
SELECT 직급, SUM(급여)
FROM 회사
WHERE 팀 = '회계팀'
GROUP BY 직급;
팀장과 사원들의~ 라고 했으니 기준은 직급이 됩니다. 그리고 급여의 합계이므로 SUM을 사용합니다.
이번에도 이해가 되셨나요? 아무래도 데이터는 데이터로 보는 게 가장 낫겠지요?
우리는 조건절로 "회계팀"만, 기준은 직급으로, 합계는 급여로 잡았습니다. 아래는 결과입니다.
4. ORDER BY
GROUP BY까지 이해가 되셨다면, SQL의 기초는 거의 완성된 것이나 다름 없습니다.
이제 남은 기초도 배워볼까요?
다음은 ORDER BY 입니다. 어떤 데이터를 조회하였을 때, 오름차순 혹은 내림차순으로 정렬되서 보이면 좋을텐데, 늘 그렇진 않답니다.
그래서 우린 ORDER BY를 사용해야 합니다. 다음 예제로 확인해 보겠습니다.
"우리 회사에 있는 모든 직원들의 급여를 오름차순으로 보고 싶어"
SELECT 이름, 급여
FROM 회사
ORDER BY 급여;
급여순으로 정리된 게 보이시나요? 만약 해당 데이터에서 내림차순으로 하고싶다면
ORDER BY 급여 DESC;
로 코드를 수정해 주시면 됩니다.
지금까지 SQL의 기초 1편이였습니다. 이해가 쉬우셨나요?
SQL 공부 혹은 데이터 분야로 준비하시는 분들에게 작은 도움이나마 되었길 바라며, 다음은 기초 2편으로 찾아뵙겠습니다.
'SQL의 모든 것 > SQL의 이론 및 기초' 카테고리의 다른 글
실무 ETL (2) | 2024.06.03 |
---|---|
오라클 WHERE절의 다중연산 (2) | 2024.05.31 |
PL/pgSQL - SQL 프로시저 언어 (0) | 2024.01.26 |
SQL 수행 아키텍처(INSERT, SELECT, UPDATE) (2) | 2024.01.25 |