[혼공SQL] 혼자 공부하는 SQL_6주차

Martinita·2025년 8월 17일
0

드디어 마지막! 마무리를 향해 달려봅시다..는 5주부터 밀려서 열심히 해야함 ㅎㅎ

트리거에 대해 알아보자

  • 트리거: 자동으로 수행해서 사용자가 추가 작업을 잊어버리는 실수 방지.
    -> 트리거를 사용해서 데이터에 오류가 생기는 것을 막을 수 있음. (데이터의 무결성)
    -> 테이블에 INSER나 UPDATE, DELETE 작업이 발생하면 실행되는 코드

EX) market_db에서 블핑이 탈퇴하는 경우-> member에서 블핑 데이터를 삭제하면 됨. 그런데 나중에 회원 탈퇴 정보를 어떻게 알 수 있을까? 이를 방지하기 위해 블핑 행 삭제 전에 이 내용을 다른 곳에 볷사해놓으면 됨.

  • 트리거는 DML(data manipulation language)에서 이벤트가 발생할 때 작동됨. => 테이블에 미리 attached된 프로그램 코드라고 생각하면 됨.

use market_db;
create table if not exists trigger_table (id INT, txt VARCHAR(10));
insert into trigger_table value(1, '레드벨벳');
insert into trigger_table value(2, '잇지');
insert into trigger_table value(3, '블랙핑크');

일단 이렇게 작성하고, 트리거를 부착해봅시다 (문법이 생소해도 일단 입력하고 설명 읽기)

drop trigger if exists mytrigger;
delimiter $create trigger mytrigger after delete on trigger_table for each row begin set @msg ='가수 그룹이 삭제됨' ; end $
delimiter ;

1) 트리거 이름 myTrigger로 지정
2) AFTER DELETE는 DELETE문 발생 후에 작동해라 의미
3) 트리거 부착 테이블 지정 -> ON trigger_table
4) 각 행 마다 적용 for each row ->트리거에는 항상 써줌
5) 트리거에서 실제로 작동할 부분 @msg변수에 글자 대입 시킴

근데 저상태로 하면, 아무것도 지정된게 없어서 이렇게 나옴. -> @msg 변수에 빈 문자를 넣고 insert에 한거라서, 그룹 넣고 나서 다시 해보기


실행결과 -> 이렇게 나옴

근데 그 다음에 이렇게 했을때는 '가수 그룹이 삭제됨'이 왜 안뜨는지 모르겠다...

1. 기본과제 p.363 인증하기

트리거는 테이블에 입력/수정/삭제되는 정보 백업 용도로 활용 가능함.
회원 테이블의 열을 아이디, 이름, 인원, 주소 4개 열로 구성된 가수 테이블을 복사해서 활용해보기.


이렇게 입력했고, 그 다음에 변경(UPDATE)과 삭제(DELETE)가 발생할때 작동하는 트리거를 Singer테이블에 부착하고자 함!

1) 변경이 발생했을 때 작동하는 singer_updateTag 만들기

왜 계속 이렇게 뜨는지 모르겠음..

이거도 변경 발생 시 작동하는 singer_updateTrg인데 안됨.. 그래도 일단 입력은 해보기


이건 삭제가 발생했을 때 작동하는 singer_deleteTrg 생성 및 작동 시작. 근데 이거도 처음부터 오류난 코드라서 안됨..

2. 추가 숙제(GUI응용프로그램)

이거라도 해보자..

  • GUI(graphical user interface)는 윈도에 그래픽 환경으로 제공되는 화면을 통틀어서 말하는거고, 파이썬을 통해 윈도에 출력되는 GUI 응용 프로그램을 작성할 수 있음. 이를 도와주는 게 tkinter라는 라이브러리임!
    => 엑셀, 한글, 크롬 등 응용 프로그램과 비슷한 형태로 프로그램을 만들 수 있고, SQL을 전혀 모르는 사용자도 마우스 클릭으로만으로 데이터 입력, 조회가 가능함.


이대로 포기하기엔..아쉬우니 파이썬으로 GUI 실습하기

from tkinter import * -> 파이썬에서 GUI 관련 모듈 제공해주는 표준 라이브러리
root = Tk() -> 기본이 되는 윈도우 반환, ROOT 라는 변수에 넣음. 루트 윈도라고도 하며 꼭 필요한 요소임.
root.mainloop() -> 함수를 실행함. 윈도에 키보드 누르기, 마우스 클릭 등 다양한 작업이 일어날때 이벤트 처리를 위해서 필요함.

GUI는 윈도를 제공해 사용자가 편리하게 DB에 접근하게 도와주는 환경을 의미함
tkinter는 파이썬에서 GUI를 만들기 위해 제공되는 라이브러리
라벨은 윈도에 문자를 표현, 버튼은 클릭하는 기능 제공
프레임은 화면 나누는 기능, 엔트리는 입력상자 제공, 리스트박스는 여러건의 목록 표현

원래 추가 숙제인 402페이지는 7주차(셀프) 숙제로 해보겠습니다.. 밀린 거 한번에 하려니까 많네요 ㅠㅠ 그래도 유종의 미를 거둘 수 있게 되어서 스스로 위안삼아 본다. 파이썬도 이참에 15기에..?

0개의 댓글