BLOG main image
전체 (276)
[Computer] (42)
[Programming] (62)
[DBMS] (26)
[Operating System] (21)
[Study English] (8)
[For money] (28)
[Interest] (89)
«   2009/11   »
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          
77887 Visitors up to today!
Today 79 hit, Yesterday 46 hit
'SQL'에 해당되는 글 15건
[폭주기관차, 2007/05/09 13:30, [DBMS]/Oracle]
SELECT *
  FROM TEST;

<결과>
ID          DATA       
----------- -----------
          3           5
          7           3
          2           9
         10           3

4 rows selected.


TEST란 Table을 생성하였다.
ROWNUM이란 것을 이용하여 결과 값을 2줄만 출력시켜 보겠다.

SELECT *
  FROM TEST
 WHERE ROWNUM < 3;

<결과>
ID          DATA       
----------- -----------
          3           5
          7           3

2 rows selected.


이번엔 2줄 이상부터 출력을 해보겠다.

SELECT *
  FROM TEST
 WHERE ROWNUM > 2;


<결과>
ID          DATA       
----------- -----------

0 rows selected.


출력 결과 값이 0개이다.
이번엔 2번째 줄에 있는 값만 출력 해보겠다.

SELECT *
  FROM TEST
 WHERE ROWNUM = 2;

<결과>
ID          DATA       
----------- -----------

0 rows selected.


음 그럼 WHERE절에서 ROWNUM은 무엇보다 작은 값만 검색이 되는 것인가 =이나, < 는 검색이 안되는것인가?

SELECT *
  FROM TEST
 WHERE ROWNUM = 1;

<결과>
ID          DATA       
----------- -----------
          3           5

1 rows selected.


1번 줄은 나온다.
그렇다면 특별한 행 이상을 출력하는 방법은 없는것인가?

아래와 같은 방법을 이용하면 3번째 줄을 출력할 수 있다.

SELECT *
  FROM (
        SELECT ROWNUM RN
             , TEST.*
          FROM TEST
         WHERE ROWNUM <= 3
       ) A
 WHERE A.RN = 3;

<결과>
RN          ID          DATA       
----------- ----------- -----------
          3           2           9

1 rows selected.


정확히 왜 바로 ROWNUM = 3을 했을 경우 안나오는지 이유에 대해서는
명확하게 알고있지 않다.
좀더 연구를 해봐야할 것 같다.

본 테스트는 Oracle 9i에서 수행되었습니다.
Trackback Address :: http://kongmks.cafe24.com/trackback/201
BlogIcon 딸기 | 2007/05/26 01:32 | PERMALINK | EDIT/DEL | REPLY
rownum은 top n analysis를 하기 때문에..
rownum은 db로부 자료를 읽어오는 순서대로 번호를 매깁니다. 따라서 subquery를 사용하여 orderby를 준다음에
rownum을 의미있는 숫자로 만들지 않는이상 단일검색은 1 밖에 되지 않습니다.
그냥 rownum에 조건을 주면 1부터 검색을 하기때문에 1이외의 조건은 '1'에서 false가 떨어지므로
남아 있는 자료가 아무리 더 있다한들 결과값은 0 이 나온다고 배.웠.습.니.다.^^
BlogIcon 폭주기관차 | 2007/05/28 08:44 | PERMALINK | EDIT/DEL
아. Select가 된 결과값에 번호가 매겨져서

SELECT *
FROM TEST
WHERE ROWNUM > 2;
를 했을 경우

1번 컬럽은 ROWNUM은 1이기 때문에 FALSE가 떨어지고
(Select가 되지 않아서 ROWNUM은 그대로 1)
2번 컬럼도 ROWNUM이 1이 되어서 FALSE가 떨어지고..

결국 Select가 된 결과가 하나도 없어서 계쏙 ROWNUM이 1인상태가
되는 군요...

정말 감사합니다~^^ 이제야 이해했습니다~^^
행복한 하루 보내십시오~^^
Name
Password
Homepage
Secret
[폭주기관차, 2007/03/29 08:24, [DBMS]/Oracle]
TRUNC는 숫자의 소수 부분을 버리고 정수로 만들어 줍니다.

SELECT TRUNC( 3.8 ) FROM DUAL;

<결과>
TRUNC(3.8)
-----------
          3

1 rows selected.


Oracle 9i에서 실험되었습니다.

Trackback Address :: http://kongmks.cafe24.com/trackback/185
Name
Password
Homepage
Secret
[폭주기관차, 2007/03/24 19:20, [DBMS]/Oracle]
UNION을 하면 중복되는 레코드는 빠지고 ALL이 붙게 되면 중복되는 레코드까지 출력하게 된다.

<UNION>
SELECT 20 A, 40 B FROM DUAL
UNION
SELECT 20, 40 FROM DUAL;

< 결과 >
A           B          
----------- -----------
         20          40

1 rows selected.

<UNION ALL>
SELECT 20 A, 40 B FROM DUAL
UNION ALL
SELECT 20, 40 FROM DUAL;


