SQL의 꽃, SELECT 문을 마스터해보자!
이어서 SELECT 문의 나머지 활용법들을 정리해줄게. 실무에서도 자주 쓰이는 기능들이니까 꼭 기억해두자!
SQL Select 문(1) 편과 (2) 편에서 다루는 함수들만 가지고도 실무에서 70% 이상 활용할 수 있어.
함수 하나하나의 사용방법은 자세한 포스팅으로 천천히 공유할께.
4. 중복 제거 – DISTINCT
데이터 조회할 때 중복된 값을 빼고 고유한 값만 가져오고 싶을 때 DISTINCT를 사용해.
SELECT DISTINCT department
FROM employees;
👉 employees
테이블에서 중복되지 않은 부서 이름만 가져와.
Tip: DISTINCT는 여러 컬럼에 적용될 수 있어.
SELECT DISTINCT department, location
FROM employees;
위 예제는 부서와 위치의 고유한 조합만 보여줘.
5. 데이터를 그룹화하자 – GROUP BY
데이터를 그룹 단위로 묶어서 보고 싶을 땐 GROUP BY를 사용해. 집계 함수와 같이 쓰일 때 효과적이야.
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
👉 각 부서별로 직원 수를 계산해주는 예제야.
집계 함수에는 다음과 같은 것들이 있어:
COUNT()
: 개수 구하기SUM()
: 합계 구하기AVG()
: 평균 구하기MAX()
: 최대값 구하기MIN()
: 최소값 구하기
Tip: 조건을 걸고 싶다면
HAVING
을 사용해.WHERE
는 개별 행에 조건을 걸지만,HAVING
은 그룹화된 결과에 조건을 걸어.
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;
👉 직원이 5명 이상인 부서만 보여줘.
6. 여러 조건을 걸어보자 – AND와 OR
여러 조건을 동시에 걸고 싶다면 AND와 OR를 사용하면 돼.
SELECT name, age, department
FROM employees
WHERE age > 30 AND department = 'HR';
👉 30살이 넘고 HR 부서에 속한 직원만 조회해.
AND와 OR의 우선순위
- AND는 OR보다 우선순위가 높아.
- 순서를 명확하게 하고 싶다면 괄호
()
를 사용하면 돼.
SELECT name
FROM employees
WHERE (age > 30 AND department = 'HR') OR department = 'IT';
👉 나이가 30살 넘고 HR 부서에 속하거나 IT 부서에 속한 직원을 가져와.
7. 여러 테이블을 합쳐보자 – JOIN
현실 데이터는 하나의 테이블에 모든 정보가 있지 않아. 테이블끼리 연결하려면 JOIN이 필요해.
INNER JOIN
두 테이블에서 일치하는 데이터만 가져올 때:
SELECT e.name, d.department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id;
👉 직원 테이블(employees
)과 부서 테이블(departments
)을 연결해서 직원 이름과 부서명을 가져와.
LEFT JOIN
왼쪽 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에 일치하는 데이터가 없으면 NULL로 채워.
SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d
ON e.department_id = d.department_id;
👉 모든 직원의 이름은 가져오되, 부서 정보가 없는 직원도 포함돼.
8. 쿼리 안의 쿼리 – 서브쿼리
SELECT 문 안에 SELECT 문을 넣어 더 복잡한 조건을 처리할 수 있어.
SELECT name
FROM employees
WHERE department_id = (
SELECT department_id
FROM departments
WHERE department_name = 'HR'
);
👉 HR 부서에 속한 직원만 조회하는 예제야.
Tip: 서브쿼리는
WHERE
,FROM
,SELECT
절 어디에든 들어갈 수 있어. 상황에 맞게 활용해보자.
9. 조건별 값 처리 – CASE
특정 조건에 따라 다른 값을 보여주고 싶을 때는 CASE를 사용해.
SELECT name,
CASE
WHEN age > 30 THEN 'Senior'
ELSE 'Junior'
END AS level
FROM employees;
👉 나이가 30살 이상이면 Senior, 그 이하면 Junior라고 표시해.
활용 Tip: CASE 문은 조건에 따라 컬럼 값을 변환하거나 그룹을 나눌 때 유용해.
마무리하며
여기까지 SELECT 문을 기본부터 활용법까지 정리해봤어! SELECT만 잘 사용해도 데이터를 조회하고 가공하는 데 큰 도움이 될 거야. 자주 사용하면서 익숙해지면 복잡한 쿼리도 술술 써내려갈 수 있을 거야!
“데이터를 자유롭게 다루는 첫걸음은 SELECT 문부터 시작된다!” 🚀
답글 남기기