책/혼자 공부하는 SQL
MySQL - SELECT
L.Joey
2023. 8. 2. 16:58
<참고> 혼공SQL
핵심적인 SQL 문
SELECT ~ FROM ~ WHERE
WHERE 절 뒤에 추가 가능한 절
결과의 정렬 : ORDER BY
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date DESC; -- Desending 내림차순
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date ASC; -- (기본설정)Asecnding 오름차순
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;-- 1순위 키가 큰 순, 2순위 날짜가 빠른순
출력의 개수를 제한 : LIMIT
LIMT 시작, 개수 -> 0 을 첫 데이터라고 설정함.
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date
LIMIT 3; -- == LIMIT 0, 3
# 데뷔 날짜가 빠른 순으로 정렬하고, "4번째" 데이터 부터 2개만 조회
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date
LIMIT 3, 2;
중복된 결과를 제거 : DISTINCT
SELECT DISTINCT addr FROM member;
결과를 그룹으로 묶어줌 : GROUP BY
집계함수 와 함께 - SUM, AVG, MIN, MAX, COUNT
# SUM()
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;
-- 별칭(alias) 사용 : "..."
SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수"
FROM buy GROUP BY mem_id;
SELECT mem_id "회원 아이디", SUM(amount*price) "총 구매 금액"
FROM buy GROUP BY mem_id;
# AVG()
SELECT AVG(amount) "평균 구매 개수" FROM buy; -- 회원이 한번 구매할 때 평균 개수
SELECT mem_id "회원 아이디", AVG(amount) "평균 구매 개수" FROM buy; -- 각 회원 마다 한번 구매할 때
# COUNT()
SELECT COUNT(*) FROM member; -- 모든 회원 카운트
SELECT COUNT(phone1) FROM member; -- phone1 에 값이 있는 회원 카운트
HAVING 와 함께 - 집계함수를 이용하여 조건을 만들때 사용, 항상 GROUP BY 뒤에 사용
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
FROM buy
#WHERE SUM(price*amount) > 1000 -- 에러: 집계함수 사용불가
GROUP BY mem_id
HAVING SUM(price*amount) > 1000 -- 집계함수를 이용해서 조건을 만들때 사용
ORDER by (price*amount) DESC; -- 구매액이 큰사람 부터
SELECT 문에 사용되는 절의 순서
SELECT 열이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열이름
HAVING 집계함수이용한 조건식
ORDER BY 열이름
LIMIT 숫자