[MySQL] SELECT문
🚀 기본 조회하기: SELECT ~ FROM
💡 SELECT문 기본 형식
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자 [OFFSET 숫자]
💡 [WHERE] BETWEEN ~ AND
SELECT mem_name, height
FROM member
WHERE height >= 163 AND height <= 165;
SELECT mem_name, height
FROM member
WHERE height BETWEEN 163 AND 165;
💡 [WHERE] IN()
SELECT mem_name, addr
FROM member
WHERE addr = '경기' OR addr = '전남' OR addr = '경남';
SELECT mem_name, addr
FROM member
WHERE addr IN ('경기', '전남', '경남');
💡 [WHERE] LIKE
-
문자열의 일부 글자 검색시 LIKE 사용
-
무엇이든 허용(%)
SELECT *
FROM member
WHERE mem_name LIKE '우%';
- 한 글자와 매치하기 위해 언더바(_) 사용
SELECT *
FROM member
WHERE mem_name LIKE '__핑크';
🚀 ORDER BY 절
- 결과 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절
- 기본값(DEFAULE)은 ASC(Ascending, 오름차순), DESC(Descending, 내림차순)
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC; -- 정렬 우선순위 설정 가능
💡 LIMIT
- 출력 개수 제한
- LIMIT 은 첫 데이터를 0번으로 설정하고 시작
LIMIT 형식
LIMIT 시작, 개수
LIMIT 개수 OFFSET 시작 -- 위와 동일한 결과
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 3, 2; -- 3번째부터 2건만 조회
💡 DISTINCT
- 중복된 결과 제거하고 결과값을 1개만 남김
SELECT DISTINCT addr
FROM member;
🚀 GROUP BY 절
💡 집계함수(Aggregate Function)
- 주로 GROUP BY 절과 함께 쓰이며 데이터를 그룹화(grouping) 해주는 기능
함수명 | 설명 |
---|---|
SUM() | 합계를 구합니다. |
AVG() | 평균을 구합니다. |
MIN() | 최소값을 구합니다. |
MAX() | 최대값을 구합니다. |
COUNT() | 행의 개수를 셉니다. |
COUNT(DISTINCT) | 행의 개수를 셉니다(중복은 1개만 인정). |
1️⃣ 회원별 총 구매 개수
SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수"
FROM buy
GROUP BY mem_id;
2️⃣ 회원이 구매한 금액의 총합
SELECT mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
FROM buy
GROUP BY mem_id;
3️⃣ 각 회원의 평균 구매 개수
SELECT mem_id, AVG(amount) "평균 구매 개수"
FROM buy
GROUP BY mem_id;
4️⃣ 연락처가 “있는” 회원의 수만 카운트
SELECT COUNT(phone1) "연락처가 있는 회원"
FROM member;
💡 Having 절
- WHERE와 비슷한 개념으로 조건을 제한하는 것이지만, 집계함수에 대해 조건을 제한하는 것
- 반드시 GROUP BY 절 다음에 나와야 함
- 회원별 총 구매액이 1000보다 큰 회원만 추출
SELECT mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price * amount) > 1000;
Leave a comment