본문 바로가기

자격증/SQLD

SQLD 2과목 1-8장. ORDER BY절

[ 목차 ]

1. ORDER BY 절이란?

2. ORDER BY 절의 특징

3. SELECT 문장 실행 순서

4. FROM, ORDER BY, GROUP BY, SELECT 복합 특징

5. ROWNUM

6. TOP( )

 

1. ORDER BY 절이란?

1) SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬하여 출력하는데 사용

2) 칼럼명 대신 SELECT 절에서 사용한 ALIAS명이나 카럼 순서를 나타내는 정수도 사용 가능

3) 별도로 정렬 방식을 지정하지 않으면 기본적으로 오름차순이 적용되며, SQL 문장의 제일 마지막에 위치

 

2. ORDER BY 절의 특징

1) 기본적으로 오름차순

2) 숫자형 데이터 타입은 오름차순으로 정렬했을 경우에 가장 작은 값부터 출력

3) 날짜형 데이터 타입은 오름차순으로 정려랬을 경우 날짜 값이 가장 빠른 값이 먼저 출력

4) 오라클에서 NULL값을 가장 큰 값으로 간주하여 오름차순으로 정렬했을 때 가장 마지막에 위치

5) SQL에서 NULL값을 가장 작은 값으로 간주하여 오름차순으로 정렬했을 때 가장 앞에 위치

6) 칼럼명, ALIAS명 대신 SELECT 절의 칼럼 순서를 정수로 매핑하여 사용 가능, 이는 SELECT 절의 칼럼명이 길거나 정

    렬 조건이 많을 경우 편리하게 사용할 수 있으나 향후 유지보수성, 가독성의 문제로 칼러명 ALIAS명을 권고

 

3. SELECT 문장 실행 순서

1) GROUP BY절과 ORDER BY과 같이 사용될 때 SELECT 문장은 6개의 절로 구성되고 아래와 같은 수행 단계를 가짐

2) FROM 테이블명 - WHERE 조건식 - GROUP BY 칼럼or표현식 - HAVING 그룹조건식 - SELECT 칼럼명 [ALIAS명] -

    ORDER BY 칼럼or표현식

3) FROM : 발췌 대상 테이블을 참조

4) WHERE : 발췌 대상 데이터가 아닌 것은 제거

5) GROUP BY : 행들을 소그룹화

6) HAVING :그룹핑된 값의 조건에 맞는 것만을 출력

7) SELECT : 데이터 값을 출력/계산

8) ORDER BY : 데이터를 정렬

 

4. FROM, ORDER BY, GROUP BY, SELECT 복합 특징

1) 3은 옵티마이저가 SQL 문장의 SYNTAX, SEMANTIC 에러를 점검하는 순서

2) FROM절에 정의되지 않은 테이블의 칼럼을 WHERE, GROUP, HAVING, SELECT, ORDER BY절에서 사용하면 에러 발생

3) 그러나 ORDER BY절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있음

4) 단, SELECT DISTINCT를 지정하거나 SQL문자에 GROUP BY절 이있거나 SELECT문제 UNION 연산자가 있으면 열 정의

    가 SELECT 목록에 표시되어야 함

5) 관계형 DB가 데이터를 메모리에 올릴 때 행 단위로 모든 칼럼을 가져오므로 SELECT 절에서 일부 칼럼만 선택하더라

    도 ORDER BY 절에서 메모리에 올라와 있는 다른 칼럼의 데이터를 사용할 수 있음

6) 서브쿼리의 SELECT 절에서 선택되지 않은 칼럼들은 계속 유지되는 것이 아닌, 서브쿼리를 벗어나면 사용 불가

7) GROUP BY절에서 그룹핑 기준을 정의하게 되면 데이터베이스는 일반적인 SELECT 문장처럼 FROM 절에 정의된 테이

    블의 구조를 그대로 가지고 가는 것이 아닌 GROUP BY절의 그룹핑 기준에 사용된 칼럼과 집계 함수에 사용될 수 있

    는 숫자형 데이터 칼럼의 집합을 새로 생성

8) GROUP BY절을 사용하게 되면 그룹핑 기준에사용된 칼럼과 집계 함수에 사용될 수 있는 숫자형 데이터 칼럼들의 집합을 새로 만드는데, 개별 데이터는 필요 없기에 저장하지 않음

9) GROUP BY 이후 수행 절인 SELECT 절이나 ORDER BY 절ㅇ에서 개별 데이터를 사용하는 경우 에러 바생

10) SELECT 절에서는 그룹핑 기준과 숫자 형식 카럼의 집계 함수를 사용할 수 있지만 그룹핑 기준 외의 문자 형식 칼럼

    은 정할 수 없음

 

5. ROWNUM

1) 오라클은 정렬이 완료된 후 데이터의 일부가 출력되는 것이 아닌 데이터가 먼저 추출된 후 데이터에 대한 정렬 작업

    이 발생

2) 때문에 오라클에서 순위가 높은 N개의 로우를 추출하기 위해 ORDER BY절과 WHERE절의 ROWNUM 조건을 같이 사

    용하는 경우 원하는 결과를 얻을 수 없음

3) ORDER BY절이 없다면 SQL의 TOP절과 같은 결과가 나타나겠지만 사용될 경우 ROWNUM 조건을 ORDER BY 절보다

    먼저 처리되는 WHERE 절에서 처리

 

6. TOP( )

1) 별도 처리 없이 ORDER BY 절의 데이터 정렬 후 원하는 일부 데이터만 출력 가능

2) TOP (Expression) [PERCENT] [WITH TIES]

3) 결과 집합으로 반환되는 행의 수를 제한할 수 있음

4) WITH TIES : ORDER BY절의 조건 기준으로 TOP N의 마지막 행으로 표시되는 추가 행의 데이터가 같을 경우 N+ 동일

                      정렬 순서 데이터를 추가 반환하도록 지정하는 옵션

'자격증 > SQLD' 카테고리의 다른 글

SQLD 2과목 2-2장. 집합연산자  (0) 2020.03.12
SQLD 2과목 1-9장. 조인  (0) 2020.03.12
SQLD 2과목 1-7장. GROUP BY, HAVING절  (0) 2020.03.12
SQLD 2과목 1-5장. WHERE절  (0) 2020.03.12
SQLD 2과목 1-4장. TCL  (0) 2020.03.12