[2권] 8장. SQL 응용

jyoon·2021년 3월 31일
0

[DML]

( 책보면서 이해해야 하는 파트)
SELECT 검색 / INSERT 삽입 / DELETE 삭제 / UPDATE 내용변경

SELECT ~ FROM ~ WHERE ~
INSERT ~ INTO ~ VALUES ~
DELETE ~ FROM ~ WHERE ~
UPDATE ~ SET ~ WHERE ~

[프로시저]

절차형 SQL을 활용해 특정 기능을 수행하는 트랜잭션 언어, 미리 저장해 놓은 SQL 작업을 수행
프로시저를 만들어 DB에 저장하면 여러 프로그램에서 호출이 가능
스토어드 프로시저라고 불림

DECLARE / BEGIN / END

프로시저 생성 : CREATE PRODUCTURE 프로시저 명
프로시저 실행 : EXECUTE / EXEC / CALL
프로시저 제거 : DROP

[트리거]

DB시스템에서 삽입,갱신,삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

목적 : 데이터 변셩 및 무결성유지, 로그메세지 출력 등

트리거 구문에는 DCL사용 X, DCL이 포함되어 있어도 오류발생
오류가 있는 경우 데이터 안에도 영향을 끼쳐 트리거 생성시 주의

DECLARE / EVENT / BSGIN / END

트리거 생성 : CREATE TRIGGER 트리거명 ON
트리거 제거 : DROP

[사용자 정의 함수]

프로시저와 유사하게 SQL을 사용해 일련의 작업을 연속적으로 처리, 종료 시 결과를 단일값으로 반환하는 절차형 SQL
DB에 저장되어 DML문의 호출에 의해 실행, 예약어 RETURN을 통해 값을 반환하기 때문에 출력파라미터가 없음
INSERT, DELETE, UPDATE 를 통한 테이블 조작은 불가능하고 SELECT를 통한 조회만 가능
프로시저 호출 X

프로시저 vs 사용자 정의함수 비교 !!!(책에서 적기)


DECLARE / BEGIN / RETURN / END

사용자 정의 함수 생성 : CREATE FUNCTION
사용자 정의 함수 제거 : DROP

[제어문]

진행 순서를 변경하기 위해 사용하는 명령문

  1. IF
    조건에 따라 실행할 문장을 달리하는 제어문
  2. LOOP
    조건에 따라 실행할 문장을 반복 수행하는 제어문
    FOR LOOP : 초기값 부터 종료값 까지 1씩 증가하면서 실행할 문장을 반복
    WHILE LOOP : 조건이 참인 동안 실행할 문장을 반복수행
  3. CONTINUE : 반복문의 실행을 제어하기 위해 사용
    CONTINUE 이후의 문장은 실행하지 않고 제어를 반복문의 처음으로 옮김
  4. GOTO
    원하는 위치로 이동해 명령문을 수행하기 위해 사용
    많이 사용시 유지보수가 어려워 사용 X

[커서]

쿼리문의 결과가 저장되어있는 메모리 공간을 가리키는 포인터
열기(Open), 패치(Fetch), 닫기(Close)

  1. 묵시적 커서
    내부에서 자동으로 생성, 각 단계가 자동으로 수행, 수행된 커리문의 정상적인 수행 여부를 확인하기 위해 사용
    DBMS 자체적으로 열리고(Open) 패치(Fetch)되어 사용이 끝나면 닫히지만(Close) 커서의 속성을 조회하여 사용된 쿼리정보를 열람하는것이 가능

SQL%FOUND - 쿼리 수행의 결과로 패치된 튜플 수가 1개 이상이면 TRUE
SQL%NOTFOUND - 쿼리 수행의 결과로 패치된 튜플 수가 0개이면 TRUE
SQL%ROECOUNT - 쿼리 수행의 결과로 패치된 튜플수 반환
SQL%ISOPEN - 커서가 열린 상태이면 T, 묵시적은 자동생성후 닫히기 때문에 항상 F

  1. 명시적 커서
    사용자가 직접 정의, 직접 구현, 쿼리문의 결과를 저장해 사용하므로 동일한 쿼리가 반복되어 DB자원 낭비를 방지
    절차형 SQL에서 결과로 반환되는 여러 튜플들을 제어하기위해 사용
    열기-패치-닫기 순으로 이뤄지고 명시적으로 사용하기 위해서는 열기전에 선언(Declare)를 해야함

0개의 댓글