▣ 기본 문법
SELECT select_expr}
[FROM table_references]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
[LIMIT {[offset,] row_count | row_count OFFSET offset}];
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
예시)
SELECT mem_name, addr
FROM member
WHERE addr IN('경기', '전남', '경남'); -- OR와 역할이 같다
SELECT *
FROM member
WHERE mem_name LIKE '우%'; -- 정규 표현식 *와 같다
SELECT *
FROM member
WHERE mem_name LIKE '__핑크'; -- 한글자 매칭은 '-' 한 개이다
예시2) 서브 쿼리
- SELECT 안에 SELECT를 둘 수 있다.
SELECT mem_name, height FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
▣ 정렬(ORDER BY) 사용법
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC; --기본은 오름 차순, DESC를 붙여주면 내림차순
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC; --만약 키가 동일하다면, 데뷔 일자가 빠른 순으로 정렬
▣ 갯수 제한(LIST)
- 'LIMIT 시작 갯수' : '시작' 위치 부터 '갯수' 만큼 출력
- 'LIMIT 3' 은 'LIMIT 0 3' 과 동일하다.
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 3, 2;
▣ 중복 제거(DISTINCT)
- (예시) member 테이블에서 addr를 중복 없이 출력한다.
SELECT DISTINCT addr FROM member
▣ 집계를 낼 때(GROUP BY)
- 동일 회원의 구매 갯수를 합쳐서 보고 싶을 때 GROUP BY를 이용할 수 있다
- (예시) 그룹별 총 구매 금액을 나타낸다
SELECT mem_id "회원 아이디", SUM(amount * price) "총 구매 금액"
FROM buy
GROUP BY mem_id;
- 사용 가능한 집게 함수
SUM() | 합계 |
AVG() | 평균 |
MIN() | 최소값 |
MAX() | 최대값 |
COUNT() | 행의 갯수 |
COUNT(DISTINCT) | 행의 갯수(중복은 1개만 인정) |
예시)
SELECT COUNT(phone1) "연락처가 있는 회원" FROM member;
▣ HAVING
- GROUP BY 절 다음에 나오고, (WHERE가 테이블에 대해 조건을 붙이는 것과 달리) HAVING은 집계 함수에 대해 조건을 붙일 수 있다
- (예시) 그룹별 총 금액 중 1000 이상 구매한 그룹 이름과 금액을 나타낸다.
SELECT mem_id "회원 아이디", SUM(amount * price) "총 구매 금액"
FROM buy
GROUP BY mem_id;
HAVING SUM(amount * price) >= 1000
ORDER BY SUM(amount * price) DESC;
출처)
- http://www.yes24.com/Product/Goods/104661489
반응형