블로그 이미지
우디냥
"지금 잠을 자면 꿈을 꾸지만, 지금 공부하면 꿈을 이룰수있다"

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

'─☻раցеº②/└ᘐ oracle'에 해당되는 글 6

  1. 2009.04.21 [Orange] Excel BackUp
  2. 2007.08.27 [쿼리]날짜 구하기(2)
  3. 2007.05.18 jdbc란?(1)
  4. 2007.05.08 문자함수
  5. 2007.05.08 WHERE절
  6. 2007.05.07 SELECT 문


-  Select 후 데이터칸에서 오른쪽마우스 [ Fetch all rows ] 클릭  
       전체적인 데이터행들이 출력되어진다.
-  Data 출력 행 첫번째셀을 선택 오른쪽마우스 [ Save/show grid as a excel file...]
       엑셀로 저장 되어진다.
posted by 우디냥

# 해당 일부터 30일 날짜


SELECT TO_CHAR(TO_DATE(BB.DAY, 'YYYYMMDD') + NUM, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM AS NUM
FROM DICTIONARY A,(
SELECT B.DAY AS BDAY, C.DAY AS CDAY
FROM
  ( SELECT TO_CHAR(SYSDATE,'YYYYMM') || '01' AS DAY FROM DUAL ) B,
  ( SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') AS DAY FROM DUAL ) C
) B
WHERE ROWNUM <= TO_DATE(B.CDAY, 'YYYYMMDD') - TO_DATE(B.BDAY, 'YYYYMMDD')  + 1) AA,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) BB

# 현재 날짜에서 일주일 날짜..

SELECT TO_CHAR(TO_DATE(BB.DAY, 'YYYYMMDD') + NUM-1, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM AS NUM
FROM DICTIONARY A,(
SELECT B.DAY AS BDAY, C.DAY AS CDAY
FROM
  ( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) B,
  ( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 7,'YYYYMMDD') AS DAY FROM DUAL ) C
) B
WHERE ROWNUM <= TO_DATE(B.CDAY, 'YYYYMMDD') - TO_DATE(B.BDAY, 'YYYYMMDD')  + 1) AA,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) BB

# 시작일부터 끝일까지

SELECT TO_CHAR(TO_DATE('[SDATE]', 'YYYY-MM-DD') + NUM-1, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM NUM
FROM DICTIONARY
WHERE ROWNUM <= TO_DATE('[EDATE]', 'YYYY-MM-DD') - TO_DATE('[SDATE]', 'YYYY-MM-DD')  + 1
)

# 날짜계산

/* 어제 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1)
+0.99999421
/* 오늘 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999421
/* 내일 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1) AND TRUNC(SYSDATE+1)
+0.99999421
/* 금주 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')
AND TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')
+6.99999421
/* 차주 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+8)-TO_CHAR(SYSDATE, 'D')
AND TRUNC(TRUNC(SYSDATE)+14.99999421)-TO_CHAR
(SYSDATE, 'D')
/* 금월 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'DD')
AND TRUNC(LAST_DAY(SYSDATE))+0.99999421
/* 전월 */ 날짜칼럼 BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-1)+1)-TO_CHAR
(SYSDATE,'DD')
AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))
+0.99999421
/* 차월 */ 날짜칼럼 BETWEEN ADD_MONTHS(TRUNC(SYSDATE),1)-TO_CHAR
(SYSDATE,'DD')+1
AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)
+0.99999421)


# 특정일 까지의 간격을 년, 개월, 일로 표현하기

SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD'))/12) *
12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('19970101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD')))) *
30.5) "일"

#일주일 단위로 날짜 가져오기^^

SELECT TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) - 0,'YYYY-MM-DD') AS PRE,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 1,'YYYY-MM-DD') AS MON,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 2,'YYYY-MM-DD') AS TUE,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 3,'YYYY-MM-DD') AS WED,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 4,'YYYY-MM-DD') AS THU,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 5,'YYYY-MM-DD') AS FRI,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 6,'YYYY-MM-DD') AS SAT,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 7,'YYYY-MM-DD') AS SUN,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 8,'YYYY-MM-DD') AS NEX
FROM DUAL

-0 은 어제 +8은 담주 월요일입니다.

posted by 우디냥

