반응형
MySQL에서 가장 많이 쓰는 SQL 명령어는 단연 SELECT이다.
데이터베이스에 저장된 정보를 꺼내는 기본 구문이자,
모든 SQL 학습의 출발점이기도 하다.

📌 SELECT 기본 구문 구조
SELECT [컬럼명1, 컬럼명2, ...] FROM [테이블명];
예를 들어, users 테이블에서 모든 데이터를 조회하려면 다음과 같이 작성한다.
SELECT * FROM users;
- *는 모든 컬럼을 조회하겠다는 의미이다.
- 실제 서비스에서는 조회 속도나 보안 이슈로 인해 특정 컬럼만 조회하는 것이 권장된다.
반응형
🧱 특정 컬럼만 조회하기
SELECT name, age FROM users;
이 쿼리는 users 테이블에서 name, age 컬럼만 추출한다.
테이블 구조가 복잡하거나 불필요한 데이터까지 가져오는 것을 방지할 수 있어
성능 최적화 측면에서도 유리하다.
🔍 WHERE 조건절을 통한 필터링
WHERE 절을 사용하면 조건에 맞는 행만 추출할 수 있다.
SELECT * FROM users WHERE age > 30;
- 나이가 30세 초과인 사용자만 조회
- 조건에는 =, <, >, <=, >=, BETWEEN, LIKE, IN, IS NULL 등의 다양한 연산자가 사용된다
✅ 예제: 문자열 패턴 검색
SELECT * FROM users WHERE name LIKE '김%';
- 김으로 시작하는 이름을 가진 사용자만 조회
📊 ORDER BY 정렬
조회된 결과는 기본적으로 입력 순서대로 정렬되지 않는다.
정렬이 필요할 경우 ORDER BY 절을 사용한다.
SELECT * FROM users ORDER BY age DESC;
- 나이 기준으로 내림차순 정렬
- ASC는 오름차순(기본값), DESC는 내림차순
반응형
🎯 LIMIT을 통한 결과 수 제한
SELECT * FROM users LIMIT 10;
- 최대 10건까지만 조회
- 페이지네이션 구현에도 자주 사용됨
SELECT * FROM users LIMIT 10 OFFSET 20;
- 21번째 행부터 10개를 조회 (즉, 3페이지)
🧠 실전 예제 – 조건, 정렬, 제한을 함께 사용하는 복합 쿼리
SELECT id, name, age
FROM users
WHERE age BETWEEN 20 AND 40
ORDER BY age ASC
LIMIT 5;
이 쿼리는 다음을 수행한다.
- 나이가 20~40세 사이인 사용자 중
- 나이 순으로 오름차순 정렬하고
- 최대 5명까지 조회
🧰 AS 별칭으로 컬럼명 또는 테이블명 간소화
SELECT name AS '이름', age AS '나이' FROM users;
- 조회 결과에서 컬럼 이름을 보기 쉽게 바꿔서 출력 가능
- 복잡한 쿼리에서는 테이블명에도 별칭을 주는 것이 일반적이다
반응형
📦 DISTINCT로 중복 제거
SELECT DISTINCT age FROM users;
- 중복된 나이를 제거하고, 고유한 값만 반환
✅ 정리하자면…
MySQL에서 SELECT 문은 가장 많이 사용되는 명령어이며,
다음과 같은 요소들이 함께 사용된다.
- SELECT: 가져올 컬럼 지정
- FROM: 대상 테이블 지정
- WHERE: 조건 필터링
- ORDER BY: 정렬
- LIMIT: 결과 수 제한
- DISTINCT: 중복 제거
- AS: 별칭 지정
이를 잘 조합하면 실무에서 매우 유용한 데이터 추출 쿼리를 구성할 수 있다.
📎 공식 문서 참고
MySQL SELECT 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/select.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] SELECT LIMIT / OFFSET (행의 개수 제한 / 페이징 처리) (0) | 2025.06.24 |
|---|---|
| [MySQL] SELECT GROUP BY + HAVING (그룹화와 조건 필터링) (0) | 2025.06.24 |
| [MySQL] SELECT ORDER BY 정렬 방법 완벽 정리 (0) | 2025.06.24 |
| [MySQL] SELECT WHERE 조건절 완벽 정리 (1) | 2025.06.24 |
| [MySQL] 대량 INSERT 성능 최적화 방법 완벽 정리 (1) | 2025.06.20 |
| [MySQL] REPLACE VS INSERT 차이점 완벽 정리 (0) | 2025.06.20 |
| [MySQL] INSERT + AUTO_INCREMENT 사용법 완벽 가이드 (0) | 2025.06.20 |
| [MySQL] INSERT + 트랜잭션(Transaction) 연동 완벽 가이드 (2) | 2025.06.20 |