<참고> 혼공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 숫자
'DataBase > MySQL' 카테고리의 다른 글
MySQL - 데이터베이스 다운로드 후 로드 (0) | 2023.08.03 |
---|---|
MySQL - 데이터 변경 (0) | 2023.08.03 |
MySQL - SELECT ~ FROM ~ WHERE (0) | 2023.08.02 |
MySQL - 데이터베이스, 테이블만들기, 데이터 입력하기 (0) | 2023.08.02 |
[MySQL] Procedures (0) | 2023.08.01 |