24. SQL develop2

hanahana·2022년 7월 30일
0

Oracle - 학원수강

목록 보기
5/11
post-thumbnail

연산자

  • and 연산자와 or연산자가 있을때 and가 우선시된다
  • a and b or c and d가 있을때
    • (a and b) or (c and d)와 같다

관리자계정 sys와 system의 차이

  • sys - 슈처관리자, 데이터베이서 생성/삭제 권한있음
    • 로그인옵션으로 반드시 as sysdba로 지정
    • 데이터딕셔너리를 소유하고있음
  • system - 일반관리자, 데이터베이스 생성/삭제 권한 없음

형변환 함수

  • Oracle - Function
    • TO_CHAR DATE : NUMBER/ CHARACTER/ 날짜형 혹은 숫자형을 문자형으로 변환한다.
    • TO_DATE : CHARACTER/ DATE /문자형을 날짜형으로 변환한다.
      TO_NUMBER : CHARACTER/ NUMBER/ 문자형을 숫자형으로 변환한다
    • 형변환 함수
      -- 형식
      -- YYYY:년도표현(4자리), YY:년도표현(2자리)
      -- MONTH:월표시, MM:월을 숫자로 표시, MON:월을 한글로 표시
      -- DD:일표현
      -- D:요일표현(숫자로 1:일요일,...), DAY:요일표현, DY:요일 약어로 표현
      -- HH,HH12:시간표현(12시간으로 표현), HH24(24시간으로 표현)
      -- MI:분, SS:초
      -- AM,PM:오전,오후표기
      -- FM:월,일,시,분,초 앞의 0을 제거

length

  • 숫자를 세어주는 함수
SELECT
    length('hello')
FROM
    dual;
  • hello가 몇글자인지 세준다 : 5라는 숫자를 반환한다.
  • dual은 임시로 생성되는 가상의 표 이름이다

lengthb

  • 문자가 몇 바이트인지를 알려준다
SELECT
    lengthb('헬로')
FROM
    dual;

//6 반환
  • 한글은 한글자 3바이트이기에 6의 값을 반환한다.

문자열의 위치 파악

instr, instrb

SELECT
    instr(
        'hello world hi high',  -- 제시하는 문자열
        'h', -- 찾는 문자열
        -1, --오른쪽부터 찾는다, 1이라고 하면 왼쪽부터 찾는다
        2 --몇번째 찾는 문자열을 찾을지 고른다 이경우는 hi의 h
    ),
    instr(
        'hello world hi high',
        'h',
        -1,
        3
    ),
    instr(
        'hello world hi high',
        'h',
        -1,
        4
    )
FROM
    dual; --가상의 테이블
  • instr(’지정된 문자열’,찾을문자열,왼쪽1 혹은 오른쪽-1 지정, 몇번째 문자열을 찾을지)

instrb

  • 지정된 문자가 몇바이트 뒤에 있는지 찾는다
instrb(
        '안녕 나는 나야 헤헤헤',
        '나',
         1,
        1
    )
  • 이 경우 문자열에서 첫번째 나를 왼쪽부터 찾을때, 첫번째 ‘나’는 2글자와 띄어쓰기 하나 뒤에 있다
    • 한글은 1자에 3바이트이기에 2글자 6바이트 띄어쓰기 1바이트 바로 다음(1바이트)에 시작하기에 8바이트 순서에서 시작한다고 볼수있다.

    • 따라서 8을 반환한다.

      문자 처리 함수 – LPAD/RPAD

    • LPAD(STRING, N, [STR]) / RPAD(STRING, N, [STR])

    • Lpad - 왼쪽부터 채워넣는다

    • Rpad -오른쪽부터 채워넣는다

    • lpad(기준문자, 총문자의 갯수, 총문자갯수-기준문자 만큼의 수를 채워넣을 문자열)

    • rpad(기준문자, 총문자의 갯수, 총문자갯수-기준문자 만큼의 수를 채워넣을 문자열)

      select lpad('hello',7,'*') from dual;     //**hello
      select rpad('hello',7,'*') from dual;    //hello**

