2008. 10. 21. 16:31

[Oracle] 오라클 관련 함수들과 정보들


* Pseudo Column
    1) SYSDATE - 날짜
    2) ROWNUM - 행의 순서(가상의 숫자, 따라서 where 조건을 쓸 수 없음)
    3) ROWID - 모든 행에 대한 식별자의 역할


* 검색 - 오라클 명령어에서 대소문자를 가리지는 않지만, 검색시에는 구분함.
    1) select
        a) distinct - 중복행제거
        b) * - all
        c) alias - 해당 컬럼에 다른 이름 부여 : as키워드를 사용하면 명시적이고
                                                                         따옴표로 묶으면, 대소문자 구분 가능
        d) 컬럼값중 숫자형 데이터는 산술연산 가능
        e) || - 연결연산자
        f) 작은따옴표 - 컬럼에 있는 데이터는 아니지만, 따옴표사이의 내용이 모든 행에 표시된다. 연결연산자와
           함께 사용하는 경우가 일반적
    2) where - from 절 다음에 와야 한다.
        a) and - AND 연산일 경우에는 거짓이 앞에 있는 게 좋고, OR 연산자일 경우에는 참이 앞에 있는 것이 좋다
        b) or
        c) between ~ and ~ - 이상, 이하의 개념임. 미만, 보다일경우는 부등호 기호 사용
        d) in ( 'x', 'y', 'z' )
        e) is null / not -
NOT이 들어간 SQL 연산자는 사용을 하지 않는 것이 좋다. (ex. NOT IN, IS NOT NULL)
            null값으로 들어간 데이터를 확인하는 용도로 쓰인다.
        f) like
            i) %
            ii) _
            iii) like 'aa\%%' escape '\'
    3) order by 칼럼이름 [asc|desc]

    4) group by - 테이블보다 작은 그룹으로 묶어서 값을 얻으려 할 때 사용
        a) ROLLUP
        b) CUBE
    5) having - group by 의 수행결과에 조건을 부여해서 값을 얻으려 할 때 사용
    6) grouping sets
        a) UNION - 합집합
        b) INTERSECT - 교집합
        c) MINUS - 차집합
        d) UNION ALL - 합집합+교집합
    7) subquery - select 문 안에 삽입된 select 문


* SQL함수
    1) 단일행함수
        a) 숫자
        b) 문자
        c) 날짜
        d) 형변환
        e) 기타
    2) 집합함수
    3) 분석함수
    4) 정규표현식


* 숫자함수
    1) MOD(m, n) - m을 n으로 나누었을 때의 나머지를 반환

    2) ROUND(m, n) - m을 소수점 n+1자리에서 반올림한 결과를 반환

    3) WIDTH_BUCKET(대상값, 최소값, 최대값, 버켓수)

    4) CEIL(n) - 올림한 후 정수를 반환

    5) FLOOR(n) - 내림한 후 정수를 반환

    6) ABS(n) - 절대값을 반환

    7) TRUNC(m, n) - m을 n자리까지 절삭. n은 생략가능하며, 기본값은 0.
        n이 양수이면, 소수자리를 절삭, n이 음수이면, 정수자리를 절삭(= 0으로 만든다)

    8) POWER(m, n) - m의 n승값을 반환

    9) SQRT(n) - n의 제곱근 값을 반환

    10) SIGN(n) - n이 양수인지, 음수인지, 0인지를 반환

    11) CHR(n) - 10진수 n의 아스키코드에 해당하는 문자를 반환


* 문자함수
    1) LOWER('문자열') - 문자열을 소문자로 반환

    2) UPPER('문자열') - 문자열을 대문자로 반환

    3) INITCAP('문자열') - 문자열의 첫문자는 대문자로, 나머지 문자는 소문자로 반환

    4) CONCAT('문자열1', '문자열2') - 두개의 문자열1과 2를 연결해서 반환. 매개변수는 2개만 가능.

    5) SUBSTR('문자열', 시작위치값, 시작위치부터뽑아낼 문자열길이)

    6) LENGTH('문자열') - 문자열의 길이를 숫자값으로 반환

    7) INSTR('문자열', '표적문자', m, n) - 문자열중에서 표적문자를 왼쪽부터 m번째, m번째부터 n번째
        의 위치를 숫자값을 반환

    8) LPAD('문자열', 전체문자길이, '나머지문자값') - 전체문자길이중 문자열 길이만큼을 제외한
        공간을 왼쪽부터 나머지 문자값으로 채우고, 문자열을 덧붙여서 반환

    9) RPAD('문자열', 전체문자길이, '나머지문자값') - LPAD와 동일한 개념인데, 다만, 나머지 문자값을
        오른쪽으로 채워서 반환

    10) REPLACE('문자열', 'str1', 'str2') - 문자열중에서 str1에 해당하는 문자를 str2의 문자로 바꿔서 반환

    11) ASCII('문자') - 문자의 아스키코드값을 반환

    12) TRIM('타겟문자' from '문자열') - 문자열중에서 타겟문자를 삭제. 단 문자열의 바깥쪽 문자만이 해당됨.


