SELECT 절의 형식은 다음과 같으며 순서가 바뀌면 안된다.
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
이 중 아직 다루지 않은 GROUP BY, HAVING, ORDER BY, LIMIT에 대해 알아보겠다.
ORDER BY 절은 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절한다.
아래의 예제는 ORDER BY 문을 이용하여 결과를 원하는 열에 따라 정렬 출력하는 예제이다.
USE market_db;
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date;
ORDER BY의 기본 정렬 기준은 오름차순이며, 내림차순 정렬을 하기 위해서는 DESC 문을 추가해주어야 한다.
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date DESC;
WHERE 문을 추가할 경우 순서에 맞게 ORDER BY 보다 먼저 작성해주어야 한다.
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC;
만약 동일한 값이 있다면 정렬 기준을 추가하여 순서를 바꿀 수도 있다.
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;
LIMIT 문을 사용하면 테이블에서 원하는 갯수의 행만 출력할 수 있다.
SELECT * FROM member LIMIT 3;
ORDER BY 문과 함께 쓸 경우 다음과 같이 사용할 수 있다.
SELECT mem_name, debut_date
FROM member
ORDER BY debut_date
LIMIT 3;
LIMIT 문에 다음과 같이 조건을 추가할 경우 의미가 달라지게 된다.
아래의 구문은 3번째 인덱스부터 차례대로 2개를 뽑는다는 의미이다.
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 3, 2;
DISTINCT 문을 이용하면 중복되는 값을 제거해주고 종류 별로 한 개씩만 출력할 수 있다.
자주 사용되는 구문 중 하나로써 참고로 기억해 두는 것이 좋다.
SELECT DISTINCT addr FROM member;
GROUP BY 절은 말 그대로 그룹으로 묶어주는 역할을 한다.
GROUP BY 절과 함께 주로 함께 사용되는 함수로 집계 함수가 있으며 데이터를 그룹화 해주는 기능을 수행한다.
집계 함수의 종류에는 크게 SUM, AVG, MIN, MAX, COUNT가 있다.
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;
별칭을 지정하여 데이터 가독성을 높일 수 있다.
SELECT mem_id "회원 아이디", SUM(price * amount) "총 구매 금액" FROM buy GROUP BY mem_id;
SELECT mem_id, AVG(amount) "평균 구매 개수" FROM buy GROUP BY mem_id;
COUNT 문을 이용하여 NULL 값을 제외한 행의 개수 출력
SELECT COUNT(phone1) "연락처가 있는 회원" FROM member;
HAVING 문은 GROUP BY 절에 조건을 추가할 때 사용한다.
SELECT mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price * amount) > 1000;
SELECT mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price * amount) > 1000
ORDER BY SUM(price * amount) DESC;
'📟 Database > 혼자 공부하는 SQL' 카테고리의 다른 글
[MySQL] 6. MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형)과 형 변환 (0) | 2022.04.06 |
---|---|
[MySQL] 5. 데이터 변경을 위한 SQL 문(INSERT, UPDATE, DELETE) (0) | 2022.04.06 |
[MySQL] 3. SQL 기본 문법(SELECT ~ FROM ~ WHERE) (0) | 2022.04.05 |
[MySQL] 2. 데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저) (0) | 2022.04.04 |
[MySQL] 1. 데이터베이스 만들기 (0) | 2022.04.04 |