IT/DBMS
[MySQL] SELECT문 복습!!
j8970
2025. 4. 15. 09:16
SELECT 문 정리
📌 SELECT 문이란?
✅ 데이터베이스에서 원하는 데이터를 조회할 때 사용하는 SQL 문
✅ "무엇을 선택할 것인지"를 결정하는 것이 핵심
🔷 SELECT 문 기본 구조
- SELECT: 조회할 컬럼(열)을 지정
- FROM: 데이터를 조회할 테이블을 지정
- WHERE: 조건에 맞는 데이터 필터링
- GROUP BY: 특정 컬럼 기준으로 그룹화
- HAVING: 그룹화된 데이터에 조건 적용
- ORDER BY: 결과 정렬 (기본은 오름차순)
- LIMIT: 출력할 행의 수 제한
SELECT 컬럼명 FROM 테이블명
WHERE 조건절 GROUP BY 컬럼명
HAVING 조건 ORDER BY 컬럼명
LIMIT 숫자
🔷 실행 순서
FROM > JOIN > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT
🔷 SELECT 문 활용 예시
기본 조회 및 별칭 사용
-- 단일 컬럼 조회
SELECT name FROM korea_db.members;
-- 전체 컬럼 조회
SELECT * FROM korea_db.members;
-- 여러 컬럼 조회
SELECT member_id, name, contact FROM members;
-- 별칭 사용
SELECT member_id AS 고유번호, name '회원 이름', contact AS '회원 연락처' FROM members;
🔷 WHERE 조건절
조건에 맞는 데이터 조회
- 관계 연산자: =, !=, >, <, >=, <=
- 논리 연산자: AND, OR, NOT
- NULL 여부 확인: IS NULL, IS NOT NULL
- 범위 검색: BETWEEN A AND B
- 목록 검색: IN (...)
- 패턴 검색: LIKE '_', '%'
-- 포인트가 200 초과
SELECT member_id, name, points FROM members WHERE points > 200;
-- 이름이 'Minji'
SELECT * FROM members WHERE name = 'Minji';
-- 지역 코드가 'Jeju'이고 포인트가 400 초과
SELECT * FROM members WHERE area_code = 'Jeju' AND points > 400;
-- 포인트가 NULL인 회원
SELECT * FROM members WHERE points IS NULL;
-- 이름에 'un'이 포함된 경우
SELECT * FROM members WHERE name LIKE '%un%';
-- 이름이 네 글자인 경우
SELECT * FROM members WHERE name LIKE '____';
🔷 날짜/시간 조건
-- 특정 날짜 일치
SELECT * FROM members WHERE join_date = '2022-01-02';
-- 특정 날짜 사이
SELECT * FROM members WHERE join_date BETWEEN '2023-06-01' AND '2025-01-01';
-- 현재 날짜 이전 가입자
SELECT * FROM members WHERE join_date < CURDATE();
-- 연도가 2022인 회원
SELECT * FROM members WHERE YEAR(join_date) = '2022';
🔷 서브쿼리 (Subquery)
메인 쿼리 내부에서 사용되는 하위 쿼리로, 다양한 절에서 활용 가능
🔷 ORDER BY
정렬 기준을 지정 (기본: 오름차순 ASC)
SELECT * FROM members ORDER BY points DESC;
🔷 LIMIT
출력할 행의 수 제한
-- 상위 5개만 출력
SELECT * FROM members LIMIT 5;
-- 6번째부터 5개 출력
SELECT * FROM members LIMIT 5 OFFSET 5;
🔷 DISTINCT
중복 제거 후 조회
SELECT DISTINCT area_code FROM members;
🔷 GROUP BY & HAVING
데이터를 그룹화하고 조건 지정
-- 지역별 회원 수
SELECT area_code, COUNT(*) FROM members GROUP BY area_code;
-- 포인트 평균이 300 이상인 지역
SELECT area_code, AVG(points) FROM members GROUP BY area_code HAVING AVG(points) >= 300;
💡 요약
키워드 | 설명 |
---|---|
SELECT | 조회할 열 지정 |
FROM | 테이블 지정 |
WHERE | 조건 지정 |
GROUP BY | 그룹화 기준 지정 |
HAVING | 그룹 조건 지정 |
ORDER BY | 정렬 기준 지정 |
LIMIT | 출력 행 수 제한 |
DISTINCT | 중복 제거 |
LIKE / IN / BETWEEN | 조건 검색 |
IS NULL | NULL 여부 판단 |
SUBQUERY | 하위 쿼리 사용 |
🚀 select 정리!!