-- CREATE SEQUENCE 시퀀스명 → 여기까지만 쓰더라도 기본 시퀀스 생성됨
-- (1부터 시작해서 1씩 증가해서 무한대까지가는 거 생성됨)
CREATE SEQUENCE SEQ_BOARD -- 기본적인 시퀀스 생성 구문
START WITH 1 -- 시작값
INCREMENT BY 1 -- 증가값
NOMAXVALUE -- 최댓값
NOCACHE; -- 캐시사용여부
--==>> Sequence SEQ_BOARD이(가) 생성되었습니다.
-- 그냥 CREATE SEQUENCE SEQ_BOARD 까지만하면
-- 위에 쿼리문에서 NOCACHE 만 제외한 거랑 똑같은 결과로 생성됨
-- NOCACHE : 미리 사용될거 뽑아두는 개념!
-- 처리해야되는거 10개 있어서 10개 미리 뽑아두면,
-- 다른 사람 와서 이용할 때는 아직 앞에 10개 다 쓴 것도 아닌데 11번 해야됨,,,
-- NOCACHE
-- 장점 : 번호표 발급 받는 사람이 대기열에서 오래 안기다려도 된다.
-- 단점 : 미리 뽑아두고, 다른 업무 수행하고 있으면,
-- 다음 사람은 일련번호로 다음 번호를 뽑게 되는 게 아니라
-- 그만큼 뛰어넘고 난 번호를 쓰게 됨,,
--○ 데이터 입력 -> 게시판에 게시물을 작성한 액션
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '아~자고
싶다', '10분만 자고 올께요', '장현성', 'java002$', DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '아~웃겨', 'ㅋㅋㅋㅋㅋㅋㅋㅋ', '엄소연', 'java002$', DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '보고싶다', '원석이가 보고 싶어요', '조영관', 'java002$', DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '배고파요', '아침인데 배고파요', '유동현', 'java002$', DEFAULT);
SELECT
LAST_NUMBER
FROM
USER_SEQUENCES
WHERE
SEQUENCE_NAME = '시퀀스네임';
나오는 데이터의 행의갯수를 sql developer에서 세주는것으로
Order by 를 씀으로써 정렬기준을 부여할수 있다.
SELECT ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP;
--나오는 데이터의 행갯수 = sql developer 에서 세주는것뿐
SELECT ROW_NUMBER() OVER(ORDER BY SAL DESC) "테스트"
,ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP;
/*
1 KING 5000 1981-11-17
2 FORD 3000 1981-12-03
3 SCOTT 3000 1987-07-13
4 JONES 2975 1981-04-02
5 BLAKE 2850 1981-05-01
6 CLARK 2450 1981-06-09
7 ALLEN 1600 1981-02-20
8 TURNER 1500 1981-09-08
9 MILLER 1300 1982-01-23
10 WARD 1250 1981-02-22
11 MARTIN 1250 1981-09-28
12 ADAMS 1100 1987-07-13
13 JAMES 950 1981-12-03
14 SMITH 800 1980-12-17
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "글번호"
,TITLE, NAME, CREATED
FROM TBL_BOARD
ORDER BY 4 DESC;
/*
5 집중합시다 유동현 2022-08-22 10:39:50
2 보고싶다 조영관 2022-08-22 10:39:41
4 너무멀어요 김태민 2022-08-22 10:39:41
1 아~웃겨 엄소연 2022-08-22 10:39:41
3 배고파요 유동현 2022-08-22 10:39:41
*/
SELECT ROW_NUMBER() OVER(ORDER BY ENAME) "테스트"
,ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP
WHERE DEPTNO = 20
ORDER BY ENAME;
/*
1 ADAMS 1100 1987-07-13
2 FORD 3000 1981-12-03
3 JONES 2975 1981-04-02
4 SCOTT 3000 1987-07-13
5 SMITH 800 1980-12-17
*/ --인터넷 게시판에서 주로 쓰이는 기능
--※ 게시판의 게시물 번호를 SEQUENCE 나 IDENTITY 를 사용하게 되면
-- 게시물을 삭제했을 경우.. 삭제한 게시물의 자리에 다음 번호를 가진
-- 게시물이 등록되는 상황이 발생하게 된다.
-- 이는... 보안성 측면이나... 미관상.. 바람직하지 않은 상태일 수 있기 때문에
-- ROW_NUMBER() 의 사용을 고려해 볼 수 있다.
-- 관리의 목적으로 사용할 때에는 SEQUENCE 나 IDENTITY를 사용하지만
-- 단순히 게시물을 목록화 하여 사용자에게 리스트 형식으로 보여줄 때에는
-- 사용하지 않는 것이 바람직할 수 있다.