CS/DB

[혼공SQL] 혼공단 11기 - 6주차 미션 인증

F12:) 2024. 2. 17. 12:25

 

 

우와.. 진짜 마지막 주차를 진행하게 되었네요... 뭔가 처음에는 엄청 열심히 막 화요일에 끝내버리고 이런 느낌이었는데 시간이 갈수록 마감기한에 촉박하게 제출했던 기억이 남습니다...

 

이번주에는 정보처리기사 필기도 응시해서 당.당.히 합격했습니다!!(정처기가 당일처리기사라고 불릴만큼 쉽다지만요...하핫)

 

무튼 그렇게 이런저런 연휴도 보내면서 하다보니, 뭔가 많은 양은 아니었는데, 오랫동안 미뤄뒀었네요...

 

 

파이썬과 연결하여 진행하는 실습은 개념 부분이 아니라 따로 정리하지 않았고, 그 외의 7단원은 정리한 글 공유합니다!

2024.02.05 - [CS/DB] - [혼공SQL] 스토어드 프로시저

2024.02.07 - [CS/DB] - [혼공SQL] 스토어드 함수

2024.02.07 - [CS/DB] - [혼공SQL] 커서

2024.02.09 - [CS/DB] - [혼공SQL] 트리거

 

 

p.s. 저 글에 쓰는 문체는 제 맘가는대로 하기로 했어요 ㅋㅋㅋㅋㅋ 뭔가 족장님이 말씀하시니까 무거운 고민거리가 아니게 된 느낌이랄까요 하핫...!!!!! 그리고 이제 3월 9일에 있을 SQLD를 준비해보려고 합니다..!

 

   6주차 기본 미션

p.363 market_db의 고객 테이블(member)에 입력된 회원의 정보가 변경될 때 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증하기

 

트리거에 관한 글에서도 다루었지만 추가로 작성해보겠습니다.

 

우선 기존의 member 테이블에서 일부 열만 선택해 singer 테이블을 만들어주었습니다.

DROP TABLE IF EXISTS singer;
CREATE TABLE singer(
    SELECT mem_id, mem_name, mem_number, addr FROM member
);

 

그리고 singer의 정보가 변경될 때, 해당 변경 기록 등을 작성하는 테이블인 backup_singer를 만들어줍니다. 여기서는 변경된 타입, 날짜, 변경한 사용자를 추가로 입력할 수 있도록 하였습니다.

DROP TABLE IF EXISTS backup_singer;
CREATE TABLE backup_singer(
	mem_id 		CHAR(8) NOT NULL,
    mem_name 	VARCHAR(10) NOT NULL,
    mem_number 	INT NOT NULL,
    addr 		CHAR(2) NOT NULL,
    modType 	CHAR(2), -- 변경된 타입. '수정' or '삭제'
    modDate 	DATE, -- 변경된 날짜
    modUser 	VARCHAR(30) -- 변경한 사용자
);

 

이제 트리거를 생성합니다. 우선은, 정보가 변경되었을 때 작동되는 트리거를 생성합니다.

DROP TRIGGER IF EXISTS singerUpdateTrigger;
DELIMITER $$
CREATE TRIGGER singerUpdateTrigger
	AFTER UPDATE
    ON singer
    FOR EACH ROW
BEGIN
	INSERT INTO backup_singer VALUES(
    	OLD.mem_id, OLD.mem_name, OLD.mem_number,
        OLD.addr, '수정', CURDATE(), CURRENT_USER()
    );
END $$
DELIMITER ;

 

이와 비슷하게 데이터가 삭제되었을 때도 작동되는 트리거를 생성해줍니다.

DROP TRIGGER IF EXISTS singerDeleteTRigger;
DELIMITER $$
CREATE TRIGGER singerDeleteTRigger
	AFTER DELETE
    ON singer
    FOR EACH ROW
BEGIN
	INSERT INTO backup_singer VALUES(
    	OLD.mem_id, OLD.mem_name, OLD.mem_number,
        OLD.addr, '삭제', CURDATE(), CURRENT_USER()
    );
END $$
DELIMITER ;

 

 

 

자 이제 준비는 끝났으니 데이터를 수정하고 삭제해보겠습니다.

UPDATE singer SET addr='영국' WHERE mem_id = 'BLK';
DELETE FROM singer WHERE mem_number >= 7;

 

그런 후에 backup_singer 테이블을 보게 된다면

SELECT * FROM backup_singer;

 

아래와 같은 결과가 나오게 됩니다.

 

 

   6주차 선택 미션

p.402 GUI 응용 프로그램 만들고 인증하기

 

프로그램의 첫 화면입니다.

우선 어떤 데이터가 들어가있을지, 조회버튼부터 눌러보겠습니다.

 

위와 같은 결과가 나왔습니다.

 

그럼 이제 데이터를 입력해봅시다.

위와 같은 데이터를 준비해서 입력 버튼을 누르게 되면..!!

이러한 팝업창이 뜨고, OK를 누른 뒤 다시 조회 버튼을 누르면 아래와 같이 정상적으로 데이터가 입력됨을 볼 수 있었습니다.

'CS > DB' 카테고리의 다른 글

[혼공SQL] 트리거  (2) 2024.02.09
[혼공SQL] 커서  (0) 2024.02.07
[혼공SQL] 스토어드 함수  (0) 2024.02.07
[혼공SQL] 스토어드 프로시저  (0) 2024.02.05
[혼공SQL] 혼공단 11기 - 5주차 미션 인증  (0) 2024.02.04