본문 바로가기

Database/SQL

[코테를 위한 Oracle 정리] 2. 정렬 : ORDER BY

손에 잡히는 10분 SQL 3장 참고

 

정렬하지 않는다면 데이터가 테이블에 삽입되거나 업데이트 되는 순서대로 출력된다.
SQL에서는 ORDER BY 절을 통해 결과를 정렬한다.

SELECT PROD_NAME
FROM PRODUCTS
ORDER BY PROD_NAME;
  • ORDER BY 는 SELECT 문의 가장 마지막에 와야 한다.
  • 위의 쿼리는 SELECT절에서 가져온 열로 정렬했지만 그렇지 않은 열로도 정렬할 수 있다.

여러 열 정렬

정렬 우선순위는 열을 적은 순서대로이다.

SELECT PROD_ID ,PROD_NAME, PROD_PRICE 
FROM PRODUCTS
ORDER BY PROD_NAME, PROD_PRICE;

SELECT PROD_ID ,PROD_NAME, PROD_PRICE 
FROM PRODUCTS
ORDER BY 2,3;
  • 위의 쿼리의 경우 PROD_NAME을 우선으로 그 다음 PROD_PRICE를 기준으로 정렬된다.
  • 2라는 SELECT 절의 2번 째 열이라는 뜻이다. 그래서 위 아래 두 쿼리의 결과는 같다.
  • 숫자와 열 이름을 혼용해도 된다.

정렬 순서 지정

SELECT PROD_ID ,PROD_NAME, PROD_PRICE 
FROM PRODUCTS
ORDER BY PROD_PRICE DESC, PROD_NAME;
  • 기본적으로 오름차순(ASC)으로 설정되어 있다.
    • 그래서 명시하지 않으면 오름차순으로 정렬된다.
  • 내림차순은 DESC로 명시해줘야 한다.

Oracle에서 대문자와 소문자의 우선순위

CREATE TABLE C
( 
  cust_id      char(10)  NOT NULL , 
  cust_name    char(50)  NOT NULL 
);

INSERT INTO C(cust_id, cust_name) 
VALUES('1000000001', 'Village Toys');
INSERT INTO C(cust_id, cust_name) 
VALUES('1000000001', 'village Toys');

select * from c
order by cust_name desc;

  • 이로써 소문자가 더 낮은 우선순위 임을 알 수 있었다.