ltrim / rtrim

  • ltrim : 왼쪽에 있는 지정된 값을 삭제한다
  • rtrim : 오른쪽에 있는 지정된 값을 삭제한다.
    • 둘다 지정값이 없다면 공백을 삭제한다.

    • ltrim(’ hello ‘)이라면 반환값은 ‘hello ‘이 된다, 지정된 값 외에 다른값이 나오면 삭제를 종료한다

    • rtrim(’ hello ‘)이라면 반환값은 ‘ hello‘이 된다, 지정된 값 외에 다른값이 나오면 삭제를 종료한다

      SELECT
          ltrim('00001234','0')
      FROM
          dual;
      
      //반환값 1234
      SELECT
          rtrim('abadcsdhappyab','abcds')
      FROM
          dual;
      
      //반환값 
      abadcsdhappy
    • rtrim(’기준문자열’,’삭제를 원하는문자열’)로 표기한다.

      TRIM

    • 하나의 지정된 문자를 기준문자열에서 삭제해준다

      SELECT
          TRIM('z' FROM 'zzzzzhellozzzzzz')
      FROM
          dual;
      
      // 반환값 hello
    • TRIM('삭제할문자' FROM '기준문자열') : 단 하나의 문자만 지정할수있다. 왼쪽오른쪽 상관없이 문자열을 모두 삭제해준다.

      substr

    • 지정한 숫자에 맞춰 문자열을 잘라준다.

      SELECT
          substr('show me the meony',6)
      FROM
          dual; 
      
      //반환값 
      me the money
    • 6번째 문자부터 끝까지 잘라내어 반환한다.

      SELECT
          substr('show me the money',6,2)
      FROM
          dual; 
      
      //반환값
      me
    • 6번째 문자부터 문자 2개를 잘라 반환한다.

      • 반환할 문자열의 크기를 지정하지 않으면 끝까지 반환한다.

replace

  • 문자열을 교체한다
SELECT
    replace('apple hate','hate','love')
FROM
    dual;

숫자함수

abs, mod, round, floor, trunc, ceil

round

  • 지정값에 따라 반올림함
SELECT
    round(123.456)  
FROM
    dual;

//반환값
 --123

round(123.456) : 기준값만있고 지정값이 없음 이경우 정수로 반올림

SELECT
    round(123.456,1)
FROM
    dual; 
//반환
-- 123.5 

round(123.456,1) :

  • round(기준값, 소숫점자리수)
  • 소숫점자리수 1은 소숫점자리 1만남기고 반올림함

trunc

  • 지정된값으로 버림
SELECT
    trunc(123.456,1)
FROM
    dual;

// 반환값
 --123.4 
  • trunc(123.456,1) : trunc(기준값, 소숫점 버릴값)
    • 소숫점 버릴값 1을 입력하면 소숫점 자리 1을 기준으로 그 이후값들을 버린다
    • 입력하지 않으면 정수만 남기고 버린다

floor

  • 소숫점 자리 버림
SELECT
 floor(123.456)
FROM
    dual;

//반환값
123

Ceil

  • 정수로 올림
SELECT
    ceil(123.456)
FROM
    dual; 

//반환값
--124 -> 정수로 올림

날짜 함수

Months_between

  • 날짜를 개월수로 더해준다
SELECT
    add_months(SYSDATE,3)
FROM
    dual;

//반환값
22/10/14 (*오늘은 22/07/14)
  • 오늘날짜에서 3개월만큼을 더해준 날을 계산한다

next_day

  • 오늘 날짜를 기준으로 다음주 오늘 요일의 날짜를 알려준다 (오늘 14일 목요일: 다음 목요일은? ->21일)
SELECT
    next_day(SYSDATE,'월요일'),  //다음주 월요일 날짜 출력
    next_day(SYSDATE,'목'),  //다음주 목요일 날짜 출력
    next_day(SYSDATE,3) --<- 3은 일,월,화 3일이 지난 화요일을 뜻함 //다음주 화요일 날짜 출력
FROM
    dual;

Last_day

  • 기준날짜의 그 달 마지막 날을 반환
SELECT
    last_day(SYSDATE)
FROM
    dual; 

-- 이번달의 마지막 날을 조회
profile
hello world

0개의 댓글