2024.02.26

김무영·2024년 2월 26일

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영역의 시퀀스 객체를 접속자 세션에 올린 후 다음 번호를 얻는다.

0개의 댓글