본문 바로가기
DB/DBMS

DBMS - DCL

by 코딩하는 랄로 2023. 8. 17.
728x90

DCL이란

DCL = DATA CONTROL LANGUAGE = 데이터 제어어

DCL은 데이터 제어어로서 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어이다. 예를 들어 신입사원이 들어와 데이터베이스에 접근해서 수정하는 권한을 부여하고 싶을 때, 또는 잘못 부여한 권한을 회수할 때 사용한다.

 

  • GRANT : GRANT [부여할 권한] TO [권할을 부여 받을 사용자];
  • REVOKE : REVOKE [회수할 권한] FROM [권한을 회수당할 사용자];

 

DCL을 사용할 때 주의할 점은, 누가 권한을 줄 수 있느냐이다. 만약 새로운 사용자가 USER로 등록되었다면, SYS 또는 SYSTEM 사용자가 데이터베이스에 대한 권한을 줄 수 있다.

 

하지만 다른 계정에 있는 TABLE을 복사해오고 싶을 때는 해당 TABLE을 소유하고 있는 계정에게 권한을 부여 받아야 하는 것이다. 이 때에 사용하는 문법은 다음과 같다.

GRANT [부여할권한] ON [해당 테이블] TO [해당 테이블에 대한 권한을 받을 계정];

 

 

 

ROLE

Oracle에는 200여개가 넘는 권한이 존재한다. 이런 권한을 계정을 생성할 때마다 권한을 하나 하나 부여하기란 쉽지 않은 일이다.(기억하기도 쉽지 않다.) 이럴 때 사용할 수 있는 문법이 ROLE이다.

 

ROLE은 권한이 모여있는 상태로, 권한을 한꺼번에 줄 때 사용하는 문법이다. 

  • CONNECT 롤: 사용자에게 SESSION을 만들 수 있는 권한을 담은 롤이다. 그러므로 해당 롤을 부여받은 사용자는 DB안에 본인의 세션을 생성 가능하므로 '접속'이 가능해진다.
  • RESOURCE 롤 : TABLE, TRIGGER, PROCEDURE와 같은 객체를 생성하고 관리할 수 있는 권한을 담을 롤이다. 해당 롤을 부여 받은 사용자는 객체를 생성하고 관리(CRUD)할 수 있다.
  • DBA 롤 : 시스템 및 객체 관리에 모든 권한을 갖고 있는 롤이다. 해당 롤을 부여받으면 사용자는 데이터베이스 관리자 권한을 획득한다.

위의 모든 권한을 부여받게 된다면, 사실상 admin이나 다름없는 사용자가 되는 것이다. 롤을 부여할 때에는 GRANT 문법과 똑같이 사용하면 된다.

GRANT [ROLE] TO [부여할계정];

 

 

 

AS

AS는 DML에서 사용이 되면 ALIAS, 별칭을 뜻하지만 DDL의 CREATE 문에서 사용되면 테이블을 복사할 수 있는 문법으로 사용이 된다.

CREATE TABLE [NEW_TABLE] AS SELECT COL1, ... FROM [OLD_TABLE] WHERE ...;

이 때, 테이블의 데이터가 아닌 구조만 복사하고 싶을 때는 WHERE절에 참이 아닌 조건을 삽입하면 된다.

 

다른 테이블에서 데이터만 복사해오고 싶을 때에는 INSERT INTO문장을 활용하여 복사해오면 된다.

-- 테이블 구조가 동일
INSERT INTO [NEW_TABLE] SELECT * FROM [OLD_TABLE][WHERE절];

-- 테이블 구조가 다름
INSERT INTO [NEW_TABLE](COL1, COL2, ...) 
SELECT COL1, COL2, ... FROM [OLD_TABLE];

 

테이블의 구조, 데이터, 설정 키 등 모두 복사해오고 싶으면 LIKE문을 이용하여 구조 및 설정 키를 복사하고 INSERT INTO를 통해 데이터를 복사한다.

-- 구조, 설정키 복사
CREATE TABLE [NEW_TABLE] LIKE [OLD_TABLE];
-- 데이터 복사
INSERT INTO [NEW_TABLE] SELECT * FROM [OLD_TABLE];

 

 

 

2023.08.17 - [Programming 공부/DBMS] - DBMS - VIEW

 

DBMS - VIEW

VIEW란 DBMS에서 VIEW는 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블이다. 실무에서 많이 사용하는 문법 중 하나이다. 가

codingralro.tistory.com

 

728x90

'DB > DBMS' 카테고리의 다른 글

DBMS - 프로시저(Procedure)  (0) 2023.08.20
DBMS - VIEW  (0) 2023.08.17
DBMS - JOIN  (0) 2023.08.17
DBMS - Optimizer, Hint  (0) 2023.08.15
DBMS - GRUOP BY, SUB QUERY  (0) 2023.08.15