데이터베이스

데이터베이스 정리 7 - 데이터 정렬

열곰탱 2021. 8. 21. 21:34

SQL에서 정렬 :  ROW들을 특정 칼럼 기준을 기준으로 순서대로 출력하는 것

 

ORDER : '순서'라는 뜻     BY : '~에 의해' 라는 뜻 

BY뒤에 정렬 기준을 적어 주면 된다. 위 구문은 height 칼럼이 정렬 기준이 되었다.

키가 작은 회원부터 더 큰 회원순서대로 로우들이 출력되었다.

(정렬할 때 NULL은 보통 가장 작은 값으로 취급된다.)

 

 

 

ASC(ASCENDING) : 오름차순 

DESC(DESCENDING) : 내림차순

보통 별다른 표기를 안 하면 오름차순으로 정렬이 된다. 

 

 

예시)  성별이 M이고 몸무게가 70 넘는 회원들을 height 기준으로 오름차순 정렬

 

예시)  섭팡에 가입한 연도를 기준으로 가장 최근에 가입한 사람부터 내림차순으로 정렬하고, 같은 연도에 가입한 사람들은 다시 이메일 주소를 기준으로 오름차순으로 정렬(sign_up_day, email 만 나타나도록)

 

오류 발생

SQL 문법상 WHERE는 ORDER BY 앞에 나와야 한다.

 

순서 중요

FROM - WHERE - ORDER BY - LIMIT 순으로 써야한다.

 

 

주의할 점

정렬 기준의 데이터 타입이 숫자형(INT 등)인 경우와 문자열형(TEXT 등)인지에 따라 정렬 결과가 달라진다.

 

int 인 경우)

크기가 작은 수부터 큰 순으로 정렬되었다.

 

 

data칼럼의 타입을 TEXT로 바꾸었다.

 

TEXT인 경우)

결과가 바뀌었다.

INT 타입의 값은 숫자의 대소(크고 작음)를 기준으로 정렬이 수행되지만,

TEXT 타입의 값은 숫자의 대소가 아니라 한 문자, 한 문자씩 그 문자 순서를 비교해서 정렬이 수행됩니다. 

 

예를 들어 '200'이 '24'보다 먼저 나온 이유는 일단 맨 앞의 2를 비교했을 때는 같았지만, 그 바로 뒷자리는 문자가 0이 문자 4보다 문자 순서상 더 앞에 있기 때문에 200이 먼저 나왔다.

 

이것을 해결하기 위한 함수가 CAST이다

 

CAST : 보통 프로그래밍 세계에서 어떤 변수의 데이터 타입을 바꿀 때 사용되는 단어이다.

-CAST 함수는 특정 데이터 타입의 컬럼에 저장된 값을, 일시적으로 다른 데이터 타입으로 변경 할 수 있게 해주는 함수이다. signed는 양과 음의 정수를 나타내는 데이터 타입이다.