DATABASE8

다원·2022년 12월 17일
0

DATABASE

목록 보기
9/13

시노님

Alias 처럼 별칭을 다르게 만들어 주는 것

MERGE

하나 혹은 그 이상의 테이블에 대한 insert, update 수행할 때
여러 명령어들을 묶어서 질의해주는 기능
여러 개의 동작을 조합해서 실행하게 해주므로 쿼리 작업이 매우 편리
조건을 추가할 수도 있고 여러 행에 대한 DELETE도 한번에 수행 할 수 잇음

  • ON 조건에 일치하면 UPDATE 불일치하면 INSERT 쿼리
    MERGE INTO 테이블명 USING SELECT ~ ON 조건
    WHEN NATCHED THEN
    UPDATE or DELETE 구문
    WENT NOT MATCHED THEN
    INSERT 구문
    WHERE 조건


DATA Dictionary

Oracle 데이터베이스에 DBMS가 내장된 모든 객체의 정보를 가지고 있는 파일
사용자가 관리하지 않고 DBMS가 관리 및 저장
데이터베이스 생성 시 함께 만들어 지며 SYSTEM 테이블 스페이스에 TABLE 이나 VIEW형태로 저장
사용자가 소유한 객체 정보를 가지고 있는 USER
데이터베이스 관리를위한 정보를 가지고 있는 DBA
사용자가 접근 가능한 모든 스키마 정보를 가지는 AL

  • 사용자가 가지고 있는 테이블의 이름이나, 우리가 알고 있는 테이블의 이름이 아닌
    Oracle이 자동으로 생성한 데이터베이스 Dictionary

  • DBA 접두어 Dictionary
    => 모든 사용자의 이름을 확인 할 수 있음

  • Dictionary에 저장된 사용자의 수를 확인 할 수 있음

    • 조건을 주어 필요한 테이블의 수만 확인 할 수 도 있음
  • 데이터의 변경이 있을 경우 자동으로 Dictionary 에 적용
    => db_1>RDBMS>admin> 에서 확인해 볼 수 있음

Cursor

쿼리 수행으로 반환되는 여러 값을 처리 할 때 사용되는데, 글로벌 영역 내의 저장 공간을 사용해서 사용자가 쿼리를 수행하면 결과 값을 저장 공간에 가지고 있다가 원하는 시기에 순차적으로 가져와서 처리해서 결과를 반환하는 기법
=> 특정 SQL 쿼리의 처리한 결과를 담고 있는 메모리 영역을 가리키고, 프로그램에서 포인터로 확인
SQL 쿼리문 결과 행 여러 줄인데 커서를 사용하면 ROW 순차적으로 접근

  • 종류
    묵시적(implicit) 오라클 내부에서 자동으로 생성, SQL 문장이 실행될 때 마다 자동으로 생성되어,
    명시적(explicit) 사용자가 직접 정의해서 사용, select문 혹은 다른 속성에서 값을 얻어와서 메모리에 저장하는데 사용 어떠한 결과 값을 글로벌 영역에 저장해놓고 순차적으로 값을 가져와서 이용
    다른점은 명시적으로 CURSOR라고 선언하고 사용
    오라클 서버는 SQL문을 실행 할 때 마다 메모리 공간을 확보해서 사용
    => 사용자가 요청하는 데이터를 데이터베이스 버퍼 캐시에서 커서로 복사해 온 뒤 커서에서 원하는 데이터를 추출해서 후속 작업

    오라클에서 쿼리를 처리하면 Shared pool이라는 메모리 영역에서 똑같은 쿼리가 있다면 그것을 이용해서 쿼리를 수행, 해당 쿼리는 이미 최적의 실행 계획이 포함되어있기에, 번거러운 작업이 필요 없어짐, 시스템에서의 버퍼 메모리 기능과 유사

  • 묵시적 커서의 속성

    • QL%ROWCOUNT: 최근 실행된 쿼리의 행의 개수 반환
    • SQL%FOUND : 최근에 실행된 SQL문의 결과 행 존재 유무, 결과 값이 있을 때 TRUE 를 리턴
    • SQL%NOTFOUNT
    • SQL%ISOPEN:최근에 실행된 SQL문의 묵시적 커서 종류 유무

명시적 커서에서는 CURSRO OPEN FETCH~INTO CLOSE 4단계로 진행
CURSOR 커서명
IS
SELECT 문 순

커서를 열기 위해서 순차적으로 접근하기 때문에 LOOP를 비롯한 반복문을 함께 사용해서 LOOP
FETECH 커서_명 into 변수1, 변수2,..
exit when 커서명 %NOTFOUN 등 LOOP 식으로
CLOSE 커서명: 커서를 닫기 위해서 사용

  • 명시적 커서의 속성

    • %TSOPEN :TRUF, FALSE
    • %FOUND : NULL, TRUE, FALSE, INVALID_CURSOR
    • %NOTFOUND: NULL, FALSE, TRUE INVALID_CURSOR
    • %ROWCOUNT: INVLID_CURSOR
  • 암묵적 커서 사용

  • 명시적 커서
    필요한 데이터를 추출하는 것을 커서로 한다.
    변수를 선언하는 것이 declare

  • 명시적 커서를 재사용

TRIGGER

쿼리에서 어느 지정한 조건이 만족되면 연관된 다른 쿼리 이벤트를 발생시키는 것을 말함, SQL 실행 시기를 기준으로 before 트리거, atfer 트리거
실행 시 영향 받는 곳을 기준으로 row트리거
statment 트리거

트리거는 트랜잭션 제어문에서 사용할 수 없고, 문장의 실행 부분으로써 실행되므로 트리거링 문장과 같은 트랜잭션에 있다고 볼 수 있음
트리거링 문장이 commit, rollback 되면 트리거 작업도 commit, rollback

트리거는 데이터의 무결성을 보장하기위해서 제약조건 설정의 보조 역할을 하기도 함
제약조건의 위배가 되게 만들때에도 트리거를 사용

트리거 변수 선언 시 DECLARE 변수 선언 뒤 ; 으로 끝
트리거 구문은 보통
creat or replace trigger 트리거 명
작업이 끝난 뒤에 메시지
트리거는 단독으로 사용할 수 없고, 작업이 끝난 후 완료 될 때


for each row : 반복문 처리


profile
공부일지,

0개의 댓글