SQL 초보자를 위한: 핵심 개념을 간단하게
Source: Dev.to

개요
SQL은 Structured Query Language의 약자입니다. 데이터베이스와 소통하기 위해 사용하는 표준 언어이죠. SQL을 데이터베이스에 정보를 얻거나, 새 데이터를 추가하거나, 레코드를 업데이트하거나, 삭제하고 싶을 때 사용하는 “영어”라고 생각하면 됩니다. SQL을 사용하면 네 가지 기본 CRUD 작업을 수행할 수 있습니다:
- Create →
INSERT - Read →
SELECT - Update →
UPDATE - Delete →
DELETE
SQL은 또한 강력한 절들을 제공합니다: 필터링(WHERE), 정렬(ORDER BY), 그룹화(GROUP BY, AVG, COUNT), 테이블 결합(JOIN), 그리고 고급 분석(NTILE) 등.
SQL을 배우는 가장 좋은 방법은 핵심 개념으로 나누어 이해하는 것입니다. 이 가이드에서는 초보자가 반드시 알아야 할 기본 주제들을 다루며, JOIN에 대한 설명, 윈도우 함수와 GROUP BY의 비교, 그리고 필수 SQL 함수들을 소개합니다.
SQL JOIN
JOIN은 두 개 이상의 테이블을 관련된 컬럼을 기준으로 행을 결합합니다. 테이블들은 공통된 컬럼을 공유해야 합니다. 주요 JOIN 유형은 다음과 같습니다:
- INNER JOIN – 두 테이블 모두에서 일치하는 값이 있는 행만 반환합니다. 일치하지 않는 행은 제외됩니다.
- LEFT JOIN (또는 LEFT OUTER JOIN) – 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환합니다. 일치하는 행이 없으면 오른쪽 테이블의 컬럼은
NULL이 됩니다. - RIGHT JOIN (또는 RIGHT OUTER JOIN) – 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다. LEFT JOIN의 반대 개념입니다.
- FULL OUTER JOIN (또는 FULL JOIN) – 두 테이블의 모든 행을 반환하며, 가능한 경우 매치하고 매치되지 않는 경우
NULL을 삽입합니다.
윈도우 함수 vs GROUP BY – 차이점은?
윈도우 함수와 GROUP BY는 모두 관련된 행들에 대해 계산을 수행하지만, 해결하는 문제가 다릅니다:
- **
GROUP BY**는 행들을 그룹별로 하나의 결과로 압축하여 더 작은 결과 집합을 만듭니다. 주로 집계와 보고에 사용됩니다. 그룹에 포함되지 않은 컬럼은 별도로 집계하지 않으면 선택할 수 없습니다. - 윈도우 함수는 원본 행의 세부 정보를 유지하면서 행 집합에 대해 값을 계산합니다. 계산 결과는
OVER (…)구문을 사용해 각 행에 붙여지므로, 입력 행 수와 동일한 수의 행이 출력됩니다. 상세 행과 집계된 컨텍스트(예: 순위, 누적 합계, 이동 평균)가 동시에 필요할 때 유용합니다.
초보자가 알아야 할 SQL 함수
ROUND
-- ROUND: rounds a number to a specified number of decimal places
ROUND(number, decimals)
-- Example:
SELECT ROUND(87.345, 2); -- Returns 87.35
CONCAT (또는 PostgreSQL의 ||)
-- CONCAT (or || in PostgreSQL): concatenates strings
CONCAT(str1, str2, ...)
-- PostgreSQL example using ||
SELECT first_name || ' ' || last_name AS full_name
FROM employees; -- Returns "John Smith"
TO_CHAR
-- TO_CHAR: formats dates (PostgreSQL syntax)
TO_CHAR(date, format)
-- Example:
SELECT TO_CHAR(exam_date, 'Day, DDth Month YYYY') AS formatted_date
FROM exams; -- Returns "Friday, 15th March 2024"