안녕하세요. 이승혁입니다.
지난 포스팅 연산자에 대한 공부와 실습을 했습니다.
이번 포스팅은 검색 결과를 특정 칼럼(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;
실습 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;
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'와 비교한다.
ㆍ 단일행함수 - 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 |