일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 지연로딩
- dfs
- 다대일
- fetch
- 스토어드 프로시저
- 동적sql
- 낙관적락
- 즉시로딩
- 이진탐색
- FetchType
- SQL프로그래밍
- 연결리스트
- exclusive lock
- 일대다
- 비관적락
- JPQL
- 힙
- 데코레이터
- 다대다
- 백트래킹
- eager
- PS
- 유니크제약조건
- shared lock
- querydsl
- 스프링 폼
- CHECK OPTION
- execute
- 연관관계
- BOJ
- Today
- Total
흰 스타렉스에서 내가 내리지
SQL 문법 기초 2 - SELECT 관련 본문
SELECT 문에서는,
결과의 정렬을 위한 ORDER BY,
결과의 개수를 제한하는 LIMIT,
중복된 데이터를 제거하는 DISTINCT 등을 사용할 수 있다.
GROUP BY는 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출하고,
HAVING 절을 통해 조건식을 추가할 수 있다.
ORDER BY
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER 열_이름
LIMIT 숫자
ORDER BY 는 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절한다.
debut_date가 늦은 순서대로 정렬하려면, 제일 뒤에 DESC라고 붙여주면 된다.
기본값은 ASC이다.
정렬 기준은 1개 열이 아니라 여러 개 열로 지정할 수 있다.
우선 첫 번째 지정 열로 정렬한 후에 동일한 경우에는 다음 지정 열로 정렬할 수 있다.
LIMIT
LIMIT는 출력하는 개수를 제한한다.
전체 중 앞에서 3건만 조회한다.
이렇게 아무런 조건 없이 앞에서 3건만 뽑는 경우는 별로 없다.
먼저 정렬한 후 앞에서 몇 건을 추출하는 것이 대부분이다.
LIMIT의 형식은 LIMIT 시작, 개수 이다.
= 키가 큰 순으로 정렬하되, 3번째부터 2건만 조회하라.
DISTINCT
DISTINCT는 조회된 결과에서 중복된 데이터를 1개만 남긴다.
GROUP BY
GROUP BY 절은 말 그대로 그룹으로 묶어주는 역할을 한다.
* GROUP BY와 함께 주로 사용되는 집계함수(aggregate function)
SUM() : 합계
AVG() : 평균
MIN() : 최소값
MAX() : 최대값
COUNT() : 행의 개수
COUNT(DISTINCT) : 행의 개수 (중복 x)
사용 예시:
각 회원(mem_id) 별로 구매한 개수(amount)를 합쳐서 출력하기 위해서는 집계 함수인 SUM()과 GROUP BY 절을 사용한다.
즉, GROUP BY 로 회원 별로 묶어준 후에 SUM() 함수로 구매한 개수를 합치면 된다.
SUM()
SUM 함수 내에 저렇게 연산을 추가해도 된다.
AVG()
COUNT()
COUNT(*)는 모든 행의 개수를 세고,
COUNT(열_이름)은 열 이름의 값이 NULL인 것을 제외한 행의 개수를 셉니다.
HAVING()
WHERE 대신에 사용되는 것이 HAVING이다.
HAVING은 WHERE와 비슷한 개념으로 조건을 제한하는 것이지만, 집계 함수에 대해서 조건을 제한하는 것이라고 생각하면 된다.
HAVING은 꼭 GROUP BY 다음에 나와야 한다.
'SQL' 카테고리의 다른 글
SQL 고급 문법 - MySQL의 데이터 형식 (0) | 2022.07.30 |
---|---|
데이터 변경을 위한 SQL 문 (CRUD) (0) | 2022.07.29 |
SQL 문법 기초 - SELECT 관련 (0) | 2022.07.24 |
데이터베이스 개체 (0) | 2022.07.24 |
[MYSQL WorkBench] 데이터베이스 모델링 툴 (0) | 2022.07.24 |