Oracle

ORACLE 공부 8일차 2020/08/17~18

햄찌개 2020. 8. 28. 17:09

2020-08-17
3. MONTHS_BETWEEN
    - 두 날짜데이터 사이의 개월수를 반환 
    (사용형식)
    MONTHS_BETWEEN(d1,d2)
    - d2가 d1보다 빠른 날짜가 와야함 


 5. NEXT_DAY
 (사용형식)
 NEXT_DAY(d1,c2)
    - d1 이후 c1(요일)이 지칭하는 요일의 날짜 반환





변환함수 
    -데이터의 형을 변환 할때 사용
 1. TO_CHAR
 (사용형식)
 TO_CHAR(d, [,fmt]_
    - d는 숫자 또는 날짜 자료형
    - fmt는 형식지정 문자열
(날짜변환형식)
----------------------------------------------------------
    fmt                      설명
----------------------------------------------------------
    AM, FM                오전, 오후 표시
    A.M., F.M.             
    YYYY, YYY,            년도 표시
    YY, Y
    MM                    월(01~12)
    D                       주중의 일 (1~7)
    DD                     월중의 일 (1~31)
    DDD                   년중의 일 (1~365)
    DAY           주중의 일을 요일로 표시
  DL            날짜와 요일 표시
-------------------------------------
  HH,HH12       시간
  HH24
-------------------------------------
  MI            분
  SS            초
  SSSSS         오늘 전체 경과된 시간
  WW            년중 주차를 나타냄(1~53주)
-------------------------------------
SELECT TO_CHAR(TO_DATE('19801026'),'DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
------------------------------------------------
(숫자변환형식)
    FMT         설명
------------------------------------------------
 .(DOT),        소숫점과 자리점(3자리 구분)
 ,(COMMA)
 9, 0           9는 무효의 0을 공백으로 대치
                0은 무효의 0을 '0'으로 반환
 PR             음수인 경우 -부호 대신 '< >'로 묶어 표시
 RN, M          숫자 자료 를 로마자로 변환하여 표시
** 사용자 지정 문자열 : " " 안에 기술

예) 오늘 날짜를 'YYY년 MM월 DD일' 형식으로 표시

SELECT TO_CHAR(SYSDATE,'YYYY"년" MM"월" DD"일"')
FROM DUAL;

2. TO_NUMBER
  - 문자나 다른 유형의 숫자를 NUMBER타입으로 변환
  (사용형식)
  TO_NUMBER(c [,fmt])



 NULL 처리함수
    1. NVL
    - 주어진 자료가 NULL인지 판별하여 NULL인 경우 다른 값을 반환
    (사용형식)
    NVL(col, val)
        - 'col'의 값이 NULL이면 'val' 값을 변환하고 'col'이 NULL이 아니면 'col' 값을 반환 
    

2020-08-18-01)
2. NVL
(사용형식)
NVL(c, r1, r2)
    - c의 값이 NULL이면 r2를 반환하고 NULL이 아니면 r1의 값을 반환한다.
 예) 회원 테이블에서 회원의 성씨가 '이'씨인 회원들의 마일리지를 NULL로 바꾸시오.   
UPDATE MEMBER 
    SET MEM_MILEAGE = NULL
WHERE MEM_NAME LIKE '이%';


집계함수 
    - 데이터를 특정 컬름을 기준으로 같은 값을 갖는 것끼리 그룹화 시키고 이를 기준으로 합(SUM) 평균(AVG) 
        갯수(행의수,COUNT) 최대값(MAX) 최소값(MIN)을 구하는 함수
    - GROUP BY 절이 사용 
    - 집계 함수에 조건이 부여될 경우 HAVING 절 사용  
    - SELECT 절에 기술된 그룹함수가 아닌 일반컬럼은 반드시 GROUP BY 절에 기술되어야 함
    -- ~~별 이면 그룹 바이 사용 한다 생각하면된다.
    - 그룹핑 순서는 GROUP BY절에 기술된 컬럼 중 왼쪽 부터 적용됨
    - SELECT 절에 기술되지 않은 컬럼도 GROUP BY절에 사용 가능
    1. SUM 
    (사용형식)
    SUM(column)
        - 해당 컬럼에 저장된 데이터를 그룹별로 합계를 구하여 반환



2. AVG
(사용형식)
AVG(expr)
    - expr은 컬럼명이나 수식
    - 그룹핑된 expr에 저장된 값에 대한 평균을 반환
    

3.COUNT 
(사용형식)
COUNT(*|expr)
    - 쿼리의 결과 내의 행의수를 반환
    - 외부 조인에서는 expr를 사용해야함(*를 사용하면 '0'이 '1'로 반환)