< 결과 >
A           B          
----------- -----------
         20          40
         20          40

2 rows selected.

본 실험은 Oracle 9i에서 수행되었습니다.
Trackback Address :: http://kongmks.cafe24.com/trackback/183
Name
Password
Homepage
Secret
[폭주기관차, 2007/02/15 19:54, [DBMS]/Oracle]
ASCII란 함수를 이용하여 널값을 고의로 만들기
 
ASCII( '' )

괄호안의 ''은 작은 따옴표(') 두 개임.

 
<쿼리>
SELECT
    *
FROM
    (
        SELECT
            TO_CHAR(ASCII( '' )) Test
        FROM 
           Dual
    )   A
WHERE
    A.Test = NULL OR
    A.Test = '';

 
 
<결과>
 
0 rows selected.

 
- 검색이 되지 않는다.
 
 
<쿼리>
SELECT
    *
FROM
    (
        SELECT
            TO_CHAR( ASCII( '' ) ) Test
        FROM 
           Dual
    )   A
WHERE
    NVL( A.Test, 'Null' ) = 'Null';

 
 
 
<결과>
 
1 rows selected.

 
- 출력물은 없지만 검색은 됐다.
 
 
본 실험은 Oracle9i에서 테스트 되었습니다.
Trackback Address :: http://kongmks.cafe24.com/trackback/117
Name
Password
Homepage
Secret
[폭주기관차, 2007/01/25 11:23, [DBMS]/Oracle]
DECODE 함수는 데이터 들을 다른 값으로 바꾸어 줍니다.

형식

DECODE(VALUE, IF1, THEN1, IF2, THEN2...)
 


VALUE 값이 IF1일경우에 THEN1값으로 바꾸어 주고 VALUE값이 IF2일경우에는 THEN2값으로 바꾸어 줍니다.

- 예제 -

SELECT deptno,
    DECODE(deptno, 10 , 'ACCOUNTING' ,
                   20 , 'RESEARCH' ,
                   30 , 'SALES' ,
                   40 , 'OPERATIONS')
FROM emp ;
 


- 수행 결과 -
     DEPTNO     DECODE(DEP
     ---------- ----------
        20        RESEARCH
        30        SALES
        30        SALES
        20        RESEARCH
        30        SALES
        30        SALES
        10        ACCOUNTING
        20        RESEARCH


부서가 10번이면 'ACCOUNTING'를 20번이면 'RESEARCH'를
30번이면 'SALES'를 40번이면 'OPERATIONS'를 출력하는 예제 입니다.

  ================================================
    * Oracle Community OracleClub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 운영자 : 김정식 (oramaster _at_ empal.com)
  ================================================
※ oracleclub 강좌를 다른 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면
    고맙겠습니다.~^^

Trackback Address :: http://kongmks.cafe24.com/trackback/56
Name
Password
Homepage
Secret
[폭주기관차, 2007/01/25 10:06, [DBMS]/Oracle]
사용법
LPAD( 출력내용, 표시할 자릿수, 채울내용 )


예제1)

SELECT LPAD(23, 8, 0) FROM DUAL;
 


LPAD(23,
--------
00000023

1 rows selected.


- 8자리 수를 맞추기 위하여 앞의 빈 공간은 0으로 채웠다.

예제2)

SELECT LPAD('TEST', 5, 'X') FROM DUAL;
 


LPAD(
-----
XTEST

1 rows selected.


- 5자리 수를 맞추기 위하여 앞의 빈 공간은 'X'로 채웠다.

예제3)

SELECT LPAD('TEST', 3, 'X') FROM DUAL;
 


LPA
---
TES

1 rows selected.


- 3자가 넘어가면 잘라버렸다.

참고 : 보라냥이님 블로그 원문 보기
Trackback Address :: http://kongmks.cafe24.com/trackback/55
Tracked from 폭주기관차의 비망록 | 2007/03/14 17:07 | DEL
LPAD &#40; 출력할 문자, 자릿수, 채울문자 &#41; RPAD &#40; 출력할 문자, 자릿수, 채울문자 &#41;LPAD는 출력할 문자 왼쪽(Left)에 '채울문자'를 채워준다.RPAD는 출력할 문자 오른쪽(Right)에 '채울문자'를 채워준다.SELECT RPAD&#40;TO_CHAR&#40; 32 &#41;, 10, '0'&#41; FROM DUAL;RPAD(TO_CH----------32000000001 rows selected.SE..
Name
Password
Homepage
Secret
[폭주기관차, 2007/01/24 20:13, [Interest]/오늘을 살아가는 나...]
출처 : Oracle 강좌 사이트 댓글


SELECT girlfriend
FROM ALL_WOMEN
WHERE style = 'my_style';
 


이렇게 하면 여자친구를 구할 수 있을 까요???

- 명령어 수행 결과 보기 -




위의 출처 사이트로 가셔서 댓글을 보시면 보다 재밌는 뒷 이야기도 보실 수 있습니다.

Trackback Address :: http://kongmks.cafe24.com/trackback/51
Name
Password
Homepage
Secret
*1 *2 *3