본문 바로가기

Learning/SQL

DCL: 데이터 제어어

<DCL: 데이터 제어어>

 

  • DCL: DATA CONTROL LANGUAGE 데이터 제어 언어

  • 데이터의 사용권한을 관리

  • GRANT: 특정 사용자에게 수행 권한을 부여

  • REVOKE: 특정 사용자에게 수행 권한을 회수 및 박탈

 


 

  • 새 유저 만들기

1
CREATE USER John Identified by 1234
--새유저 존을 만들고 비밀번호 1234
cs

 

 

 

HR 계정에서 나오고 Oracle-XE로 연결

 

 

 

데이터베이스 접속 선택 시 접속권한이 없어서 실패함

 

 

 


 

 

  • 접속 권한 주기

 

1
2
GRANT CREATE SESSION TO John; 
--John 유저에게 접속 권한 주기
cs

 

 

 

 

존 계정으로 접속 성공

 

 

 

 


  • 테이블 생성

 

 

CREATE TABLE t1 (

    id NUMBER PRIMARY KEY

);

 

1
2
3
CREATE TABLE t1 (
    id NUMBER PRIMARY KEY
);
cs

 

 

테이블을 만들수 있는 권한도 따로 필요함

 

 


 

  • 테이블 생성 권한 부여

 

 

1
GRANT CREATE TABLE TO John;
cs

 

 

 

존계정에서 테이블이 안만들어짐

 

 

 

 

테이블 스페이스 생성 필요

 

경로복사

 

 

 


 

  • 테이블 스페이스 (테이블을 저장할 수 있는 공간)

1
2
3
4
5
6
CREATE TABLESPACE johnSpace
DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\john.dbf' SIZE 10M
AUTOEXTEND ON NEXT 5M;
--johnSpace라는 테이블 저장공간 생성 (테이블 스페이스)
--파일의 경로 설정, 최초사이즈는 10mbyte
--자동으로 테이블공간이 부족하면 5mbyte씩 추가됨
cs

 

 

 

 

 

  • 존계정이 이 테이블스페이스를 사용할 수 있도록

1
2
3
4
ALTER USER John DEFAULT TABLESPACE johnSpace;
--디폴트 존스페이스로
ALTER USER John QUOTA UNLIMITED ON johnSpace;
--테이블 스페이스 사용권한
cs

 



 

 

 


  • 롤(ROLE) 부여

 

1
2
3
GRANT CONNECT, RESOURCE to John;
--Connect 롤은 접속관련 권한들의 모음
--Resource 롤은 여러객체들(테이블, 뷰등)을 생성및 사용 권한
cs

 

 

 

 

1
2
3
4
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
 
SELECT * FROM t1;
cs

 

 

 

  • DBA: 관리자 권한

 


 

  • 권한을 제거 및 회수 REVOKE + 권한 + FROM + 유저

 

1
REVOKE CREATE TABLE FROM John;
cs

 

 

 

 

 

1
2
3
CREATE TABLE t2 (
    id NUMBER PRIMARY KEY
);
cs

 

John은 더이상 테이블을 만들 수 있는 권한이 없기에 에러 발생

 

 

 


 

  • 롤을 제거 및 회수

1
REVOKE RESOURCE FROM John;
cs

 

 


 

  • John 계정을 삭제

1
DROP USER John CASCADE;
cs

 

 

 


 

  • 테이블스페이스 삭제

1
DROP TABLESPACE johnSpace;
cs

 

'Learning > SQL' 카테고리의 다른 글

JDBC INSERT  (0) 2020.06.23
JDBC Test  (0) 2020.06.23
시퀀스  (0) 2020.06.23
인덱스  (0) 2020.06.22
  (0) 2020.06.22