ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (6) - DCL & TCL
    자격증/SQLD (SQL 개발자) 2021. 5. 5. 21:26
    728x90
    반응형

     

    SQLD 요약 / SQL Developer 요약

    🔑 DCL/ GRANT/ WITH GRANT OPTION/ ROLLBACK/ TCL/ COMMIT/ ROLLBACK/ SAVEPOINT

     

    II. SQL 기본 및 활용

       01. SQL 기본

              [1] 관계형 데이터베이스

              [2] SQL 종류

              [3] DDL (Data Definition Language)

              [4] DML (Data Manipulation Language)

              [5] WHERE문 사용

              [6] GROUP 연산

              [7] SELECT문 실행 순서

              [8] 명시적 형변환과 암시적 형변환

              [9] 내장형 함수 (BUILT-IN Function)

              [10] DECODE와 CASE문

              [11] ROWNUM과 ROWID

              [12] WITH 구문

              [13] DCL (Data Control Language)

              [14] TCL (Transaction Control Language)

     

     



     

    01. SQL 기본

     

    [13] DCL (Data Control Language) - GRANT, REVOKE

    (1) GRANT | 데이터베이스 사용자에게 권한 부여

    • 데이터베이스 사용을 위해서, 사용자에게 권한이 필요함
    • 연결, 입력, 수정, 삭제, 조회 권한을 부여할 수 있음

     

    • GRANT문
    GRANT privileges ON object TO user;
    privileges object user
    권한 테이블명 Oracle 데이터베이스 사용자 지정

     

     

    • 권한 (Privileges)
    권한 설명 권한 설명
    SELECT 테이블에 대해 조회 권한 부여 REFERENCES 테이블을 참조하는 제약조건을 생성하는 권한 부여
    INSERT 테이블에 대해 입력 권한 부여 ALTER 테이블을 수정할 수 있는 권한 부여
    UPDATE 테이블에 대해 수정 권한 부여 INDEX 테이블의 인덱스를 생성할 수 있는 권한 부여
    DELETE 테이블에 대해 삭제 권한 부여 ALL 테이블에 대한 모든 권한 부여

     

     

    • WITH GRANT OPTION
    GRANT 옵션 부여 권한 예시
    WITH GRANT OPTION 특정 사용자에게
    권한을 부여할 수 있는 권한을 부여함
    A사용자가 B에게 부여 → B가 다시 C에게 부여
    → 권한을 취소(Revoke)하면 → 모든 권한 회수
    WITH ADMIN OPTION 지정된 테이블에 대한
    모든 권한을 부여함
    A사용자가 B에게 부여 → B가 다시 C에게 부여
    → 권한 취소 → B사용자의 권한만 취소
    # WITH GRANT OPTION
    # 권한을 부여할 수 있는 권한을 부여한다!
    GRANT SELECT, INSERT, UPDATE, DELETE
       ON STUDENT
       TO STD1001 WITH GRANT OPRION;

     

     

    (2) REVOKE | 권한 회수

    • REVOKE: 데이터베이스 사용자에게 부여된 권한을 회수함
    • REVOKE privileges ON object FROM user;

     


     

    [14] TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT

     

    COMMIT 과정

     

     

    (1) COMMIT | DML문으로 변경한 데이터를 데이터베이스에 반영

    • COMMIT을 통해, INSERT, UPDATE, DELETE문으로 변경한 데이터를 데이터베이스에 반영함

    • 트랜잭션 시작 - Oracle 데이터베이스의 암시적 트랜잭션 관리
    • 트랜잭션 종료 - 데이터베이스 사용자가 COMMIT 혹은 ROLLBACK으로 처리
    COMMIT: 변경한 데이터를 저장 및 반영 COMMIT 완료 후 다른 데이터베이스 사용자
    - COMMIT을 실행하면, 하나의 트랜잭션 과정을 종료함 - COMMIT 완료 후, 데이터베이스 변경으로 인한 LOCK이 해제됨
    - 트랜잭션 과정 동안, 변경 전후의 데이터를 보관함 - 다른 모든 사용자는 변경된 데이터를 볼 수 있음
    - COMMIT이 완료되면, 변경 의 데이터를 저장함 - 다른 모든 사용자는 변경된 데이터를 조작할 수 있음
    - 데이터베이스에 저장되면, 변경 데이터를 잃어버림 - DCL, DDL을 사용하는 경우 자동 COMMIT

     

     

    (2) ROLLBACK | DML문으로 변경한 사항을 모두 취소 & 트랜잭션 종료

     

    (3) SAVEPOINT | 저장점

    ROLLBACK: 변경사항 취소 SAVEPOINT: 저장점 지정
    - 데이터에 대한 변경 사용을 모두 취소하고, 트랜잭션을 종료함 - 트랜잭션을 작게 분할하여 관리함
    - INSERT, UPDATE, DELETE문으로 데이터 변경한 작업 모두 취소 - 지정된 위치 이후의 트랜잭션만 ROLLBACK 가능
    - 이전에 COMMIT한 곳까지만 복구함 - SAVEPOINT <SAVEPOINT명> : 저장점 지정
    - ROLLBACK ; → UNLOCK & 다른 사용자도 조작 가능 - ROLLBACK TO <SAVEPOINT명> : 지정된 곳까지만 취소
    SAVEPOINT T1;
    
    INSERT INTO STUDENT VALUES(10, 20);
    SAVEPOINT T2;
    
    INSERT INTO STUDENT VALUES(20, 30);
    ROLLBACK TO T2;
    
    COMMIT;
    SELECT * FROM STUDENT;
    
    # 위 SQL문 실행 후 조회되는 행은
    # 10, 20 이 입력된 행 1개!

     


     

    참고도서: SQL 개발자 이론서+기출문제_이기적, 2020

     

    728x90
    반응형