yeong_mu.log
로그인
yeong_mu.log
로그인
2024.02.26
김무영
·
2024년 2월 26일
팔로우
0
DBMS
oracle
sql
outer join
안쪽 테이블에만 레코드가 존재하더라도 조회가 가능한 조인
문법 )
ANSI 문법
select 컬러명, 테이블명.컬럼명, alias.컬럼명
from 테이블명 alias
종류 outer join 조인할테이블명 alias
on 조인조건
종류 : left, right, full -> 레코드가 존재하는 테이블을 선택
outer join 을 기준으로 앞테이블에 레코드가 존재하면 left
outer join 을 기준으로 뒤테이블에 레코드가 존재하면 right
Oracle 문법
조인 조건에 (+)를 붙인다
레코드가 존재하지 않는 컬럼에 (+) 를 붙인다.
select 컬러명, 테이블명.컬럼명, alias.컬럼명
from 테이블명
where 조인조건 (alias.컬럼명(+)=alias.컬럼명)
self join
테이블 하나를 조인 하는 것.
Non-EQUI join유형으로 사용.
조회 용도의 목적과 조건 용도의 목적으로 테이블을 구분하여 사용한다.
문법 )
select
from 테이블명, 조인할테이블명
where
테이블명 : 조회용도
select 조회컬럼에만 alias를 명시
조건에 비교할 때 사용
조인할테이블명 : 조건용도
조인할 조건에 사용
검색 조건에만 사용
sequence
순차적으로 증가하는 번호를 저장하고 있는 객체.
user_sequences DD에서 생성된 시퀀스의 정보를 확인할 수 있다.
currval, nextval pseudo column으로 현재 번호 또는 다음 번호를 얻을 수 있다.
currval : 메모리(server instance)에 올라온 시퀀스의 현재 번호를 얻을 때 사용.
nextval : 시퀀스의 다음 번호를 얻을 때 사용.
Oracle 11g까지는 서버가 종료되면 번호가 사라지는 이슈가 있었음.
시퀀스 작성법 )
create sequence 시퀀스명
increment by 증가값
start with 시작값
maxvalue 끝값
(no)cache - 메모리에 올려놓을 번호의 수 (기본 20)
(no)cycle - 반복여부
시퀀스 검색
select * from user_sequences;
시퀀스 삭제
drop sequence 시퀀스명;
사용법 )
현재 번호 얻기 )
메모리에 시퀀스가 올라와있지 않으면 error 발생
시퀀스명. currval
시퀀스를 접속자 세션에 올리는 일은 할 수 없고,
올라와있는 현재 값만 사용할 수 있다.
다음 번호 얻기 )
시퀀스명.nextval
시퀀스가 메모리에 올라와는지?
yes -> 시퀀스의 cache가 모두 소진되었는지?
yes : File영역의 last_number를 변경한 후 접속자 세션으로 시퀀스 객체를 올리고
다음 번호를 얻는다.
no : 접속자 세션의 시퀀스 번호를 다음 번호로 변경한 후 번호를 얻는다.
no -> File영역의 시퀀스 객체를 접속자 세션에 올린 후 다음 번호를 얻는다.
김무영
팔로우
이전 포스트
2024.02.23
다음 포스트
2024.02.27
0개의 댓글
댓글 작성