ORDER BY
SQL은 쿼리의 문법 작성 순서가 정해져 있다.
- SELECT: 가져올 컬럼을 지정
- FROM: 데이터를 가져올 테이블을 지정
- WHERE: 데이터를 필터링할 조건 지정
- GROUP BY: 데이터를 그룹화
- HAVING: 그룹화된 데이터에 대한 조건 지정
- ORDER BY: 데이터를 정렬
+ LIMIT: 반환할 데이터의 양을 제한
※ 만일 ORDER BY가 GROUP BY나 WHERE보다 앞에 위치하면 에러가 나니 꼭 순서를 지키도록 한다.
※ ORDER BY를 사용하지 않을 경우, 데이터의 출력 순서는 보장되지 않는다.
※ SQL 쿼리의 작성순서와 실제 쿼리의 처리 순서는 다르다는 것을 기억하자.
1) 오름차순 정렬(ASC - Ascending)
• (작은 값 → 큰 값)
• 오름차순 정렬인 ASC은 기본값이라 생략이 가능하다.
• 값이 문자열일 경우, 알파벳 순서 /사전 순서로 정렬된다.
※ 참고로 MySQL에서 NULL 값은 숫자형과 문자열형 데이터에서 가장 작은 값으로 간주된다.
2) 내림차순 정렬(DESC - Descending)
• (큰 값 → 작은 값)
3) 여러 컬럼을 기준으로 정렬
• 위와 같이 여러 열을 기준으로도 정렬이 가능한데,
• 출력된 데이터를 보면, singer순으로는 정렬이 제대로 되어있지만, like_number의 경우 제대로 정렬이 되어있지 않는 모습을 확인할 수 있다.
➯ 하나의 행은 세트로 같이 움직이니 두 조건을 모두 완벽하게 만족하면서 정렬하는 것은 불가능하다.
➯ 그렇다면 왜 굳이 여러 열을 기준으로 데이터를 출력하는 걸까?
• 첫 번째 정렬의 기준이 된 컬럼을 기준으로 동일한 값을 가지는 행들의 경우 두 번째 컬럼을 기준으로 정렬이 되는데, 이를 통해 세부적인 정렬이 가능하기 때문이다.
• 단일 컬럼으로는 데이터를 충분히 세밀하게 정렬을 할 수가 없다.
➯ 가수에 따라 좋아요 수를 기준으로 정렬하고 싶다던가, 학년에 따라 이름을 정렬하고 싶다던가 등 세밀한 정렬은 여러 열을 기준으로 정렬해야 가능하다.
※ 정렬의 기준이 되는 첫 번째 컬럼이 복수값이 나올 수 없는 열이라면, 여러 열을 기준으로 정렬하는 것은 보통 의미가 없거나 불필요하다.
➯ 즉, 반복값이 나올 수 없는 데이터는 굳이 2차 정렬을 할 필요가 없다는 얘기다
4) LIMIT
• LIMIT을 사용해 출력되는 데이터의 양을 조절할 수 있다.
📝 페이징(Paging)
SELECT * FROM 테이블명
LIMIT offset, row_count;
- 페이징은 많은 데이터를 나눠서 볼 수 있도록 한 번에 일부 데이터만 가져오는 방식을 말한다.
- 페이징은 LIMIT과 OFFSET을 조합하여 구현할 수 있다.
- OFFSET: 건너뛸 행의 수 / ROW_COUNT: 반환할 행의 수
- 정렬 없이 LIMIT을 사용할 경우 매번 결과의 순서가 달라지니 페이징을 할 때는 ORDER BY와 함께 사용한다.
• 이 경우, 정렬이 완료된 결과에서 5번째 행부터 3개의 데이터를 반환하라는 뜻이다.
'데이터 분석 > MySQL' 카테고리의 다른 글
MySQL 총 정리7: GROUP BY와 HAVING (2) | 2024.10.05 |
---|---|
MySQL 총 정리6: mysql 내장함수 모음 (4) | 2024.10.03 |
MySQL 총 정리4: 다양한 연산자로 필터링된 데이터 조회 (0) | 2024.09.30 |
MySQL 총 정리3: SELECT으로 데이터 조회 (0) | 2024.09.28 |
MySQL 총 정리2: 데이터 추가ㆍ변경ㆍ삭제 (1) | 2024.09.27 |