본문 바로가기

카테고리 없음

DCL (Data Control Language)

DCL (Data Control Language)

  • grant: 사용자 계정에 대한 권한을 주는 구문 
  • revoke: 사용자 계정에 대한 권한을 회수하는 구문
  • commit: insert,update,delete 대한 데이터베이스에 실제 반영해주는 구문
  • rollback: insert,update,delete 대한 복구

 

계정 생성

  • create user '아이디'@'ip' identified by '비밀번호';

 

create user 'karns'@'%' identified by '1234';
select * from user;

 

 

 

권한

  • 권한 주기 (grant)
#권한 주기
grant select,insert,delete,update,create,alter,drop on *.* to 'karns'@'%';
select * from user;

# grant 제외한 모든 권한 주기
grant all privileges on *.* to 'karns'@'%';
select * from user;

 

  • 권한 회수 (revoke)
revoke select,insert,delete,update,create,alter,drop on *.* from 'karns'@'%'; 
select * from user;

 

 

 

계정 생성

  • drop
drop user 'karns'@'%';
select * from user;


# 오토커밋 해제
select @@autocommit;
set autocommit = 0; 


use shop; #데이터 베이스 선택하는거
select * from tb_user;
delete from tb_user
where user_id = 4;

# 복구하기
select * from tb_user;
rollback; 

select * from tb_user;


# 오토커밋 활성화
set autocommit = 1; 
select @@autocommit;

delete from tb_user
where user_id = 4;

select * from tb_user;
rollback; # 복구 안됨
select * from tb_user;

 

오토커밋이 뭔데 ㅋㅋㅋ 알려줘야할꺼 아님

자동으로 commit을 해주는거

 

 

commit

  • 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어
  • 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장함
  • 수행 과정
    • commit을 수행하면, 하나의 트랜젝션 과정을 종료함
    • TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 실제 DB에 저장
    • 이전 데이터 UPDATE
    • 모든 사용자가 변경한 데이터의 결과 관측

 

 

autocommit

  • DB 기본 설정에서 자동을 commit을 해줌
 

 

rollback

  • 문제 발생시, 데이터 작업을 다시 이전의 상태로 돌리는 것
  • TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 취소
  • 이전 COMMIT한 곳까지만 복구
  • 하나의 논리적인 작업 단위로 구성하기 (문제가 발생하면, 논리적인 작업의 단위를 모두 취소할려고)

 

실서버에서 주의할 점

commit이 되고 나면 데이터 복구가 어렵기 때문에 주의
항상 트랜잭션을 걸고 DB 작업을 사용 (실수 오류 터짐 예방)