ORDER BY & DISTINCT & LIMIT 는 정보처리에도 나오고

문자이름만 봐도 이 친구가 무슨 역할을 할지 대충은 보이는 명령어들이다.

 

order by 정렬 할때 쓰는 기능

 

distinct 중복행 제거

 

limit 출력갯수 제한

 

바로 예제

select Name, mDate from userTbl order by mDate desc; select Name, height from userTbl order by height desc, name asc; 

 

userTbl에서 Name과 mDate를 출력하는데 mDate를 기준으로 내림차순 (여기서는 오래된 순)으로 정렬한다 

아래쪽은 키가 큰 순서로 정렬을 하지만 만약 키가 같을 경우에는 이름 순으로 정렬하도록 한다  

asc는 디폴트(기본)값으로 오름차순을 의미한다 그러니 order by 적고 desc를 안적어주면 자동으로 asc로 정렬해준다

select userId from userTbl order by height; 

이 구문도 잘 작동된다 출력하는건 userId 지만 height순으로 정렬해준다 

그럼 이번에는 distinct 그냥 중복행을 제거 해주는 역할이다

select addr from userTbl; 

만약 이 구문에 중복된 값이 포함되어 10줄이 출력되었다고 하자

select distinct addr from userTbl; 

select 뒤에 distinct를 붙여주는 것만으로도 중복행이 제거된다.

 

마지막으로는 limit이다

select emp_no, hire_date from employees order by hire_date asc; 
 

위에 쿼리문은 employees 테이블에서 emp_no와 hire_date를 출력 해주는데
hire_date를 오름차순으로 출력 하는것 이다.
이렇게 되면 테이블내의 모든 hire_date를 불러오게 되는데 (수천개가 있을수도 있다)
이때 '나는 오름차순 기준으로 10명정도만 보고싶다' 라고 생각 할때 쓰는것이 바로 limit 이다.

select emp_no, hire_date from employees order by hire_date asc limit 10; 
 

이렇게만 적어주면 오름차순 기준으로 10개 까지만 보여주게 된다. OFFSET은 처음 기준 정도로 생가하면 되는데

select emp_no, hire_date from employees order by hire_date asc limit 10, 15; 
 

이렇게 적어주면 10번째에서 15번째를 보여주게 된다. (LIMIT 15 OFFSET 10과 동일하다) 

 

이렇게 ORDER BY & DISTINCT & LIMIT 는 간단하지만 

select문에 있어 잘 활용하면 서버의 처리량을 획기적으로 줄여줄수 있다고 한다.

 

'SQL > oracle' 카테고리의 다른 글

스키마 (Schema)  (0) 2017.09.05
데이터베이스의 특징  (0) 2017.09.05