Database

Database - Chapter 3-15. SQL (DML) 기초(데이터 조회)

Chansman 2025. 3. 20. 12:57

 

🚀 SQL 데이터 조회(SELECT) 완벽 정리

SQL에서 데이터를 조회하는 방법을 기본 조회부터 고급 기능까지 한눈에 이해할 수 있도록 정리했습니다. 🎯
이 글을 통해 효율적인 데이터 검색과 정렬, 조건 적용 방법을 익혀보세요!


📌 1. 기본적인 데이터 조회 (SELECT)

🔹 개념

  • SELECT 문은 테이블에서 데이터를 검색하는 가장 기본적인 방법입니다.
  • 특정 컬럼만 조회하거나 모든 데이터를 가져올 수 있습니다.

모든 컬럼 조회

sql
SELECT * FROM users;

🔹 설명: *을 사용하면 테이블의 모든 컬럼을 조회할 수 있습니다.

특정 컬럼만 조회

sql
 
 
SELECT user_id, username, email FROM users;
 

🔹 설명: 필요한 컬럼만 선택하여 데이터를 가져올 수 있습니다.


📌 2. 중복 데이터 제거 (DISTINCT)

🔹 개념

  • DISTINCT는 중복된 데이터를 제거하고 조회할 때 사용됩니다.

중복된 나이(age) 제거 후 조회

sql
 
 
SELECT DISTINCT age FROM users;

🔹 설명: 중복된 나이 값이 제거된 고유한 나이 목록이 반환됩니다.


📌 3. 새로운 컬럼을 만들어 조회 (AS - 별칭 지정)

🔹 개념

  • AS를 사용하면 기존 컬럼 값에 연산을 적용하여 새로운 컬럼을 만들어 표시할 수 있습니다.

나이에 100을 곱한 값을 새로운 컬럼으로 표시

sql
 
 
SELECT age, age * 100 FROM users;

🔹 설명: age * 100 값을 계산하여 표시하지만, 컬럼명이 자동으로 생성됩니다.

AS를 활용하여 새로운 컬럼명 지정

sql
 
SELECT age, age * 100 AS age100 FROM users;

🔹 설명: AS를 사용하면 새로운 컬럼명(age100)을 지정할 수 있어 가독성이 향상됩니다.


📌 4. 데이터 정렬 (ORDER BY)

🔹 개념

  • 데이터를 원하는 순서대로 정렬할 수 있습니다.
  • ASC(오름차순) 또는 DESC(내림차순) 옵션을 사용합니다.

나이순으로 오름차순 정렬

sql
 
SELECT * FROM users ORDER BY age;

🔹 설명: 나이가 작은 순서부터 큰 순서로 정렬됩니다.

나이순으로 내림차순 정렬

sql
 
SELECT * FROM users ORDER BY age DESC;

🔹 설명: 나이가 큰 순서부터 작은 순서로 정렬됩니다.

여러 기준으로 정렬 (나이 오름차순, 생성일 내림차순)

sql
 
SELECT * FROM users ORDER BY age ASC, created DESC;

🔹 설명:

  1. 먼저 age를 오름차순(ASC) 정렬
  2. 나이가 같은 경우 created를 내림차순(DESC) 정렬

📌 5. 조건을 적용한 데이터 조회 (WHERE)

🔹 개념

  • WHERE 절을 사용하면 특정 조건을 만족하는 데이터만 검색할 수 있습니다.

특정 값과 일치하는 데이터 조회

sql
 
SELECT * FROM users WHERE age = 30;

🔹 설명: age 값이 30인 사용자만 조회됩니다.

특정 값 이상/이하 데이터 조회

sql
 
SELECT * FROM users WHERE age >= 30;

🔹 설명: 나이가 30 이상인 사용자만 조회됩니다.

AND, OR 연산을 활용한 복합 조건 조회

sql
 
SELECT * FROM users WHERE age = 33 AND name = 'Leo';
SELECT * FROM users WHERE age = 33 OR name = 'Leo';
 

🔹 설명:

  • AND는 모든 조건을 만족하는 데이터만 조회
  • OR는 하나라도 조건을 만족하면 조회

NOT을 사용한 부정 조건 조회

sql
 
SELECT * FROM users WHERE NOT age = 33;

🔹 설명: age가 33이 아닌 데이터만 조회됩니다.

특정 범위 데이터를 조회 (BETWEEN 사용)

sql
 
SELECT * FROM users WHERE age BETWEEN 20 AND 25;

🔹 설명: age 값이 20 이상 25 이하인 데이터만 조회됩니다.


📌 6. 조회 개수 제한 (LIMIT)

🔹 개념

  • LIMIT을 사용하면 결과 개수를 제한할 수 있습니다.

상위 5개의 데이터만 조회

sql
 
SELECT * FROM users LIMIT 5;

🔹 설명: 최대 5개의 데이터만 반환됩니다.

페이징 처리 (10번째부터 5개 조회)

sql
 
SELECT * FROM users LIMIT 10, 5;

🔹 설명:

  • 10번째 데이터부터 5개만 조회
  • 페이징(Pagination) 구현에 활용

📌 7. 데이터 그룹화 (GROUP BY)

🔹 개념

  • 동일한 값들을 그룹으로 묶어 집계 함수(COUNT, SUM 등)와 함께 사용

나이별 사용자 수 조회

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

🔹 설명: 나이가 같은 사용자끼리 그룹화하여 연령별 사용자 수를 조회합니다.


📌 8. 조건에 따라 다른 값 표시 (CASE WHEN)

🔹 개념

  • CASE WHEN을 사용하면 조건에 따라 특정 값을 반환할 수 있습니다.

나이가 30 이상이면 '성인', 미만이면 '미성년자'로 변환

sql
 
SELECT
  name,
  age,
  CASE WHEN age >= 30 THEN '성인' ELSE '미성년자' END AS age_group
FROM users;

🔹 설명:

  • 나이가 30 이상이면 '성인', 그렇지 않으면 **'미성년자'**로 표시됩니다.

📌 9. 여러 테이블의 데이터 결합 (JOIN)

🔹 개념

  • JOIN을 사용하면 여러 테이블의 데이터를 결합하여 조회할 수 있습니다.

users 테이블과 orders 테이블을 user_id 기준으로 조인

sql
 
SELECT users.name, users.age, orders.order_id
FROM users
JOIN orders ON users.user_id = orders.user_id;

🔹 설명:

  • users와 orders 테이블을 user_id 기준으로 연결하여 조회

📌 10. 데이터에 순위 부여 (ROW_NUMBER)

🔹 개념

  • ROW_NUMBER()를 사용하면 특정 정렬 기준에 따라 순위를 매길 수 있음

나이를 기준으로 순위 부여

sql
 
SELECT
  name,
  age,
  ROW_NUMBER() OVER (ORDER BY age DESC) AS rank
FROM users;

🔹 설명:

  • 나이가 가장 많은 사람부터 순위를 매겨서 조회