프로그래밍/SQL

SQL-4) Order 절, 함수(function)

LeeSeunghyuk 2020. 10. 22. 17:01
반응형

안녕하세요. 이승혁입니다.

 

지난 포스팅 연산자에 대한 공부와 실습을 했습니다.

이번 포스팅은 검색 결과를 특정 칼럼(column)을 기준으로 정렬하여 출력하는 order by 절,

데이터의 행에 대한 조작을 할 수 있는 함수(function)에 대해 포스팅하겠습니다.

 

 

※ Order by 절

 

select __              칼럼 선택

from __               테이블 선택

where __             선택된 칼럼의 각 행에 조건 부여

order by ___ ;       결과 정렬

 

※ 정렬 옵션

desc : 높은 것부터 출력

asc : 낮은 것부터 출력

 

 

직관적으로 결과 정렬을 수행하는 order 절은 마지막에 수행된다고 생각할 수 있습니다.

실제로 오라클 내부에서 수행되는 순서는 다음과 같습니다.

 

 

                                                   from -> where -> select -> order by

 

즉 from 절에서 테이블을 선택한 후, where 절에서 기술한 조건에 맞는 행만을 선택합니다.

다음으로 select 절에 기술한 칼럼만을 선택하고, order by 절의 조건에 맞게 정렬을 해 출력해 주는 것입니다.

 

실습 1. 월급이 높은 사원부터 차례로 출력해보기

select ename, sal
from emp
order by sal desc;

order by 절 기술한 'sal' 칼럼을 기준 desc(높은것 부터) 정렬해 출력

실습 2. 조건 부여해 정렬하기, 직업이 SALESMAN 또는 ANALYST인 사원을 월급 내림차순으로 정렬해보기

select ename, sal, job
from emp 
where job in ('SALESMAN','ANALYST')  
order by sal desc;

실습 3. order by 절의 default 확인하기

select ename, sal
from emp 
order by sal; 

'sal' 칼럼이 오름차순 정렬되어 출력된다.

order by 절의 기본값(default)은 오름차순 정렬(asc)이다.


※ null 정렬하기

 

null 값을 위로 : nulls first

null 값을 아래로 : nulls last

default : nulls first

 

실습 4. null 값 정렬 실습해보기

select ename, comm
from emp 
order by comm desc nulls last;

 

comm 칼럼을 기준으로 내림차순 정렬을 하며, null 인 행들은 last 옵션이 적용되어 아래쪽으로 출력된다.

null 정렬 옵션의 기본값은 nulls first 옵션으로 null 값이 먼저 출력된다.

 


※ 함수(function)

함수(function)에 대해 알아보고 실습해보겠습니다.

함수란 더 정교하게 데이터를 검색할 수 있게 하는 기능입니다.

 

※ 함수 실습에 사용하는 데이터는 개인정보가 담긴 자료로 모두 공개할 수 없는 점 양해 부탁드립니다.

 

Ex) 우리나라에서 등록금이 가장 비싼 학교는 어디인가?

     서울시 물가 데이터에서 가장 비싼 품목은 무엇인가?

     가정 불화의 가장 큰 원인은 무엇인가 ?

     치킨집 폐업이 가장 많은 최근 년도는 언제인가?

 

※ 함수의 종류

 

1. 단일행 함수 (single row function) : 하나의 행 입력하여 하나의 값을 출력함

 

             ----------------->   함수    ----------------->             

              하나의 행(row)                  하나의 값

 

2. 복수행 함수 (multiple row function) : 여러 행 중 하나의 값만을 출력함

 

                    입력                              출력

              ----------------->     

              ----------------->   함수    ----------------->

              ----------------->           

              여러 개의 행(row)                하나의 

 

※ 단일행 함수의 종류

   문자 함수 : upper, lower, initcap, substr, instr, lpad, rpad, rtrim, trim, replace, concat

   숫자함수 : round, trunc, mod, power

   날짜함수 : months_between, add_months, next_day, last_day

   변환함수 : to_char, to_number, to_date

   일반함수 : nvl, decode, case

 

※ 복수행 함수의 종류

    max

    min

    avg

    sum

    count

 

 

ㆍ 단일행 함수 - upper 함수

 

     문자 함수로 알파벳을 대문자로 출력해 주는 함수

select telecom,upper(telecom)
from emp11;

실습 5. upper 함수 사용해보기, 통신사가 'SK'인 데이터 출력하기

select ename, age, telecom
from emp11
where upper(telecom) ='SK';  # telecom 칼럼의 모든 데이터를 대문자로 변경한 후, 'SK'와 비교한다.

첫 예제처럼 select 절에 바로 적용할 수도 있지만 where절에 적용해 보이지 않게 내부적으로 사용할 수 있습니다.

ㆍ 단일행함수 - lower 함수

 

     문자 함수로 알파벳을 소문자로 출력해 주는 함수

 

select ename, lower(ename)
from emp;

실습 6. lower 함수 사용해보기, 통신사가 'kt'인 데이터 출력하기

select ename, age, telecom
from emp11
where lower(telecom)='kt';

ㆍ 단일행함수 - initcap 함수

 

      문자 함수로 첫 번째 철자는 대문자, 나머지는 소문자로 출력하는 함수

      제각각으로 저장된 문자의 형식을 하나의 동일한 형태로 출력할 때 사용하겠습니다.

 

select ename, initcap(ename)     
from emp;

ㆍ 단일행 함수 - substr 함수

 

     문자 함수로 단어에서 특정 철자만 잘라내는 함수

     substr(A,a,b) --> 문자 A a번째 철자부터 b 까지 잘라낸다.

   

ex) substr('KING',1,3) : KIN

     substr('KING',2,3) : ING

 

select ename, substr(ename,1,3)
from emp;

 

ㆍ 단일행 함수 - instr 함수

 

     문자 함수로 단어에서 특정 철자의 자릿수를 출력하는 함수

     inst(column,'A') -> 해당 칼럼의 각 데이터에서 A 값이 몇 번째 있는지 출력한다.

                              하나 이상의 A 값이 존재 할 경우 첫 번째 값의 위치를 출력한다.

select ename, instr(ename,'A')
from emp;

이번 포스팅의 내용은 단일행 함수 instr까지 하고 마치도록 하겠습니다.

 

다음 시간부터는 조금 더 편하게 테이블 생성, 관리, 결과 확인이 가능하고 편한 

sql developer를 설치하여 실습을 진행하도록 하겠습니다.

 

읽어주셔서 감사합니다.

반응형

'프로그래밍 > SQL' 카테고리의 다른 글

SQL-9) group by, having , 함수(function) - 5  (0) 2020.10.27
SQL-8) 함수(function) - 4  (2) 2020.10.26
SQL-7) 함수(function) - 3  (0) 2020.10.25
SQL-6) 함수(function) - 2  (0) 2020.10.23
SQL-5) SQL Developer install  (0) 2020.10.23
SQL-3) Query 조건절  (0) 2020.10.20
SQL-2) Query  (0) 2020.10.19
SQL-1) Oracle DB install  (9) 2020.10.19