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;
🔹 설명:
- 먼저 age를 오름차순(ASC) 정렬
- 나이가 같은 경우 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;
🔹 설명:
- 나이가 가장 많은 사람부터 순위를 매겨서 조회