블로그

[DB] Oracle 11g SQL - 노트정리2 본문

CS

[DB] Oracle 11g SQL - 노트정리2

왕방토 2022. 12. 14. 17:00
728x90

<시퀀스(일련번호) 생성>

ex) create sequence(시퀀스 이름) start with1 increment by 2;

 

-> 1, 3, 5, 7, 9... 등차수열 만들어주기

-> start with 0로 해봤는데 시퀀스의 min value보다 작으면 안된다고 하면서 빠꾸먹었다.

시퀀스의 디폴트 min value는 1인걸로!

 

<Commit&Rollback>

테이블 alter 후 commit 해주어야 반영이 됨

(대신 테이블 create 나 drop은 commit 안해도 반영됨 확인해봄!)

-> DDL 문은 자동으로 commit을 실행하기 때문!

https://wikidocs.net/4097

rollback은 마지막 commit 이후로 수정사항을 전부 날리는 것

-> savepoint: 깃처럼 중간중간 진행사항 저장하는 것이 가능

ex) savepoint sv_a

     ...

     ...

     rollback sv_a

 

와 같은 식으로 사용

 

DELETE&TRNCATE&DROP의 차이

https://wikidocs.net/4021

그렇다고 한다

 

<View>: sql 사용을 더 용이하게 해주는 도구!

select 문을 하나의 새로운 table로 만든 것이라고 생각하면 편함.

가상테이블이지만 view를 수정함으로써 원래 table도 수정하는 것이 가능하다

 

사용법: create view (뷰이름) as (select절(+where... 등))

 

ex) create view vw_emp as select empno, ename from emp where deptno = 10;

 

수정: create or replace view (뷰이름) as (바꿀 select절(+where...))

-> create나 replace 둘다 써도 된다는 줄 알았는데 "create or replace" 라고 써야 되더라..

 

삭제: drop view (뷰이름)

 

<Rownum>: 테이블이 select로 불러와질 때 위에서부터 붙는 줄 번호(1부터 시작해 1씩 증가)

order by (기준) 으로 불러왔을 때와 order by (기준) desc 일 때

당연히 불러와지는 행(데이터)의 순서가 반대이지만

rownum은 불러와지는 행의 데이터와 관계없이 위에서부터 순서대로 붙는다

 

~> 조금 복잡한 예시 (scott 계정의 emp 테이블 이용)

 

select * from

(select rownum rnum, a.* from

(select * from emp order by sal asc) a)

where rnum >= 1 and rnum <= 5

 

핑크색으로 생성된 table 생성 근데 이제 5번째 줄까지만

<- 핑크색은 파란색 행의 전체를 가져와서 rownum을 붙인 것

<- 파란색은 emp를 sal 순으로 오름차순 정렬한 table

 

 

 

-> 결과

Comments