본문 바로가기

SQL/혼공학습단 8기 - SQL

week6 - 스토어드 프로시저 사용방법 및 SQL과 파이썬 연결

6주차, 혼공단의 마지막 미션.

스토어드 프로시저와, 트리거, 스토어트 함수, 커서에 대  간단한 설명은 지난 포스트에서 확인 가능

 

week1 - 테이블 생성 및 기본 추출 쿼리문 작성, 데이터베이스 개체 설명

기본 미션 🐯 Chapter 01 ~ 02 p. 80 - shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과화면 인증샷 추가 미션 🐱 데이터베이스 개체 3가지 설명하기 데이터 베이스 개체란?

kimmaadata.tistory.com

기본 미션

🐯 Chapter 07 p. 363 - market_db의 고객 테이블(member)에 입력된 회원의 정보가 변경될 때 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증샷
CREATE TABLE singer (SELECT mem_id, mem_name, mem_number, addr FROM member);
SELECT * FROM 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),
modDate DATE,
modUSER VARCHAR(30)
);
SELECT * FROM backup_singer;

하나의 테이블에 여러개의 트리거를 부착해도 된다. 

/* 업데이트와 삭제가 발생할 때 작동하는 트리거를 singer테이블에 부착 */
DROP TRIGGER IF EXISTS singer_updateTrg;
-- 업데이트 발생하면 작동하는 트리거 생성
DELIMITER $$
CREATE TRIGGER singer_updateTrg 
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 ;

-- 삭제 발생하면 작동하는 트리거 생성
DELIMITER $$
CREATE TRIGGER singer_deleteTrg 
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 ;
/* 실제 작동하는 트리거 연습해보기
업데이트 실행중 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 라는 오류를 마주 치게 된다면  
설정을 아래와 같이 바꾸어 준다. 
SET SQL_SAFE_UPDATES=0;
*/
SELECT * FROM singer;
-- 업데이트 하기 
UPDATE singer 
SET addr='영국' 
WHERE mem_id LIKE 'BLK';

-- 삭제하기 
DELETE FROM singer WHERE mem_number >= 7;

-- 업데이트 및 삭제된 로그 테이블 살펴보기
SELECT * FROM backup_singer;

/* 테이블의 모든 행을 삭제 하기 delete사용하지 않고 TRUNCATE 를 사용
TRUNCATE는 DELETE문이 아니기때문에 backup_singer 에 이력이 남지 않는다 */
TRUNCATE singer;
SELECT * FROM backup_singer;

추가 미션

🐱 Chapter 08 p. 402 - GUI 응용 프로그램 만들고 인증샷