└ᘐ jdbc란?
      - Java Data Base Contectivity의 약자
        자바 언어를 이용해서 데이터베이스를 관리하는 기술

     * JDBC에게 통역을 맡기는 방법
        ->사용할 데이터베이스의 드라이버를 지정해주는 것 (DB의 DBMS를 지정)
     
     * JDBC를 처리하기 위한 API
        -> java.sql.*;

 └ᘐ 자바에서 데이터베이스 사용
        1단계 : 드라이버 로딩
              Class.forName("드라이버 이름");
         
              1. 오라클
                oracle.jdbc.driver.OracleDriver
              2. MS-SQL
                com.microsoft.jdbc.sqlserver.SQLServerDriver
              3. MY-SQL
                org.gjt.mm.mysql.Driver
              4. Access(ODBC)
                sun.jdbc.odbc.JdbcOdbcDriver
                   
        2단계 : 데이터베이스에 접속 
             -> 사용할 데이터베이스에 사용자 프로그램이 데이터베이스의 사용을 허락하는 과정
                 데이터베이스의 접속이 끊어지면 해당 데이터베이스는 더이상 사용 불가
       
              [사용함수]
                   DriverManager 인터페이스에 있는
                   getConnection() 함수

        3단계 : 스테이트먼트 생성
              스테이트먼트란?
                -> 프로그램과 DBMS사이에 질의명령을 전달하고 그 결과를 받아오는 도구
                    없으면 질의명령을 전달하지 못하고, 질의를 실행시킬 수 없다.
             
              [사용함수]
                   Connection 인터페이스 안에 있는
                   createStatement() 함수가 만들어 준다.
      
        4단계 : 질의 던지기 
             -> 데이터베이스를 관리하기 위해 사용자가 데이터베이스에게 질의를 알려주어야함

              [사용함수]
                    Statement 인터페이스 소속
                    execute("질의");
                    executeUpdate("질의");
                    executeQuery("질의");   함수 사용
       
        5단계 : select 질의 결과 관리
             -> select 질의의 결과는 가상 테이블로 탄생
                 이 가상의 테이블을 프로그램이 관리해야 하는데 그 관리하는 클래스 ResutSet이다.
           
              [사용함수]
                   1. 레코드 포인터 이동
                      afterLast()            EOP로 이동   ┐
                      beforeFirst()         BOP로 이동   ┴  반환값이 없다
                      first()                   1번 레코드로 이동                    ┐
                      last()                   마지막 레코드로 이동                │
                      next()                  현재 위치의 다음 레코드로 이동  ├ 반환값이 boolean
                      previous()            현재 위치의 이전 레코드로 이동  ┘
                   2. 특정 필드값 꺼내기
                      getXXX(숫자);              ->XXXX는 해당 필드의 데이터 형태
                      getXXX("필드이름");
                   

posted by 우디냥
TAG jdbc
▶ 문자 함수
     - 문자를 인수로 하여 실행되는 함수
   
       1. LOWER 
            - 인수를 소문자로 변환하는 함수
          [형식]
              LOWER(인수)
       2. UPPER
            - 인수를 대문자로 변환하는 함수
          [형식]
              UPPER(인수)
       3. INITCAP
            - 단어의 첫 번째 문자는 대문자로 변환하는 함수 (나머지는 소문자)
          [형식]
               INITCAP(인수)
       4. CONCAT
            - 두 개의 문자 인수를 연결하는 함수
          [형식]
               CONCAT(인수, 인수) => 인수는 2개만 가능!!
           ex) ename deptno로 나타날땐
                 => concat(ename, concat(' ', deptno))
       5. SUBSTR
            - 문자열에서 부분집합을 뽑아내는 함수
          [형식]
                SUBSTR(인수, 위치, 개수)
       6. LENGTH
            - 문자인수의 길이를 숫자값으로 반환하는 함수
          [형식]
                LENGTH(인수)
       7. INSTR
            - 지장한 문자의 위치를 숫자값으로 반환하는 함수
          [형식]
                INSTR(인수, 찾고자 하는 문자, 찾기 시작하는 위치, 횟수)
       8. LPAD & RPAD
            -  LPAD는 왼쪽부터 채워 출력하고 나머지 빈 폭에는 채울꺼로 채워준다.
                RPAD는 오른쪽부터 ... (정렬시 사용!)
          [형식]
                LPAD & RPAD(인수, 인수폭, 채울꺼)
       9. LTRIM & RTRIM
           - LTRIM은 왼쪽에서 원하는 문자제거
             RTRIM은 오른쪽에서 원하는 문자제거
          [형식]
                LTRIM & RTRIM(인수, 문자)
      10. TRANSLATE
            - 문자 하나하나를 찾아서 바꿔주는 함수
          [형식]
                TRANSLATE(인수, 원래문자, 바꿔줄 문자)
      11. REPLACE
            - 주어진 문자를 대신 배치하라고 지시하는 함수  
          [형식]
                REPLACE(인수, 원래문자열, 대신배치할 문자열)

               
