티스토리 뷰

자격증/SQLD

SQLD - SQL 기본 [ORDER BY 절]

나는연어다 2017. 8. 7. 16:20

1.   ORDER BY 정렬

-       ORDER BY 절에 칼럼(Column)명 대신 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다.

-       기본적인 정렬순서는 오름차순(ASC), SQL 문장의 제일 마지막에 위치한다.

-       SELECT 칼럼명 ALIAS
FROM
테이블명
WHERE
조건식
GROUP BY
칼럼(Column)이나 표현식
HAVING
그룹 조건식
ORDER BY
칼럼(Column)이나 표현식 [ASC 또는 DESC]

-       ASC(Ascending) : 조회한 데이터를 오름차순으로 정렬한다. (Default이므로 생략 가능)

-       DESC(Descending) : 조회한 데이터를 내림차순으로 정렬한다.

-       Oracle 에서는 NULL 값을 가장 큰 값으로 간주한다.
SQL Server
에서는 NULL 값을 가장 작은 값으로 간주한다.

 

2.   SELECT 문장 실행 순서

5. SELECT 칼럼명 ALIAS

1. FROM 테이블명

2. WHERE 조건식

3. GROUP BY 칼럼(Column)이나 표현식

4. HAVING 그룹조건식

6. ORDER BY 칼럼(Column)이나 표현식;

 

1.     발췌 대상 테이블을 참조한다. (FROM)

2.     발췌 대상 데이터가 아닌 것은 제거한다. (WHERE)

3.     행들을 소그룹화 한다. (GROUP BY)

4.     그룹핑된 값의 조건에 맞는 것만 출력한다. (HAVING)

5.     데이터 값을 출력/계산한다. (SELECT)

6.     데이터를 정렬한다. (ORDER BY)

-       옵티마이저가 SQL문장의 SYNTAX, SEMANTIC 에러를 점건하는 순서이기도 하다.

-       From 절에 정의되지 않은 칼럼을 WHERE, GROUP BY, HAVING , SELECT , ORDER BY 절에 사용하면 에러 발생
(ORDER BY
절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있다.)
, SELECT DISTINCT를 지정하거나 SQL 문장에 GROUP BY 절이 있거나 또는 SELECT 문에 UNION 연산자가 있으면 열 정의가 SELECT 목록에 표시되어야 한다.

-       이 부분은 관계형 데이터베이스가 데이터를 메모리에 올릴 때 행 단위로 모든 칼럼을 가져오게 되므로, SELECT 절에서 일부 칼럼만 선택하더라도 ORDER BY 절에서 메모리에 올라와 있는 다른 칼럼의 데이터를 사용할 수 있다.

-       서브쿼리의 SELECT 절에서 선택되지 않은 칼럼들은 계속 유지되는 것이 아니라 서브쿼리 범위를 벗어나면 더 이상 사용할 수 없게 된다.

-       SELECT 절에서는 그룹핑 기준과 숫자 형식 칼럼의 집계 함수를 사용할 수 있지만, 그룹핑 기준 외의 문자 형식 칼럼은 정할 수 없다.

 

3.   Top N 쿼리

l  ROWNUM
Oracle
에서 순위가 높은 N개의 로우를 추출하기 위해 ORDER BY절과 WHERE절의 ROWNUM 조건을 같이 사용하는 경우가 있는데 이 두 조건으로는 원하는 결과를 얻을 수 없다.

l  TOP ()
SQL Server
TOP 조건을 사용하게 되면 별도 처리 없이 ORDER BY 절의 데이터 정렬 후 원하는 일부 데이터만 쉽게 출력

-       TOP 절을 사용하여 결과 집합을 반환되는 행 수를 제한할 수 있다.

-       WITH TIES 옵션은 ORDER BY절의 조건 기준으로 TOP N의 마지막 행으로 표시되는 추가 행의 데이터가 같을 경우 N+ 동일 정렬 순서 데이터를 추가 반환하도록 지정하는 옵션

-       TOP (Expression) PERCENT WITH TIES

반응형
LIST

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

SQLD - SQL 활용 [표준 조인]  (0) 2017.08.14
SQLD - SQL 기본 [조인(JOIN)]  (0) 2017.08.11
SQLD - SQL 기본 [GROUP BY, HAVING 절]  (0) 2017.08.07
SQLD - SQL 기본 [함수]  (0) 2017.08.07
SQLD - SQL 기본 [WHERE]  (0) 2017.08.05
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함