티스토리 뷰
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
'자격증 > 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 |