먼저 data.sql 파일을 받아서 Insert 문을 실행하여 데이터를 추가하자


data.sql


만약 글자가 깨져 보인다면 https://qdgbjsdnb.tistory.com/100 UTF-8 설정을 참조하자.


다운로드가 귀찮다면 아래 코드를 복사하여 실행



INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(117,'상민','전','sky05clzls@naver.com','01012341234',4563989,'DEV_003',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(119,'항오','조','sky07clzls@naver.com','01012341234',4562752,'DEV_003',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(120,'지훈','김','sky08clzls@naver.com','01012341234',56376,'DEV_003',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(121,'형진','박','sky09clzls@naver.com','01012341234',56780,'DEV_004',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(122,'덕기','이','sky10clzls@naver.com','01012341234',893530,'DEV_004',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(123,'혁준','권','sky11clzls@naver.com','01012341234',63543640,'DEV_004',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(124,'기빈','고','sky12clzls@naver.com','01012341234',4453830,'DEV_004',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(125,'강인','최','sky13clzls@naver.com','01012341234',3786534,'DEV_005',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(126,'두원','김','sky14clzls@naver.com','01012341234',876547,'DEV_005',90);

INSERT INTO employees(EMP_NO,FIRST_NAME,FAMILY_NAME,EMAIL,MOBILE,SALARY,DEPART_NO,COMMISION)
VALUES(127,'상헌','류','sky15clzls@naver.com','01012341234',135468,'DEV_005',90);


불러오고 나서 우측 위의 콤보박스를 눌러 WEB_USER를 접속 설정해준 다음


전부 드래그 하여 ctrl + Enter를 누르거나


F5를 눌러 실행하면 데이터가 추가된다.






트랜잭션은 data base 에서 사용되는 쪼갤 수 없는 업무처리의 단위이다.


작업 과정 중 하나라도 잘못된다면 전부 취소해야 한다.




간단하게 예를든다면


A가 B에게 송금을 한다면


A가 은행에게 돈을 전달하고 (트랜잭션 하나)


은행이 B에게 돈을 전달한다.(트랜잭션 하나)


만약 은행에서 B에게 전달하는 과정에 오류가 발생한다면


A의 돈은 이미 깎인 상태이므로 A가 은행에게 전달한 돈까지 취소해주어야 한다. (RoLL Back)




이와 같이 트랜잭션 원리는 금융, 결제와 같은 분야에서 적용된다.




SAVE POINT


DB에서는 게임과 똑같이 SAVE POINT를 지정할 수 있다.


그리고 작업하다가 원하는 부분으로 되돌릴 수 있다.


하지만 세이브 포인트를 잘못쓰면 데이터가 꼬일 수 도 있다.


사용에는 많은 경험이 요구된다.


특히 다수의 개발자가 투입되면 어느 부분이 중요한지 생각이 다 다르고 SAVE POINT를 주는 부분도 다르게 되므로


조심해야 하는 것이다.

-- 1) COMMIT : 실행한 쿼리를 최종 적용(INSERT문, UPDATE문, DELETE문 등...)
-- COMMIT 모드가 켜져있는지 꺼져있는지 알려줌
SHOW AUTOCOMMIT;
-- 쿼리 실행 즉시 COMMIT(비추천)이 된다.
SET AUTOCOMMIT ON;

SET AUTOCOMMIT OFF;

-- COMMIT이 원래 자동으로 되는 구문들
-- CREATE문, ALTER문, DROP문, TRUNCATE문, RENAME문
-- 위의 문구를 사용할 때에는 주의해야 한다.





-- 2) ROLLBACK : 실행한 쿼리(INSERT문, UPDATE문, DELETE문 등...)를 취소(원상 복구)
SELECT * FROM employees;
DELETE FROM employees;
SELECT * FROM employees;

ROLLBACK;
SELECT * FROM employees;
-- ROLLBACK은 시간이 지나면 안됨, 시간이 지나면 자동으로 COMMIT이 됨
-- DELETE문을 조건없이 저런식으로 잘못 사용하면 모든 데이터가 날아감
-- 회사에서 쫓겨나기 딱 좋다.

-- COMMIT을 하지 않으면 원격지의 사용자는 적용 내용 확인 불가
-- 원격지는 다른곳에서 DB를 읽는 경우
-- 그래서 중요한 구문의 경우는 바로 COMMIT을 해 준다.

-- SAVE POINT는 롤백 지점을 원하는 부분에 지정
DELETE FROM employees WHERE emp_no BETWEEN 111 AND 113;
-- 순서상으로 111~113이 지워진 이 후 SAVE가 되었다.
SAVEPOINT pointA;


DELETE FROM employees WHERE emp_no BETWEEN 114 AND 116;
-- 순서상으로 114~116이 지워진 이 후 SAVE가 되었다.
SAVEPOINT pointB;

SELECT * FROM employees ORDER BY emp_no;

-- 4) ROLLBACK TO [point name]
ROLLBACK TO pointA;
-- 111~113이 지워진 후 저장된 시점으로 돌아옴
SELECT * FROM employees ORDER BY emp_no;






+ Recent posts