앞서 권한 부여로 만든 표는 다음 위치에서 확인할 수 있다.
처음에는 어떠한 정보도 없어 텅 빈 화면만이 존재하는데,
여기에 정보를 넣는 방식은 다음과 같다.
INSERT INTO player(id,name,position,teamid) VALUES(1, '이대호', '1루수', 1);
commit;
commit를 하는 이유에 대해서 알아보자.
현재 정보들은 RAM에 저장되어 있는 상태이다. 앞서 이야기 한 것처럼 RAM은 전기가 꺼지는 순간 데이터가 모두 유실되는 단점이 있다. 즉, 데이터를 유실되지 않게 보관하려면 I/O를 이용해 하드디스크에 저장해야만 한다. 이를 도와주는 명령어가 commit이다.
하드디스크에 저장되기 전에, 잘못 기입된 정보를 가지고 있는 RAM 자료를 삭제하는 명령어도 있다.
rollback;를 입력하면 된다.
INSERT INTO player(id,name,position,teamid) VALUES(2, '송진호', '1루수', 2);
rollback;
select를 이용하면 테이블을 찾을 수 있다.
SELECT * FROM player;
여기서 * 이란 테이블 전체를 찾는다는 의미의 기호이다.
다음과 같이 저장되어 있음을 볼 수 있다.
내용을 잘못 입력했거나, 데이터를 변경해야할 경우 update 명령어를 사용한다.
update player set position = '2루수' Where name='이대호';
commit;
update는 RAM에 저장된 정보, 혹은 하드디스크에 있는 정보를 RAM으로 불러와 수정하는 방식이기 때문에, 이후에 완벽한 저장을 위해서 commit는 필수이다.
set position='2루수' 만 적는다면 표의 모든 position 값이 2루수로 변경된다. 변경할 값을 지정하기 위해 바꿀 타겟을 설정하는데, 그것이 where이다.
마찬가지로 select 명령어를 이용해 결과를 보자.
다음처럼 position이 변경되었음을 볼 수 있다.
이미 하드디스크로 넘어간 데이터는 rollback; 로 삭제할 수 없다. 이를 하드디스크에서 RAM으로 불러와 삭제해주는 명령어는 delete이다.
delete from player where id='1';
commit;
마찬가지로 그냥 delete만 입력한다면 player 테이블 내의 모든 자료가 날아가므로, 반드시 어떤 값을 지울 것인지 타겟을 설정하는 것을 잊지 말아야 한다. 또한, 자료를 RAM으로 옮겨온 것일 뿐이므로, 삭제된 사실도 하드디스크로 옮겨야 하므로 commit하는 것 역시 잊지 말아야 한다!
데이터가 삭제된 것을 확인할 수 있다.
*commit?
commit를 자주 사용하지 않으면 데이터의 신뢰성이 떨어진다.
예를 들어보자. 회사에 3억이 있다. 따라서 데이터베이스에 회사 자금이 3억이 기록되어 있다.
책임자 한 명이 사업 확장용으로 1억의 회사 자금을 가져간 후 commit을 하지 않았다고 가정해보자. 책임자가 이후에 컴퓨터를 끄고 퇴근하면 1억을 사용했다는 기록은 날아가고, 하드디스크에는 2억이 아닌, 여전히 3억이 남아있다고 기록되어 있을 것이다.
실제 가지고 있는 금액과 하드디스크가 가지고 있는 회사 자금 데이터가 신뢰성이 있는가?
이를 설명하는 단어가 '트랜잭션'이다. 트랜잭션은 DB에서 일어나는 일의 최소한의 단위를 의미하며 앞서 본 commit과 rollback를 의미한다.
'데이터베이스' 카테고리의 다른 글
2. 문자함수(substr, instr, replace ....) (0) | 2020.03.19 |
---|---|
1. SELECT 명령어 (0) | 2020.03.19 |
.sql 확장자 파일 불러오기 (0) | 2020.03.18 |
데이터베이스 사용자 만들기, tablespace 권한주기 (0) | 2020.03.18 |
데이터베이스 기초 (0) | 2020.03.18 |