상세 컨텐츠

본문 제목

[정보처리기사 실기 공부] SQL 기본 문법과 종류 (2)

정보처리기사 공부지식

by 소란한소란 2024. 5. 1. 19:30

본문

728x90

데이터베이스의 DCL과 TCL 이해하기

데이터베이스 관리에서 중요한 두 가지 언어, DCL(Data Control Language)과 TCL(Transaction Control Language)에 대해 자세히 알아보겠습니다. 이 두 언어는 데이터베이스 사용자의 권한을 제어하고, 트랜잭션을 안전하게 관리하는 데 필수적입니다.


DCL: 데이터 제어어

  • 개념
    • 데이터베이스의 보안과 질서를 유지하기 위해 사용자 권한을 관리하는 것이 필요합니다. 이를 위해 DCL 명령어들이 사용됩니다. 대표적인 DCL 명령어는 GRANT와 REVOKE입니다.

 

  • GRANT: 사용자에게 특정 데이터에 대한 접근 권한을 부여합니다. 예를 들어, 한 사용자가 특정 테이블에서 데이터를 조회할 수 있는 권한을 부여받거나, 데이터를 수정할 권한을 가질 수 있습니다.
    • 예시: GRANT SELECT ON 테이블명 TO 사용자명;
    • 이를 통해 특정 사용자가 필요한 데이터에만 접근할 수 있도록 제한할 수 있습니다.
GRANT SELECT ON sales TO user123;

 

  • REVOKE: 사용자로부터 특정 권한을 회수합니다. 사용자의 역할이 변경되었거나 특정 데이터에 대한 접근 권한이 더 이상 필요하지 않을 때 사용됩니다.
    • 예시: REVOKE SELECT ON 테이블명 FROM 사용자명;
    • 권한을 회수함으로써 데이터의 안전성을 보장하고, 불필요한 데이터 접근을 제한할 수 있습니다.
REVOKE SELECT ON sales FROM user123;

TCL: 트랜잭션 제어어

  • 개념
    • 데이터베이스의 트랜잭션 관리는 매우 중요한 부분입니다. 이를 통해 데이터의 일관성과 정확성을 보장할 수 있습니다. TCL은 주로 COMMIT, ROLLBACK, 그리고 SAVEPOINT 명령어를 포함합니다.

 

  • COMMIT: 데이터베이스의 변경 사항을 확정하고, 이를 저장소에 반영합니다. 이는 모든 작업이 정상적으로 완료되었을 때 사용됩니다.
    • 예시: 데이터 입력, 수정, 삭제 작업 후 COMMIT 명령을 실행하여 변경사항을 확정합니다.
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

 

  • ROLLBACK: 작업 중 발생한 모든 변경 사항을 취소하고, 데이터베이스를 이전 상태로 복구합니다. 오류 발생 시 데이터를 안전하게 보호할 수 있습니다.
    • 예시: 문제가 발생한 경우 ROLLBACK 을 실행하여 이전 상태로 되돌립니다.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- 여기서 어떤 문제가 발견되었다고 가정
ROLLBACK;

 

  • SAVEPOINT: 트랜잭션 중 특정 지점에 마크를 해두고, 필요 시 그 지점까지만 롤백할 수 있습니다. 이는 복잡한 트랜잭션 중에 부분적인 오류를 관리하는 데 유용합니다.
    • 예시: SAVEPOINT savepoint_name 을 설정하고, 문제 발생 시 ROLLBACK TO savepoint_name 을 실행하여 해당 지점까지만 롤백합니다.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
SAVEPOINT sp1;
UPDATE accounts SET balance = balance + 50 WHERE id = 2;
-- 문제 발생
ROLLBACK TO sp1;

COMMIT;

 

여기서는 'id = 2'의 계좌 변경 사항만 취소되고, 'id = 1'의 계좌 변경 사항은 그대로 유지되어 최종적으로 커밋됩니다.


이 포스트를 통해 DCL과 TCL의 기본적인 개념과 사용 방법을 이해하고, 실제 데이터베이스 관리에 활용할 수 있기를 바랍니다. 데이터베이스의 안전성과 효율성을 높이는 것은 이러한 명령어들의 정확한 사용에서 시작됩니다. 2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!

 

728x90

관련글 더보기