2020년/정처기

[2020 정보처리기사 실기] Section 08.SQL 응용(DCL)

위지원 2020. 4. 28. 17:52

이전글

2020/04/28 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 08. SQL 응용(DDL)

SQL DCL

 

1.DCL(Data Control Language, 데이터 제어어)

데이터의 보안, 무결성등을 정의하는데 사용하는 언어

GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT등

 

  • GRANT/ REVOKE

사용자 권한 부여(GRANT:부여,REVOKE:취소)

사용자 등급 지정 및 해제

GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;

@EXAMPLE

GRANT RESOURCE TO JIWON;
GRANT CONNECT TO JIWON;

*등급
DBA : 관리자
RESOURCE : 데이터베이스 및 테이블 생성 가능자
CONNECT : 단순 사용자



테이블 및 속성에 대한 권한 부여 및 취소

GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE[GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자[CASCADE];

*WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여
*GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소

*권한 리스트 : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER등

#EXAMPLE

GRANT ALL ON 고객 TO JIWON WITH GRANT OPTION;
REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM JIWON;

 

  • COMMIT

트랜잭션이 성공적으로 끝나면 데이터베이스가 새로운 일관성상태를 가지기 위해 반영해야함

*Auto Commit:성공하면 Commit 실패하면 Rollback 자동

  • Oracle:
    • set autocommit on;
    • set autocommit off;
    • show autocommit;
  • MySql
    • set autocommit = true;
    • set autocommit = false;
    • select @@autocomit;

 

  • SAVEPOINT

트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어

<사원>
사원번호 | 이름 |부서
10       |위지원|기획부
20       |위지투|인사부
30       |위지쓰|재무부
40       |위지포|영업부

DELETE * FROM 사원 WHERE 사원번호=40;
COMMIT;

10       |위지원|기획부
20       |위지투|인사부
30       |위지쓰|재무부

DELETE * FROM 사원 WHERE 사원번호=30;

10       |위지원|기획부
20       |위지투|인사부


SAVEPOINT S1;
DELETE * FROM 사원 WHERE 사원번호=20;

<사원>
사원번호 | 이름 |부서
10       |위지원|기획부

SAVEPOINT S2;
DELETE * FROM 사원 WHERE 사원번호=10;

<사원>
아무것도없지롱

ROLLBACK TO S2;

<사원>
사원번호 | 이름 |부서
10       |위지원|기획부

ROLLBACK TO S1;

<사원>
사원번호 | 이름 |부서
10       |위지원|기획부
20       |위지투|인사부

ROLLBACK

<사원>
사원번호 | 이름 |부서
10       |위지원|기획부
20       |위지투|인사부
30       |위지쓰|재무부
**위지포를 삭제하고서 COMMIT을 했기때문에 위지쓰까지만 ROLLBACK

다음글

2020/04/28 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기]Section 08. SQL 응용(SELECT)