본문 바로가기
Database & Storage

개발자가 자주 잊어버리는 SQL 기본 명령어 7가지 (JOIN, GROUP BY 실습)

by yamoojin83 2025. 11. 10.

개발자가 자주 잊어버리는 SQL 기본 명령어 7가지 (JOIN, GROUP BY 실습)

SQL은 한 번 익히면 평생 쓰는 언어지만, 의외로 자주 까먹는 명령어들이 있습니다.

특히 실무에서 오래 사용하지 않다가 다시 쿼리를 짤 때, JOIN이나 GROUP BY 같은 구문이 헷갈릴 때가 많죠.

이번 글에서는 초보자뿐만 아니라 실무자도 종종 놓치는 SQL의 핵심 명령어 7가지를 예시와 함께 깔끔하게 정리했습니다.

 

sql 기본 명령어 정리

1. SELECT — 데이터 조회의 기본

SQL의 시작이자 끝은 SELECT입니다.

데이터를 조회할 때 항상 이 구문을 사용하죠.

SELECT name, age FROM users;

💡 팁:
특정 컬럼만 가져오고 싶을 땐 콤마로 구분하며, 전체 데이터를 보고 싶다면 SELECT *을 사용합니다.

2. WHERE — 조건 필터링

WHERE는 데이터 중 필요한 행(row)만 걸러낼 때 사용합니다.

비교 연산자(=, >, <, <>), 논리 연산자(AND, OR, NOT)와 함께 쓰입니다.

SELECT * 
FROM users 
WHERE age >= 20 AND city = 'Seoul';

주의:
WHERE 절은 GROUP BYHAVING보다 먼저 실행됩니다.

3. ORDER BY — 정렬

조회 결과를 원하는 순서로 정렬할 때 사용합니다.

기본값은 오름차순(ASC)이며, 내림차순은 DESC를 사용합니다.

SELECT name, age 
FROM users 
ORDER BY age DESC;

💡 팁:
여러 기준으로 정렬할 땐 ORDER BY age DESC, name ASC처럼 콤마로 구분합니다.

4. DISTINCT — 중복 제거

DISTINCT는 결과에서 중복된 데이터를 제거할 때 사용합니다.

예를 들어 같은 도시 이름이 여러 번 나오지 않게 하려면 이렇게 작성합니다.

SELECT DISTINCT city FROM users;

주의:
DISTINCT는 SELECT 바로 뒤에 한 번만 쓸 수 있습니다.

5. JOIN — 테이블 연결

두 개 이상의 테이블을 연결할 때 사용하는 구문입니다.

가장 자주 쓰이는 것은 INNER JOIN, LEFT JOIN, RIGHT JOIN 입니다.

SELECT u.name, o.order_id 
FROM users u
INNER JOIN orders o ON u.user_id = o.user_id;

💡 설명:
INNER JOIN은 양쪽 테이블 모두에 존재하는 데이터만 반환합니다.

LEFT JOIN은 왼쪽 테이블 기준으로, RIGHT JOIN은 오른쪽 테이블 기준으로 데이터를 보여줍니다.

 

6. GROUP BY — 데이터 묶기

데이터를 특정 컬럼 기준으로 그룹화할 때 사용합니다.

예를 들어, 도시별 회원 수를 계산하려면 이렇게 작성합니다.

SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city;

💡 팁:
GROUP BY는 집계함수(AVG, SUM, COUNT 등)와 함께 자주 사용됩니다.

7. HAVING — 그룹 조건 필터링

WHERE와 비슷하지만, GROUP BY로 묶인 결과에 조건을 줄 때 사용합니다.

즉, 집계 결과를 필터링할 때 쓰이는 구문입니다.

SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city
HAVING COUNT(*) >= 10;

정리:
WHERE은 “개별 행(row)”을 필터링하고, HAVING은 “집계된 그룹”을 필터링합니다.

보너스 — LIMIT / ROWNUM

결과 행의 개수를 제한할 때 사용합니다.

MySQL에서는 LIMIT, Oracle에서는 ROWNUM을 사용합니다.

-- MySQL
SELECT * FROM users LIMIT 10;

-- Oracle
SELECT * FROM users WHERE ROWNUM <= 10;

💡 활용 팁:
페이징 처리 시 LIMIT은 필수입니다.
예: 게시판 목록에서 1페이지당 10개만 보여줄 때.

 

sql 학습 완성 화면

마무리

SQL은 단순한 데이터 조회 언어가 아니라, 논리를 시각화하는 언어입니다.

SELECT부터 GROUP BY, HAVING까지 자연스럽게 연결되는 흐름을 이해하면 데이터 분석과 백엔드 개발 모두에서 강력한 도구가 됩니다.

오늘 배운 7가지 명령어를 익혀두면, 복잡한 쿼리도 ‘한눈에 읽히는 코드’로 바뀔 거예요.

다음 글에서는 “예외처리(try-catch-finally) 제대로 이해하기 — 실전 에러 대응법”을 다뤄볼 예정입니다.

자바 초보자라면 꼭 이어서 보세요!