본문 바로가기
TOPCIT

DB - VIEW, DCL

by suhsein 2024. 11. 12.
728x90

👁️‍🗨️DataBase VIEW

View의 개념

💡 뷰는 데이터베이스에서 하나 이상의 릴레이션으로부터 유도된 물리적으로 존재하지 않는 논리적 가상 테이블이다

WITH CHECK OPTION

뷰 생성 시 WITCH CHECK OPTION을 사용할 경우 뷰 생성 조건에 해당하는 데이터에 대해서만 INSERT, UPDATE, DELETE가 가능하도록 제한한다


DCL(DATA CONTROL LANGUAGE)

COMMIT

하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 끝났다라는 것을 알려주기 위해 사용하는 연산

ROLLBACK

하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시킨다.

GRANT

권한 부여 명령어

※ 주의 ※
DB마다 명령어의 차이가 있음. MySQL의 경우 WITH GRANT OPTION 명령어만 존재한다.
아래 설명은 Oracle 기준.

1. 시스템 권한(System Privileges) 부여

시스템 권한은 사용자가 데이터베이스에 특정 작업을 수행할 수 있도록 한다
사용자에게 시스템 권한 부여

GRANT 시스템 권한명[,시스템 권한명 … | 롤명]
TO 유저명[, 유저명 … | 롤명 … | PUBLIC] [WITH ADMIN OPTION];

  • 설명

    • 시스템 권한명 : 부여할 시스템 권한의 이름

    • 롤명 : 권한을 부여할 또는 권한을 받을 롤(Role)의 이름

    • 유저명 : 권한을 부여받을 유저(User) 이름

    • PUBLIC : 시스템 권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다

    • WITH ADMIN OPTION : 사용시 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게 된다

    • ⚠️객체 권한 부여의 WITH GRANT OPTION과 달리 권한 회수 시 연쇄적인 회수(종속철회)가 일어나지 않는다

2. 객체 권한(Object Privileges) 부여

객체 권한은 사용자가 소유하고 있는 특정 객체를 다른 사용자들이 접근하거나 조작할 수 있도록 한다

GRANT [ 객체 권한명 ] -- 컬럼
ON [ 객체명 ]
TO { 유저명 | 롤명 | PUBLIC } [WITH GRANT OPTION];

  • 설명

    • 객체 권한명 : 객체에 사용 가능한 권한

    • 컬럼명 : 만약 ON절의 object가 Table이나 View일 경우 사용

    • ON 객체명 : Table, View, Sequence, Procedure 등

    • TO { 유저명 | 롤명 | PUBLIC } : 사용자를 일일이 나열할 수도 있고, ROLE에 소속된 사용자가 될 수도 있다. PUBLIC = 모든 사용자

    • ⚠️PUBLIC으로 객체 권한 부여 시 PUBLIC으로 회수해야 한다

    • WITH GRANT OPTION : 사용시 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할 부여할 수 있게 된다.

    • ⚠️WITH GRANT OPTION으로 부여한 권한 회수 시 연쇄적인 회수(종속철회)가 일어난다

REVOKE

권한 회수 명령어

1. 시스템 권한(System Privileges) 회수

사용자로부터 시스템 권한 회수

💡 REVOKE 시스템 권한명[, 시스템 권한명 … | 롤명]

FROM 유저명[, 유저명 … | 롤명 … | PUBLIC];

2. 객체 권한(Object Privileges) 회수

사용자로부터 객체 권한 회수

💡 REVOKE { 권한명 [, 권한명 … ] | ALL }
ON 객체명
FROM { 유저명 [, 유저명 …] | 롤명 | PUBLIC }
[CASCADE CONSTRAINTS];

CASCADE CONSTRAINTS : 사용 시 참조 객체 권한에서 사용된 참조 무결성 제약을 같이 삭제할 수 있다

728x90