DB/SQL - Oracle

[SQL] DML(데이터 조작어) - select *order by* 정렬 + ASCII(아스키코드) + UNICODE(유니코드)

생각많은 프로그래머 2024. 2. 16. 14:41

 

SQL 종류
1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 
2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete
3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke

 

ORDER BY : 오름차순 정렬, 내림차순 정렬, 다중정렬

 

오름차순 : ASC (Ascending) - (숫자) 작은 수부터, (문자) 앞 순서부터

내림차순 : DESC (Descending) - (숫자) 큰 수부터, (문자) 뒷 순서부터

 

정렬에 대한 내용은 비교적 간단해서 예시를 통해 바로 설명해보겠다.

먼저 참고할 사항은 오라클에서는 별도로 정렬에 대해 ORDER BY 로

지정하지 않았다면 기본값으로 오름차순(ASC) 정렬을 기준으로 데이터가 조회된다.

따라서 내림차순이 필요한 경우가 아니라면

사실은 ORDER BY절을 따로 작성하지 않아도 된다.

 

정렬은 숫자뿐 아니라 문자열에 대해서도 가능하다. 

기본적으로 SQL에서는 알파벳과 특수문자와 같은 문자열을 

ASCII (아스키코드) 값에 따라 정렬한다.

반면 한글은 각 자모음이 해당하는 유니코드(Unicode)에 따라 정렬된다.

 

알파벳은 ASCII 값에 따라 정렬되며, 대문자는 소문자보다 작은 값으로 취급된다.

다만 이러한 기본 정렬 규칙은 다양한 언어 및 국가에 따라 다를 수 있다.

따라서 필요에 따라 데이터베이스 시스템의 설정을 조정하여

정렬 규칙을 변경해야 할 수도 있다.

 

ASCII (아스키코드) 란?

더보기

ASCII는 "American Standard Code for Information Interchange"의 약자로,

정보 교환을 위한 미국 표준 코드를 말한다.

ASCII는 컴퓨터에서 텍스트를 표현하는 데 사용되는 문자 인코딩 방식 중 하나로,

각 문자에 대해 7비트의 이진 숫자를 할당하여 문자를 표현한다.

이를 통해 알파벳, 숫자, 특수 문자 등을 컴퓨터에서 표현할 수 있다.

예를 들어, 대문자 'A'는 ASCII 코드로 65에 해당하고,

소문자 'a'는 ASCII 코드로 97에 해당한다.

Unicode(유니코드) 란?

더보기

유니코드(Unicode)는 전 세계의 모든 문자를 일관되게

표현하기 위한 국제 표준을 말한다.

이전에는 각 언어마다 별도의 문자 인코딩이 있었는데,

서로 호환되지 않거나 제한된 문자 집합을 가질 수 있어서

호환의 문제가 있었다. 유니코드는 이러한 문제를 해결하기 위해

모든 언어의 문자를 통합하고 각 문자에 고유한 코드 포인트를

할당하기 위해 사용되고 있다. 

 

예를 들어, 영어, 한국어, 중국어, 아랍어 등

모든 언어의 문자와 기호를 포함하는 표준화된 문자 집합을 제공한다.

각 문자에는 고유한 코드 포인트가 할당되며, 코드 포인트는 16진수로 표현된다.

예를 들어, 라틴 문자 A는 U+0041로 표현되고, 한글 자음 'ㄱ'은 U+3131로 표현된다.

유니코드 변환기 링크 : https://www.learnkoreantools.com/kr/korean-to-unicode

 

 

1. 나이를 기준으로 오름차순 정렬 / 내림차순 정렬

 

2. 이름을 기준으로 오름차순 정렬 / 내림차순 정렬

 

만약 데이터상으로 같은 값이 있는 경우에는

정렬 기준을 더 추가할 수 있을까? 

 

물론 가능하다. 

 

이때 다중 정렬을 사용한다.

 

다중 정렬의 경우는 

여러 가지 기준에 의해 정렬에 대한 규칙을

지정하는 것인데, 우선이 되는 규칙 순으로

ORDER BY절에 작성하면 된다. 

ORDER BY절에서 맨 앞에 있는 컬럼의 기준으로 정렬을 하고,

만약 해당 조건에서 같은 값인 경우에는

바로 이어서 오는 조건에 의해 정렬하도록 지정하는 것이다.

여러 개면 계속해서 이 규칙으로 정렬이 될 것이다.

 

 

3. 도시를 기준으로 오름차순 정렬하고,

도시가 같은 경우 나이를 내림차순으로 정렬

 

위와 같이 정렬하려는 내용을 기준으로

출력되는 컬럼의 순서를 조정하면

정렬된 내용을 좀 더 편하게 확인할 수도 있다.

(꼭 그래야 하는 것은 아니다!)

SELECT 다음에 기계적으로 *을 쓰지 않고

상황에 따라 출력할 수도 있다는 말을 하고 싶었다.

 

 

+ ASCII  아스키 코드 표 보기

 

+ Unicod  유니코드 (한글) 표 보기 - 자음과 모음

(실제로는 가 - 나 - 다 와 같이 모든 음절마다도 코드가 별도로 있으므로 훨씬 더 많음)