<Database>DCL

이제내손을java...·2024년 3월 21일

Database 개념정리

목록 보기
9/11

안녕하세요 오늘은 DATABASE DCL에 대한 정리입니다!
점점 머리가 복잡해지고있지만 ㅜㅜ 잘 견뎌내봐야겠지요 ..🥲🫡
DCL 정리를 시작하겠습니다!

DCL

DATA CONTROL LANGUAGE
사용자에 대한 권한설정 내용을 말한다.

사용자계정에 권한을 부여, 회수하는 명령어

GRANT

권한이나 ROLE 부여하는 명령어이다.

  • 표현법
 GRANT 권한명/ROLE명.권한명/ROLE명, 권한명 ON 테이블 사용자계정명

REVOKE

부여된 권한/ ROLE을 회수하는 명령어이다.

  • 표현법
REVOKE 권한명/ROLE형,권한명 ON 테이블명 FROM 사용자계정

권한/ROLE이란 ?

권한 : SELECT, INSERT, UPDATE, DELETE, CREATE VIEW....(권한을 주는 계정은 무조건 관리자 계정)
ROLE(역할) : 다수의 권한을 특정이름으로 묶어서 표현

✔️ 관리자계정은 어디든 다 접근할 수 있다

  • 관리자 계정에서 BS계정의 EMPLOYEE테이블을 조회하고 데이터를 저장하기
SELECT* FROM BS.EMPLOYEE; -- 앞에 BS.을 붙여서 조회해야함
SELECT* FROM MJ.TEST1;
INSERT INTO MJ.TEST1 VALUES('TEST',19);

새로운 계정 생성(QWER)

  1. 세선정보를 바꿔줘야한다.
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
  1. 계정을 생성한다.
CREATE USER QWER IDENTIFIED BY QWER DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
SELECT* FROM DBA_USERS;

CONNECT, RESOURCE은 -> ROLE이다.

SELECT*FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURSE';
SELECT*FROM DBA_SYS_PRIVS WHERE GRANTEE='CONNECT';
  • QWER 접속
SELECT* FROM TAB;
SELECT* FROM BS.EMPLOYEE; -- 조회 안됨

🔒 QWER은 조회기능이 부여되지 않았음

  • 관리자계정 실행
GRANT SELECT ON BS.EMPLOYEE TO QWER; 

🔓 QWER에게 BS.EMPLOYEE 조회권한을 부여

SELECT* FROM BS.EMPLOYEE; --조회 OK
  • 만약 수정이나 추가 권한을 부여해야한다면 ?
GRANT INSERT BS.EMPLOYEE TO QWER; 

🔓 추가 입력 권한부여

🔒 권한 회수(관리자 계정에서)

  • QWER에게 줬던 권한을 다시 회수함
REVOKE INSERT ON BS.EMPLOYEE FROM QWER;

ROLE 생성하기

CREATE ROLE MYROLE;
GRANT CREATE TABLE, CREATE VIEW TO MYROLE;
SELECT*FROM DBA_SYS_PRIVS WHERE GRANTEE='MYROLE';

➡️ MYROLE을 관리할 수 있는 권한을 줌

TCL트렌젝션을 제어하는 명령어

COMMIT,ROLLBACK

트렌젝션 : 하나의 작업 단위

  • 프로그램으로 봤을 때 한개의 서비스를 말함
  • DATA(ROW)를 수정하는 INSERT,UPDATE,DELETE세개를 묶어서 작업단위로 관리가 가능하다.
  • EMP_DEPT 테이블에 레코드를 추가하고, DEPT_ID가 'D1'인 레코드를 삭제한 후, 최종적으로 TEMP_DEPT 테이블의 모든 레코드를 출력⤵️
INSERT INTO BS.TEMP_DEPT VALUES('D9','TRAN','90');
DELETE FROM BS.TMEP_DEPT WHERE DEPT_ID='D1';
SELECT*FROM BS.TEMP_DEPT;

➡️이 세션에서는 보이지만 다른 세션에서는 보이지 않음
COMMIT; 을 해줘야 다른세션에서도 보이게 할 수 있음(최종 저장)의 느낌

0개의 댓글