본문 바로가기
CLASS/DATABASE

#6-2/ Oracle - sequence reset, ROW_NUMBER(),view+join

by hingu 2024. 9. 6.

❗ 시퀀스 증가값 확인

select LAST_NUMBER from user_sequences where SEQUENCE_NAME='시퀀스 이름';

 

❗ 시퀀스 0으로 돌리기

alter SEQUENCE CNO INCREMENT BY -시퀀스 증가값 확인한 값+1;

cycle, increment by도 변경해야해서 걍 이거로 수정하는게 나을듯ㅎ

 


 

❗ [고유 row를 확인하는 방법 ]

sequence 는 data 삭제햇다 다시 insert하면 마지막 번호부터 다시 시작함

  => 불러온 data 목록 아예 1부터 먹여지는 기능 oracle에는 있음!!!  - 고유 row

       게시판 번호먹일때 유용할듯 

 

❗ [limit 사용법]  - oracle에응 limit이라는 명령어 없음 

   => BETWEEN을 이용하여 설정

        select * from (select ROWNUM NUM, 테이블명.*from 테이블명)

        where NUM BETWEEN 범위시작값 AND 범위종료값;

 

🔽 요 두개 써서


select * from (select ROWNUM NUM,customer.* from customer order by c_idx desc) where NUM BETWEEN 0 AND 2;

 

select * from
(select ROW_NUMBER() OVER (order by c_idx desc) test1, 

customer.* from customer order by c_idx desc)
where test1 between 1 and 10;

=> 요게 진짜 게시판에 쓰일 수 있을듯

 

  • ROWNUM : 단순 SQL ROW의 번호를 먹이는 명령어 (order by 적용 불가)
  • ROW_NUMBER() : Oracle전용 row 함수를 설정하는 명령어 (order by 적용 가능)

 

[ ROW_NUMBER() 사용하는 방식]

select * from
(select ROW_NUMBER() OVER (order by 컬럼명 desc) test1,

테이블명.* from 테이블명 order by 컬럼명 desc)
where test1 between 1 and 10;

 


👀view table + join

* view table은 commit 하지 않아도 data 들어가버림

 

create view 만들viewtable이름 as 
select a.컬럼명,b.컬럼명
from 테이블1이름 a, 테이블2이름 b where a.컬럼명 = b.컬럼명;

 

 

ex)

create view customer_list as 
select a.C_IDX,a.C_ID,a.C_NAME,a.C_HP,a.C_EMAIL,b.C_POINT
from customer a, point b where a.C_IDX = b.C_IDX;

 

=> join이라는 단어 사용 X -> 대신 , 사용!

 

* join이라는 단어를 사용하기 위해서는 on을 이용해야 하며, where은 사용하지 못함

ex) select a.id, a.name, b.email from mb1 a join mb2 b on a.idx=b.idx whre a.name='홍길동'

 

== 요건 홍길동 빠진 위의 , 방식

select a.id,a.name,b.email from mb1 a, mb2 b whre a.idx=b.idx

 

잘 나오네욤