20220225_01_scott.sql / 오라클 9일 차
ROW_NUMBER
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;
--==>>
/*
12 ADAMS 1100 1987-07-13
7 ALLEN 1600 1981-02-20
5 BLAKE 2850 1981-05-01
6 CLARK 2450 1981-06-09
2 FORD 3000 1981-12-03
13 JAMES 950 1981-12-03
4 JONES 2975 1981-04-02
1 KING 5000 1981-11-17
11 MARTIN 1250 1981-09-28
9 MILLER 1300 1982-01-23
3 SCOTT 3000 1987-07-13
14 SMITH 800 1980-12-17
8 TURNER 1500 1981-09-08
10 WARD 1250 1981-02-22
*/
SELECT ROW_NUMBER() OVER(ORDER BY ENAME) "테스트"
, ENAME "사원명", SAL "급여", HIREDATE "입사일"
FROM EMP
ORDER BY ENAME;
--==>>
/*
1 ADAMS 1100 1987-07-13
2 ALLEN 1600 1981-02-20
3 BLAKE 2850 1981-05-01
4 CLARK 2450 1981-06-09
5 FORD 3000 1981-12-03
6 JAMES 950 1981-12-03
7 JONES 2975 1981-04-02
8 KING 5000 1981-11-17
9 MARTIN 1250 1981-09-28
10 MILLER 1300 1982-01-23
11 SCOTT 3000 1987-07-13
12 SMITH 800 1980-12-17
13 TURNER 1500 1981-09-08
14 WARD 1250 1981-02-22
*/
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 를 사용하지만
-- 단순히 게시물을 목록화하여 사용자에게 리스트 형식으로 보여줄 때에는
-- 사용하지 않는 것이 바람직하다.
SEQUENCE(시퀀스 : 주문번호)
--○ SEQUENCE(시퀀스 : 주문번호) 생성 -- 툭 건드리면 1, 건드리면 2 ... 장치 --> 번호표 발행 기계
-- → 사전적인 의미 : 1.(일련의) 연속적인 사건들, 2.(사건 행동 등의) 순서
CREATE SEQUENCE SEQ_BOARD -- 기본적인 시퀀스 생성 구문
START WITH 1 -- 시작값
INCREMENT BY 1 -- 증가값
NOMAXVALUE -- 최대값
NOCACHE; -- 캐시사용여부
--○ 실습 테이블 생성
CREATE TABLE TBL_BOARD -- TBL_BOARD 테이블 생성 구문 → 게시판 테이블
( NO NUMBER -- 게시물 번호 Ⅹ
, TITLE VARCHAR2(50) -- 게시물 제목 ○
, CONTENTS VARCHAR2(1000) -- 게시물 내용 ○
, NAME VARCHAR2(20) -- 게시물 작성자 △
, PW VARCHAR2(20) -- 게시물 패스워드 △
, CREATED DATE DEFAULT SYSDATE -- 게시물 작성일 Ⅹ
);
--==>> Table TBL_BOARD이(가) 생성되었습니다. -- 다시 완료
--○ 데이터 입력 → 게시판에 게시물을 작성하는 액션
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '풀숲', '전 풀숲에 있어요', '박현수', 'java006$', DEFAULT);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '오로라', '밤하늘 좋네요', '정은정', 'java006$', SYSDATE);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '해변', '바람이 부네요', '양윤정', 'java006$', SYSDATE);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '인터뷰', '인터뷰중인데, 아이가 들어오네요', '이시우', 'java006$', SYSDATE);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '살려주세요', '물에 빠졌어요', '최문정', 'java006$', SYSDATE);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '내가 주인공', '나만 빼고 다 블러', '김민성', 'java006$', SYSDATE);
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '지구정복', '지구를 정복하러 왔다', '김정용', 'java006$', SYSDATE); --- 실수
--==>> 1 행 이(가) 삽입되었습니다.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '당연히', '아무 이유 없다', '이아린', 'java006$', SYSDATE); -- 실수
--==>> 1 행 이(가) 삽입되었습니다.
SELECT *
FROM TBL_BOARD;
--==>>
/*
1 풀숲 전 풀숲에 있어요 박현수 java006$ 2022-02-25 10:29:38
2 오로라 밤하늘 좋네요 정은정 java006$ 2022-02-25 10:30:07
3 해변 바람이 부네요 양윤정 java006$ 2022-02-25 10:30:21
4 인터뷰 인터뷰중인데, 아이가 들어오네요 이시우 java006$ 2022-02-25 10:30:37
5 살려주세요 물에 빠졌어요 최문정 java006$ 2022-02-25 10:30:58
6 내가 주인공 나만 빼고 다 블러 김민성 java006$ 2022-02-25 10:31:18
7 지구정복 지구를 정복하러 왔다 김정용 java006$ 2022-02-25 10:31:35
8 당연히 아무 이유 없다 이아린 java006$ 2022-02-25 10:31:52
*/