** 시퀀스(sequence)
컬럼의 종류가 숫자인경우
알아서 자동으로 1부터 1씩 증가하는 값으로 순번을 매겨야 하는 경우에 사용합니다.
** 시퀀스 만드는 방법
create sequence 시퀀스이름;
** 시퀀스를 사용하는 방법
insert into 테이블이름 values( 시퀀스이름.nextval, ...)
ex)
create sequence seq_orders;
insert into orders values(seq_orders.nextval, '김유신', '홍길동', 1 );
insert into orders values(seq_orders.nextval, '유관순', '홍길동', 1 );
insert into orders values(seq_orders.nextval, '이순신', '홍길동', 1 );
** 시퀀스를 이용하여
만약 sql명령자체에 결함이 있어
실패했을때는
시퀀스를 이용한 순번은 이미 발행이 되었기 때문에
순서대로 되지 않을 수 있어요!
꼭, 순서대로 해야 한다면
max(컬럼) + 1 를 사용합니다.
시퀀스는 겹치지 않도록 번호를 매기는 용도로 사용합니다.
** 다중행 연산자
in, not in, any(some), all에 각각 설명하시오
in, not in, any(some), all 모두
서브쿼리의 건수가 여러건 일 때 사용하며
in은 =을 대신하여 사용하며
not in !=을 대신하여 사용하며
any(some), all은
>, <, >=, <= 연산자와 함께 사용합니다.
any(some), all은
min함수나 max함수를 사용하면
단일행 연산자로도 표현할 수 있어요.
**exists, not exists 연산자
다중행 연산자 종류중의 하나이며
서브쿼리의 건수가 존재하는지 존재하지 않은지 여부를 판별하는 연산자 입니다.
exists 는 서브쿼리가 반환하는 조건에 맞는 메인쿼리를 실행하고
not exists는 서브쿼리의 조건에 만족하지 않는 메인쿼리를 실행합니다.
exists, not exists 다중행 연산자를 사용할 때에는
반드시 상관서브쿼리 이어야 합니다.
ex) 대한민국에 거주하는 고객에게 판매한 도서의 총판액을 출력
- join
select sum(saleprice) from
customer c, orders o
where c.custid = o.custid and
address like '대한민국%';
==>249500
- in 연산자 이용 서브쿼리
select sum(saleprice)
from orders
where custid in (select custid from customer where address like '대한민국%');
==> 249500
- exits 연산자 이용 서브쿼리
select sum(saleprice)
from orders o
where exists ( select custid from customer c where address like '대한민국%' and o.custid = c.custid)
==> 249500
'프로그래밍 공부 정리 > database' 카테고리의 다른 글
Index(인덱스) (0) | 2021.11.28 |
---|---|
View(뷰), System View(시스템 뷰) (0) | 2021.11.27 |
rownum, 서브쿼리 (0) | 2021.11.25 |
날짜 관련 함수, null 처리 (0) | 2021.11.24 |
숫자 관련 오라클 함수 (0) | 2021.11.23 |