-----■■■ ROW_NUMBER() ■■■■
SELECT ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP;
/*
SMITH 800 1980-12-17
ALLEN 1600 1981-02-20
WARD 1250 1981-02-22
JONES 2975 1981-04-02
MARTIN 1250 1981-09-28
BLAKE 2850 1981-05-01
CLARK 2450 1981-06-09
SCOTT 3000 1987-07-13
KING 5000 1981-11-17
TURNER 1500 1981-09-08
ADAMS 1100 1987-07-13
JAMES 950 1981-12-03
FORD 3000 1981-12-03
MILLER 1300 1982-01-23*/
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 SAL DESC) "관찰"
, ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP
ORDER BY ENAME;
-- ※ 게시판의 게시물 번호를
-- SEQUENCE 나 IDENTITY 를 사용하게 되면
-- 게시물을 삭제했을 경우, 삭제한 게시물의 자리에 다음 번호를 가진 게시물이 등록되는 상황이 발생하게 된다.
-- 이는 보안 측면에서나.. 미관상 바람직하지 않은 상황일 수 있기 때문에
-- ROW_NUMBER() 의 사용을 고려해 볼 수 있다.
-- 관리의 목적으로 사용할 때에는 SEQUENCE 나 IDENTITY 를 사용하지만
-- 단순히 게시물을 목록화하여 사용자에게 리스트 형식으로 보여줄 때 에는
-- 사용하지 않는 것이 좋다.
--※ 관찰
CREATE TABLE TBL_AAA
(NO NUMBER
,NAME VARCHAR2(40)
,GRADE CHAR
);
--==>>Table TBL_AAA이(가) 생성되었습니다.
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(1, '선혜연', 'A');
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(2, '이상화', 'B');
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(3, '선혜연', 'A');
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(4, '박민지', 'C'); --이상화A 한혜림 B 한혜림 B
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(5, '이상화', 'A');
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(6, '한혜림', 'B');
INSERT INTO TBL_AAA(NO,NAME,GRADE) VALUES(7, '한혜림', 'B');
--==>>1 행 이(가) 삽입되었습니다. *7
COMMIT;
SELECT *
FROM TBL_AAA;
UPDATE TBL_AAA
SET GRADE = 'A'
WHERE NAME = '이상화' AND GRADE = 'B';
--==>> 1 행 이(가) 업데이트되었습니다.
COMMIT;
SELECT *
FROM TBL_AAA;
/*
1 선혜연 A
2 이상화 A ☆
3 선혜연 A
4 박민지 C
5 이상화 A ☆ 더 이상 둘을 구분할 수 없게 된다.
6 한혜림 B
7 한혜림 B
*/
-- ● SEQUENCE 생성 (시퀀스, 주문번호)
-- → 사전적인 의미 : 1. (일련의) 연속적인 사건들
-- 2. (사건, 행동 등의) 순서 ------------------마지은행의번호표처럼....
CREATE SEQUENCE SEQ_BOARD -- 시퀀스 기본 생성 구문(MS-SQL 의 IDENTITY 와 동일한 개념)
START WITH 1 -- 시작값을 1번부터 발행
INCREMENT BY 1 -- 1 씩 증가하게끔
NOMAXVALUE -- 최대값의 제한을 두지 않음
NOCACHE; -- 캐시(임시저장메모리) 사용하지 않겠다 -??
--==>>Sequence SEQ_BOARD이(가) 생성되었습니다.
--DROP SEQUENCE SEQ_BOARD;
-- ● 테이블 생성(TBL_BOARD)
CREATE TABLE TBL_BOARD -- TBL_BOARD이름의 테이블 생성 → 게시판
(NO NUMBER -- 게시물 번호 X
,TITLE VARCHAR2(50) -- 게시물 제목 O
,CONTENTS VARCHAR2(2000) -- 게시물 내용 O
,NAME VARCHAR2(20) -- 게시물 작성자 △
,PW VARCHAR2(20) -- 게시물 패스워드 △
,CREATED DATE DEFAULT SYSDATE -- 게시물 작성일 X
);
--==>>Table TBL_BOARD이(가) 생성되었습니다.
-- ○ 데이터 입력 → 게시판에 게시물 작성
--DROP TABLE TBL_BOARD;
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '앗싸~1등', '내가 1등이지롱!', '선혜연','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '건강관리', '다들 건강 챙깁시다', '이상화','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '오늘은', '저녁 뭐 먹지....', '박민지','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '오늘은', '미세먼지 없나?', '한혜림','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '공부하고 싶은데', '집이 너무 멀어요', '김아별','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '질문있습니다', '쉬었다 하면 안되나요', '이유림','JAVA006$',DEFAULT);
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '질문있습니다', '생각나면 다시 질문할께요', '이희주','JAVA006$',DEFAULT);
SELECT *
FROM TBL_BOARD;
COMMIT;
-- ● 게시물 삭제
DELETE
FROM TBL_BOARD
WHERE NO=4;
--==>>1 행 이(가) 삭제되었습니다.
/*
1 앗싸~1등 내가 1등이지롱! 선혜연 JAVA006$ 2021-03-31
2 건강관리 다들 건강 챙깁시다 이상화 JAVA006$ 2021-03-31
3 오늘은 저녁 뭐 먹지.... 박민지 JAVA006$ 2021-03-31
5 공부하고 싶은데 집이 너무 멀어요 김아별 JAVA006$ 2021-03-31
6 질문있습니다 쉬었다 하면 안되나요 이유림 JAVA006$ 2021-03-31
7 질문있습니다 생각나면 다시 질문할께요 이희주 JAVA006$ 2021-03-31*/
-- ● 게시물 작성
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '졸려요', '전 그냥 잘래요', '이새롬', 'JAVA006$',DEFAULT);
-- ● 게시물 삭제
DELETE
FROM TBL_BOARD
WHERE NO=2;
-- ● 게시물 삭제
DELETE
FROM TBL_BOARD
WHERE NO=8;
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '저는요', '잘 지내고 있습니다', '장서현', 'JAVA006$',DEFAULT);
COMMIT;
-- ● 확인
SELECT *
FROM TBL_BOARD;
/*
1 앗싸~1등 내가 1등이지롱! 선혜연 JAVA006$ 2021-03-31
3 오늘은 저녁 뭐 먹지.... 박민지 JAVA006$ 2021-03-31
5 공부하고 싶은데 집이 너무 멀어요 김아별 JAVA006$ 2021-03-31
6 질문있습니다 쉬었다 하면 안되나요 이유림 JAVA006$ 2021-03-31
7 질문있습니다 생각나면 다시 질문할께요 이희주 JAVA006$ 2021-03-31
9 저는요 잘 지내고 있습니다 장서현 JAVA006$ 2021-03-31*/
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "글번호"
, TITLE "제목", NAME "작성자" , CREATED "작성일"
FROM TBL_BOARD
ORDER BY 4 DESC;
/*
6 저는요 장서현 21/03/31
5 질문있습니다 이희주 21/03/31
4 질문있습니다 이유림 21/03/31
3 공부하고 싶은데 김아별 21/03/31
2 오늘은 박민지 21/03/31
1 앗싸~1등 선혜연 21/03/31*/
--● 게시물 작성
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '외로워도', '슬퍼도 나는 안울어', '박정준', 'JAVA006$', DEFAULT);
--==> 1 행 이(가) 삽입되었습니다.
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "글번호"
, TITLE "제목", NAME "작성자", CREATED "작성일"
FROM TBL_BOARD
ORDER BY 4 DESC;
-- ● 게시물 삭제
DELETE
FROM TBL_BOARD
WHERE NO=7;
COMMIT;
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "글번호"
, TITLE "제목", NAME "작성자" , CREATED "작성일"
FROM TBL_BOARD
ORDER BY 1 DESC;
/*
6 외로워도 박정준 21/03/31
5 저는요 장서현 21/03/31
4 질문있습니다 이유림 21/03/31
3 공부하고 싶은데 김아별 21/03/31
2 오늘은 박민지 21/03/31
1 앗싸~1등 선혜연 21/03/31*/