* 날짜함수
    1) MONTHS_BETWEEN(date1, date2) - 두 날짜사이의 월수를 계산해서 숫자로 반환
        정수부분은 월을, 소수부분은 일을 의미함.

    2) ADD_MONTHS(date1, n) - n이 양수이면, date1에 더해지고, n이 음수이면, date1에서 뺄 값이 됩니다.

    3) NEXT_DAY(date1, n) - date1의 날짜를 기준으로, 다음번 n에 해당하는 요일을 반환
        ex) NEXT_DAY(sysdate, 'FRIDAY') - 시스템현재날짜로부터 다가올 금요일 날짜를 반환,
              NEXT_DAY(sysdate, '금요일') - 시스템이 한글로 설정되어있을 경우, 한글사용도 가능
              NEXT_DAY(sysdate, 1) - 숫자1은 일요일, 숫자7은 토요일
        cf) 오라클 언어세팅에 의해, 어느 한쪽의 예약어가 거부되는 경우가 있다.
             확인방법 : select * from nls_session_parameters;
             변경방법 : ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN';

    4) LAST_DAY(date1) - date1날짜가 속한 달의 마지막 날짜를 반환, 윤년,평년은 자동 계산

    5) ROUND(date1, 조건) - date1의 날짜를 월단위, 년단위로 반올림처리해서 반환하고, 조건이 없으면,
        가장 가까운 날짜로 반올림한다.
        ex) ROUND(sysdate, 'MONTH')
              ROUND(sysdate, 'YEAR')
              ROUND(sysdate)

    6) TRUNC(date1, 조건) - date1의 날짜를 가장 가까운 년도 또는 월로 절삭해서 반환. 조건이 없으면,
        가장 가까운 날짜로 절삭


* 변환함수
    1) 묵시적인 형변환
        a) varchar2, char -> number
        b) varchar2, char -> date
        c) number -> varchar2
        d) date -> varchar2
    2) 명시적인 형변환
        a) TO_CAHR
        b) TO_NUMBER
        c) TO_DATE


* 기타함수
    1) NVL(컬럼명, 원하는값) - 특정컬럼의 null값을 원하는 값으로 변환
    2) DECODE(조건, 값1, 처리1, 값2, 처리2, ...... , 디폴트값) - if 분기문과 같은 역할 - 오라클 함수
    3) CASE - DECODE함수와 동일한 처리를 한다. 다만 DECODE함수에서 지원하지않는
        범위비교가 가능하다. - 표준 SQL
    4) NULLIF(m, n) - m과 n이 같으면 null값을 반환하고, 다르면, m을 반환
    5) GREATEST - 나열된 값중 제일 큰 값을 반환
    6) LEAST - 나열된 값중 제일 작은 값을 반환


* 집합함수 - where 절 사용시 주의
    1) AVG - 여러 행으로부터 하나의 결과를 반환
        ex) AVG(컬럼명)
        ex) AVG(컬럼명) OVER(PARTITION BY 컬럼명)
    2) COUNT
    3) MAX
    4) MIN
    5) SUM
    6) RANK - 전체값을 대상으로 각 값의 순위를 반환
        ex) RANK(값) WITHIN GROUP(ORDER BY 컬럼명)
        ex) RANK() OVER (ORDER BY 컬럼명)

'Database / Sql' 카테고리의 다른 글

SQLiteSpy - 간편한 SQLite3 DB 관리 프로그램  (0) 2009.03.17
[Oracle] 통계 함수  (0) 2008.10.21
[Oracle] 함수 모음  (0) 2008.10.21
SQL의 종류  (0) 2008.10.08
[Oracle] sid 확인  (0) 2008.10.08