'function'에 해당되는 글 2건

  1. 2010/08/06 boyo 6.25 / Date and Nesting Function
  2. 2010/08/06 boyo 06.23 / sqlplus & function
  1. 단위

     10^3 k
    10^6 m
    10^9 g
    10^12 t
    10^15 peta
    10^18 exa

  2. date function
  3. months_between 월과 월차이
    add_months 몇개월후
    next_day 돌아오는 해당일
    last_day 해당월일의 마지막날
    round 반올림
    trunc 내림
  4.  implicit(암시적,자동)
    select last_day(sysdate-30) from dual;
  5. explicit(명시적, 수동)
    select to_char(1)||to_char(1), to_number('1')+to_number('1') from dual;
  6. 문자->날짜
    select sysdate-to_date('1986.09.30','yyyy.mm.dd') from dual
  7. 날짜-문자
    select to_char(sysdate,'yyyy')||'년 ' || to_char(sysdate,'MM')||'월' from dual

    hh:hour,hh24,mi:분,ss : 초,ff6: 소수점 이하 초(6자리

    yy(95을 2095년으로 인식) rr(1950~2049년으로 자동 mapping)

  8. nesting functions(중첩 가능한 이유는 리터값이 1개라서)
  9. nvl 널이면 특정값으로 변환
  10. nvl2 널이면 두번째값 리턴 아니면 세번째값 리턴
  11.  SQL> select nvl2(null,1,2), nvl2(123,1,2) from dual;

    NVL2(NULL,1,2) NVL2(123,1,2)
    -------------- -------------
                 2             1

  12. nullif 같으면 널 값리턴, 다르면 첫번째 값

    select nullif(1,1), nullif(1,2) from dual;
    NULLIF(1,1) NULLIF(1,2)
    ----------- -----------
                          1

  13.  coalesce : nul중첩 (null이 아닌 첫번째 파라미터 리턴)
    select coalesce(null,null,null,1) from dual

    COALESCE(NULL,NULL,NULL,1)
    --------------------------
                             1

  14.  성능 때문에
    case expression(where절에서 많이 사용)
    select ename,
        case deptno
         when 10 then 'ACCOUNTING'
        when 20 then 'RESEARCH'
        when 30 then 'SALES'
        when 40 then 'OPERATIONS'
        else 'OPERATIONS'
       end dname
        from emp;
  15.  decode function(select와 from사이에 사용)

    select ename,
    decode( deptno
    , 10 , 'ACCOUNTING'
    , 20 , 'RESEARCH'
    , 30 , 'SALES'
    , 40 , 'OPERATIONS'
    , 'OPERATIONS'
    ) dname
    from emp


     버퍼 사용시 중간 강제 종료시 해결 방법
    ed을 수정하는 중 강제 종료 되면 swp 파일이 남아 있다
    그럼 sqlplus로 접속후 ed 편집하면 에러 메시지 발생
    그럴경우 rm .*.swp 실행

  16.  메뉴얼 보는 법

     otn.oracle.com -> documentation
    키워드 이용 : 단어는 아는데 뜻을 모르는 경우
    ex)는 oe/oe or hr/hr 계정에서
    분류체게 이용. 뜻은 아는데 단어를 모르는 경우
    books->

  17.  락 풀기
    alter user oe identified by oe account unlock;
  18.  4장

    aggregated (group multi-row에 대해 연산하는...)
    select job, count(*) from emp group by job having count(*)>1
    job별로 1명이상인 job의 명수를 구하기.
    stddev 편준편찬(값자체를 이용할때), variance 분산(단순비교형)
    count(컬럼)널이 아닌 값의 갯수
    count(*) row의 갯수
    select avg(nvl(comm,0)) from emp;

    group by 묶은 컬럼명만 사용 가능
    select deptno, avg(nvl(sal,0)), sum(sal) from emp group by deptno;

  19.  5장
    multiple tables (join -92, 99)
    sql 92를 통한 조인
