SELECT * FROM NOTICE;
SELECT NOTICE.TITLE, NOTICE.NAME FROM NOTICE;
-- 원래 "테이블 명.행 이름" 의 방식으로 입력하는 것이다.
SELECT ROWNUM NOTICE.* FROM NOTICE;
-- *을 다른 행과 같이 사용하려면 NOTICE.*의 방식으로 입력해야한다.
* ROWNUM : SQL Developer에서 자동으로 붙는 번호를 말한다.
SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 5;
위의 코드를 실행하면 1부터 5까지만 출력된다.
하지만, BETWEEN 6 AND 10을 입력하면 결과가 출력되지 않는다.
SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 6 AND 10;
-- 2 AND 10을 입력해도 안됨
이를 해결하기 위한 방법을 알아보겠다.
SELECT ROWNUM, NOTICE.* FROM NOTICE;
위의 코드는
ROWNUM과 NOTICE에 있는 모든 데이터를 출력하라는 의미이다.
SELECT * FROM (SELECT ROWNUM, NOTICE.* FROM NOTICE);
위의 코드의 결과는
NOTICE의 테이블이 아니라 새로운 테이블의 값이 된다.
SELECT * FROM (SELECT ROWNUM, NOTICE.* FROM NOTICE) WHERE ROWNUM BETWEEN 6 AND 10;
위의 코드를 실행하면 결과가 출력되지 않는다.
SELECT * FROM 에서 만들어진 ROWNUM과 WHERE문을 이용하여 출력하는 ROWNUM이 같기 때문이다.
별칭을 사용하면, 정상적으로 출력된다.
SELECT * FROM (SELECT ROWNUM NUM, NOTICE.* FROM NOTICE) WHRER NUM BETWEEN 6 AND 10;
'DB > Oracle' 카테고리의 다른 글
내장 함수_ 문자열 (0) | 2021.06.29 |
---|---|
중복 값 제거 (DISTINT) (0) | 2021.06.29 |
정규식 (0) | 2021.06.29 |
관계 연산자 (0) | 2021.06.28 |
SQL_ DML (0) | 2021.06.28 |