SQL Select 문(2) 중급편

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

여러 조건을 동시에 걸고 싶다면 ANDOR를 사용하면 돼.

SELECT name, age, department  
FROM employees
WHERE age > 30 AND department = 'HR';

👉 30살이 넘고 HR 부서에 속한 직원만 조회해.

AND와 OR의 우선순위

  • ANDOR보다 우선순위가 높아.
  • 순서를 명확하게 하고 싶다면 괄호 ()를 사용하면 돼.
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 문부터 시작된다!” 🚀


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다