|
'응용'에 해당되는 글 2건
[폭주기관차, 2007/05/09 13:30, [DBMS]/Oracle]
SELECT *<결과> ID DATA ----------- ----------- 3 5 7 3 2 9 10 3 4 rows selected. TEST란 Table을 생성하였다. ROWNUM이란 것을 이용하여 결과 값을 2줄만 출력시켜 보겠다. SELECT *<결과> ID DATA ----------- ----------- 3 5 7 3 2 rows selected. 이번엔 2줄 이상부터 출력을 해보겠다. SELECT *<결과> ID DATA ----------- ----------- 0 rows selected. 출력 결과 값이 0개이다. 이번엔 2번째 줄에 있는 값만 출력 해보겠다. SELECT *<결과> ID DATA ----------- ----------- 0 rows selected. 음 그럼 WHERE절에서 ROWNUM은 무엇보다 작은 값만 검색이 되는 것인가 =이나, < 는 검색이 안되는것인가? SELECT *<결과> ID DATA ----------- ----------- 3 5 1 rows selected. 1번 줄은 나온다. 그렇다면 특별한 행 이상을 출력하는 방법은 없는것인가? 아래와 같은 방법을 이용하면 3번째 줄을 출력할 수 있다. SELECT *<결과> RN ID DATA ----------- ----------- ----------- 3 2 9 1 rows selected. 정확히 왜 바로 ROWNUM = 3을 했을 경우 안나오는지 이유에 대해서는 명확하게 알고있지 않다. 좀더 연구를 해봐야할 것 같다. 본 테스트는 Oracle 9i에서 수행되었습니다. Trackback Address :: http://kongmks.cafe24.com/trackback/201
[폭주기관차, 2007/04/18 09:40, [DBMS]/Oracle]
SELECT *<결과> USR ID USR TMP ----------- ----------- ----------- ----------- 2 48 2 62 3 4 3 75 3 4 3 13 13 55 22 67 5 rows selected. 즉, 좌측은 USR, ID 컬럼은 A Table, 우측 USR, TMP는 B Table을 의미 [가정] A.USR와 B.USR는 조인조건 B의 TMP가 62인 값이 데이터를 삭제 하려고 할 경우 DELETE FROM B명령을 수행하면 B테이블의 값은 지워지지만 A테이블의 값은 지울 수가 없다. 그럴 경우 ROWID IN이란 명령을 사용하면 된다. B테이블에 지워야할 조건을 가지고 있으므로 먼저 지워서는 안된다. DELETE FROM A<결과> 1 rows Deleted 1 rows Deleted 그렇다면 ROWID IN 안의 결과 값이 궁금할 것이다. (아래 결과는 데이터 삭제 전에 나온 값입니다.) SELECT A.ROWID<결과> ROWID ------------------- AAAHI8AAGAAIHQWAAD 1 rows selected. 음.. 무슨 뜻일까...? ㅋ (아래 결과는 데이터 삭제 전에 나온 값입니다.) SELECT ROWID FROM A;<결과> ROWID ------------------- AAAHI8AAGAAIHQWAAA AAAHI8AAGAAIHQWAAB AAAHI8AAGAAIHQWAAC AAAHI8AAGAAIHQWAAD 4 rows selected. Oracle에서는 테이블의 각 행에 ROWID란 고유 번호를 가지고 있는 것 같다.^^ 3개 이상 테이블 삭제시는 삭제할 ROWID를 따로 임시 테이블을 만들어서 삭제하면 편리할 듯 하다^^ 본 실험은 Oracle 9i에서 하였습니다. Trackback Address :: http://kongmks.cafe24.com/trackback/195
|
||





