본문 바로가기

DBMS

[DBMS] 16

DCL(Data Control Language)

- 데이터 제어어

- A라는 계정의 테이블에 DML을 사용하기 위해서는 A 계정에게 권한을 부여받아야 한다.

DCL 종류

1. GRANT : 권한 부여

- GRANT 권한명(ROLE 이름), 권한명2, ... TO 계정명

'scott' 계정에게 유저 생성 권한 부여
'baby' 계정에게 session 생성 권한 부여
'baby' 계정에게 table 생성 권한 부여

2. REVOKE : 권한 강탈

- REVOKE 권한명(ROLE 이름) FROM 계정명

'scott' 계정의 유저 생성 권한 강탈

 

3. ROLE

- 권한이 뭉쳐 있는(모여 있는) 상태

- 종류 : CONNECT, RESOURCE, DBA

- connect 사용

connect에 포함된 모든 권한이 flower에 적용됨

 

※ 다른 계정의 테이블 복사

- as : as 뒤의 select로 가져온 테이블의 모든 정보를 가져온다.

(ex) scott 테이블에서 SALGRADE를 복사한 후 GRADE 컬럼명을 LEVEL로 변경, 값을 반대로 바꾸기

※ cmd에서 flower 테이블에게 salgrade 검색 권한 부여 후 진행

1. scott 테이블에서 SALGRADE를 복사한 후

CREATE TABLE SALGRADE AS SELECT * FROM SCOTT.SALGRADE;

 

 

2. GRADE 컬럼명을 LEVEL로 변경

ALTER TABLE SALGRADE RENAME COLUMN GRADE TO "LEVEL";

 

 

3. 값을 반대로 바꾸기(5 --> 1, ..., 1 --> 5)

UPDATE SALGRADE
SET "LEVEL" = 6 - "LEVEL";

 

※ 다른 계정에서 가져온 테이블 수정

1. conn hr/hr

- hr 계정 로그인

2. grant update on emp to baby;

- baby 계정에게 emp 테이블의 수정 권한 부여

3. conn baby/baby

- baby 계정 로그인

4. update copy_emp set sal = 1000 where ename = 'SMITH';

- 'SMITH'의 'sal'을 1000으로 수정

5. commit

※ 전체 플로우

1. 계정 생성

2. tablespace 생성

3. 기존 계정과 생성한 tablespace 연동

4. 권한 주기

5. 테이블 생성 후 [DDL/DML/DCL] 사용

'DBMS' 카테고리의 다른 글

[DBMS] 18  (0) 2021.11.13
[DBMS] 17  (0) 2021.11.11
[DBMS] 15  (0) 2021.11.08
[DBMS] 14  (0) 2021.11.07
[DBMS] 13  (0) 2021.11.06