posted by 우디냥
▶ WHERE절
    - 조건 기술을 위해 사용 (조건이 '참' 일때 출력)
    - FROM 절 다음에 사용
    - 문자와 날짜 값은 단일 인용부호로 감싼다.
    - WHERE절에 컬럼 별명을 사용할 수 없다.
   
        [형식]
             SELECT 컬럼명 FROM  객체명 WHERE 조건

   ⊙ 비교연산자
       1. 일반 비교 연산자
           -> < , >, =, >=, <=, <>

       2. BETWEEN .. AND ...
           -> 조건 2개가 AND라는 논리 연산자로 결합
          [형식]
               BETWEEN 하한값 AND 상한값
       3. IN
           -> 조건 2개가 OR라는 논리 연산자로 결합
         * 부정한 경우 => NOT IN

       4. LIKE
           -> 비교해야 할 데이터가 정확하게 생각나지 않는 경우 사용
           -> 등호가 포함되서는 안된다
          ◈ % 기호
              [형식]
                    LIKE  '%S'    ->  S로 끝나는 데이터
                            'S%'    ->  S로 시작하는 데이터
                            '%S%' ->  S가 가운데에 있는 데이터
                            '% %'  ->  공백데이터
          ◈ _ 기호
                 - 반드시 존재해야 하는 글자수 => 하나의 글자 의미
              [형식]
                    LIKE  '_S%'          ex) SS501
                    LIKE  '_%S%_'      -> _S가 가운데 존재하는 데이터 출력_
         
         ▷ ESCAPE  키워드
             -> % 나 _를 데이터로 비교하기 원하는 경우 사용
             ex) select ename from emp where ename Like '3\%' escape '\';
                      =>찾는데이터 :  3%
                   * 참고 - escape문자는 사용자 지정!    
                               단! &기호는 사용해서는 안된다
             
       5. IS NULL
           -> NULL 은 알 수 없는 값
             ex) comm is null (가능)
                   comm = null  (불가능 -> null은 비교를 할 수 가 없다)
           사용ex)
                 문제 : comm 을 받지 않는 사람
                    =>select ename, comm from emp where comm>0;

    ⊙ 논리 연산자
         -> AND, OR, NOT
       ♣ 논리 연산자 기본 우선 순위
             NOT  -> AND -> OR
       
         * AND 연산
             AND 에서는 false 가 가장 강하다  =>  false > null > true
         * OR 연산
             OR 에서는 true가 가장 강하다  => true > null > false
   

         
     

  
posted by 우디냥
TAG where절

▶ SELECT 문
    [형식]
          SELECT  *  FROM  table명 ;
                       └> 컬럼명 (* 는 모든 것을 나타내라는 의미)
   
 ⊙ 산술 연산자 사용 
       -> + , - , * , / 와 같은 산술 연살자를 사용할 수 있다.
     <고려사항>
       1. 산술 연산자의 우선순위를 고려 해야 한다.
           * 산술 연산자의 우선순위
              -  * , /  -> + , -
              - 같은 시엔 왼쪽에서 오른쪽으로 가면서 연산
       2. 별명(aliase)를 부여하는것이 좋다.
            [형식]
                   select empno (as - 생략가능) "사번"  from emp;
                                          └ 별명 ("a" =>대문자, a =>소문자로 출력됨)
        
           ex) select empno 사번; (가능)
                 select empno 사...번; (불가능)
                 select empno 사_번; (가능)
                                       ※ 특수문자 중엔 _ 만 인식 가능! 다른건 오류발생!
   
 ⊙ NULL 값일 경우 사용
       - null 값까지 처리해야 할 경우 =>  NVL(컬럼, 0) 함수 사용
       ex) select ename, sal, nvl(comm, 0) from emp;
   
 ⊙ 연결 연산자 & 문자열 사용
       - 연결연산자( || ) 를 사용
       - 연산 결과는 문자열
       - 문자와 날짜는 인용부로로 감싼다(' ' -> 인용부호)
       ex) select  'Dear '|| ename from emp;
             -> 출력결과 :  Dear ename

 ⊙ 중복된 로우 제거
       -  DISTINCT 라는 키워드 사용
       - 중복 제거 후 출력(정렬됨)
       - 그룹을 보고자 할 때 사용하는 키워드 -> distinct  컬럼,컬럼 일경우
      ex) select distinct  deptno from emp;
     
 ⊙ 로우 제한과 정렬
       - 오름차순으로 정렬  :  order by
       - 내림차순으로 정렬  :  desc
     ex) select empno from emp order by hiredate; - 오름차순!
          select empno from emp order by hiredate desc; - 내림차순!


posted by 우디냥
prev 1 next

티스토리 툴바