com

오라클 Database 교육 노트 (2)


by Kitle · 2020. 06. 24.



5.장 함수

 

Rollup

Select

From

Group by rollup [컬럼1],
[
컬럼2]

 

소계, 총계를 구할 때 활용한다.

 

[함수 테스트를 위한 더미 테이블
dual
결과값만 받아봄]

select lower('SQL Course')

from dual;

 

[NVL] 중요~

Select nvl(salary, 0)

From emp;

널이 널이 아닌 다른 값으로 바꿔주는 역할.

salary null 값이
있으면 0으로 변환한다.

 

Select nvl2(salary, 0, -1)

From emp;

 

Salary 0, 0이면 0 -1을 가져온다.

 

[COALESCE]

Null 이 아닌 첫번째 값을 찾는 함수

Select coalesce(salary, comm, -2)

From emp;

 

Salary, comm.

---------------

100      200
-> 100

400      null
-> 400

Null      300
-> 300

Null      null
-> -2

 

[count, count *] 주의해서 써야함.











count(*)



null, 중복 행 포함된 갯수



count(컬럼명)



null이 아닌 행의 개수 (, 중복 행은 포함)


 

C1 1이면 ‘a’

    
2
이면 ‘b’

    
3
이면 ‘c’

 그밖에는
‘d’

 

 

-- case

Case c1

 When
1 then ‘a’

 When
2 then ‘b’

 When
3 then ‘c’

Else ‘d’

End

(성적표 grade 등에
사용)

 

-- decode

Decode(c1, 1, ‘a’,

          
2, ‘b’,

          
3, ‘c’, ‘d’)

 

 

[Lower 소문자 변환]

select
lower('SQL Course')

from
table;

 

Upper 대문자 변환

select
upper('SQL Course')

from
table;

 

첫글자는 대문자 나머지 소문자

select
initcap('SQL Course')

from
table;

 

문자와 문자 연결

select
concat('Hello', 'World')

from
table;

 

왼쪽부터 첫째자리부터 다섯자

select
substr('HelloWorld', 1, 5)

from
table;

 

왼쪽부터 첫째자리부터 전체

select
substr('HelloWorld', 1)

from
table;

 

오른쪽 다섯째자리부터 세자

select
substr('HelloWorld', -5, 3)

from
table;

 

SUB query

여러 개의 sub query를 더 복잡하게 사용할 수 있다.

select salary

from emp

where salary > ( select salary

                   from emp

                   where emp_name=’username’);

 

exists 는 처리가 좀 다르다.

Main query sub
query
로 들어갔다 다시 결과를 main query

일반적인 경우는 sub query의 결과를 main query로 던진다.

 

SubQuery의 종류

단일행 SQ : =,>,< 등등등 >> 결과값이 하나일 때만 가능함

복수행 IN, ANY, ALL

< any 절은 max



< all 절은 min으로
대처가능.