2010/08/06 14:08 2010/08/06 14:08
  1. 질의의 기본 절차
    1. 접속
       conn scott/tiger
    2. 테이블 리스트 확인
       select * from tab;
    3. 테이블 컬럼 리스트
       desc dept;
    4. 질의 확인
      select * from table_name;
  2. sqlplus 명령어
    list : 마지막 실행 명령어
    run : 마지막으로 실행시킨(버퍼에 있는) 명령 실행
    conn : 접속
    show user : 접속한 유저명 보기
    save t : 버퍼에 있는 명령 저장
    @t : 실행(확장자 sql로 자동) t는 파일명
    ! : command 창으로 나가기
    exit : 다시 들어오기
    get t : 해당 파일 불러오기
    ed t : 해당 파일 수정하기
    ed : 버퍼를 편집 - sql명령 1개만 편집가능
    sav t replace : 덮어 씌기
    show all : 설정사항 확인
    set command : 설정 사항 변경
    set linesize : 라인 크기
    /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/glogin.sql : 세팅 파일
  3. isqlplus : 웹버전 sqlplus
  4. SQL

    select
    * 모든 컬럼
    distinct 중복제거
    expression : 계산식 계산
    alias : 컬럼의 heading을 지정

sql는 대소문자(case-sensitive) 구별 안함. 단 따옴표("')안에서는 구분
' : 문자열
" : 객체명, 비번 컬럼 alias

select 300*3 from dual; dual 가상 테이블 1개만 나오게 함
null값 연산은 null 값

concatenation operator : 문자열 더하기 ||


EX)

select 1+'1', '1'+'1', 1||1, '1'||'1' from dual;

     1+'1'    '1'+'1' 1| '1
---------- ---------- -- --
         2          2 11 11

  1. literal character strings
    select 'Mr. '||ename from emp;

    'MR.'||ENAME
    --------------
    Mr. SMITH
    Mr. ALLEN
    Mr. WARD

  2. alternative quote(q) operator
    select 'Mr. '||ename||'''s salary is '||sal from emp

    'MR.'||ENAME||'''SSALARYIS'||SAL
    -------------------------------------------------------------------
    Mr. SMITH's salary is 800
    Mr. ALLEN's salary is 1600


    select 'i''m a boy.' from dual; //9i버전
    select q'-i'm a boy.-' from dual; //10g 버전

  3. distinct : duplicate rows

  4. isqlplus (익스플로러 영문으로 해야 깨지지 않음)

  5. append sql

    EX)
    SQL> select * from
      2
    SQL>
    SQL> a  emp
      1* select * from emp
    SQL> r
      1* select * from emp

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20

where 은 로우 마다 비교

정규표현식 검색

is null
is not null

rules of precedence (연산자 우선순위)
(), */+-, ||(문자열 더하기) , < =, like, is null, between, between, not, and, or

&변수 정의 / 매번 실행 물어봄
&&변수 / 처음 한번만 물어봄 , define 변수에 등록함
define 환경 변수 셋팅
undefine sortcolumn 환경변수 지우기
set verify off

  1. Function
    1. user defined function : pl/sql 로 만든 함수
    2. built-in function
      1.  single function :
          ex)
          select power(2,10) from dual;,
          select ename, sal+nvl(comm, 0) from emp;
          select ename from emp where ename like upper('%bl%')
        1. character : lower, upper, initcap
             concat ||
             substr 뽑아내기
             length 길이
             instr 몇번째 있는가?
             lpad | rpad 채우기
             trim 양끝단 '' 없애기
             replace 치환
        2. number
             round : 반올림 round(11.2111, 2)
             trunc : 내림
             mod : 나머지 mod(1600,300)
        3. date function : sysdate(시스템 날짜)
              alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
             1일(시간) = 숫자 1
             시각 + 시간 = 시각
             시각 - 시각 = 시간
             하루 1440분 / 86400초
        4. conversion
        5. general
      2.  group function : count(*), sum(sal)
    3. function의 arg는 n개 result는 1개
2010/08/06 14:07 2010/08/06 14:07