4/27 시험 안내
시험과목) ddl / dml
DDL : 데이터 정의 언어
데이터 베이스 구조에 대한 명령(데이터 틀 만들기)
ex)db 생성, 테이블 생성, db 삭제, 테이블 삭제
DML : 데이터 조작 언어 (CRUD - 입력.조회)
실제로 데이터를 조작하는 명령
ex) 데이터 추가, 수정, 삭제, 조회
시험 준비시 알아둬야 하는 부분
JOIN 채점기준 --> join의 개념에서
중요한 포인트 잘 알아두기 (서술형 평가)
답변 작성시 mysqlyog에서 작성하고 답변란에 붙여넣기 하기
(오타 방지)
시험 제외 목록
트랜잭션
-> 하나의 논리적인 작업 단위
작업 단위
-> 입출금
A가 B에게 입금을 한다
A계좌에서 돈이 빠져나가고 (값이 수정되기에 update)
B계좌에 돈이 추가되고 (얘도 update)
update member
set account = 10000
where name = a
vupdate member
set account = 30000
where name = b
-> 이 둘을 하나로 묶는 것
(작업단위/내가 원하는 포인트를 잡아서
정상적인 수행이 하나라도 안됐다면 안됐다 가정!)
트랜잭션 보강 설명)
작업 단위 나눠서 사용할 수 있게 하는 문법
단위 안에 있는 쿼리가 모두 성공했을 때만 성공, 하나라도 실패하면
전부 실패로 판단
트랜잭션 명령어 및 상태
start transaction -> 단위의 시작지점 정하는
commit -> 성공상황인걸 확인했으니 정상적으로 완료하겠다
(실제로 데이터를 변경하겠다)
rollback -> 뭐라도 하나 실패한다면 전부 실패로 판단,
다시 이전(직전 commit 상태) 으로 돌려보냄
auto commit -> 쿼리를 실행하면
자동으로 커밋될 수 있게 설정이 되어있는 상태 ( SQL 기본 설정으로
되어 있음) - 그래서 트랜잭션 명령어 굳이 입력안해도 되는 것/
우리 프로그램은 트랜잭션 생략되어 있음(auto commit 상태))
트랜잭션의 존재이유
-> 단위를 나눠서 개발자가 직접적인 제어를 하라고 있는 문법
특징(acid)
A(atomicity) - 원자성
데이터베이스 실행할때 모두 되거나 아예 안되거나
C-일관성
작업 상태가 일관성 있게
I- 독립성
트랜잭션이 여러개 실행 될때 다른 트랜잭션에게 영향 줄수 x
(트랜잭션끼리 같을지라도)
D-영구성
실제로 적용해서 영구적으로 보관할 수 있어야함(commit!)
-> 더 궁금하다면 검색 추천
프로시저
미리 작성해둔 SQL의 집합
우리가 알고 있는 함수와 매우 유사
-> why?
자바에서의 메서드 (함수)
메서드는 내가 원하는 기능을 할 수 있게끔 미리 정해둔것
... 뭔가 프로시저와 기능이 비슷한 것 같다!
웹개발에서는 그렇게 사용하지는 않음
(동적인 처리 할 때는 사용하긴 함)
함수와의 차이점)
프로시저는 값의 반환이 없음
호출하는 방식이 다르다
함수와의 공통점)
호출하면 쓸 수 있음
함수처럼 인자를 사용할 수 있다
함수
하나의 값을 반환하는 SQL 블럭 (함수는 리턴이 필수!)
프로시저와 유사하지만 차이는 리턴의 유무에서 다름
함수의 리턴은 하나만 가능
만들어져 있는 기능을 수행하고 결과를 돌려준다
-> 일반적으로 SELECT 와 함께 사용
deterministic
not deterministic
이벤트
DB에서의 이벤트
정해진 시간에 자동으로 실행되는 작업
mysql에서 스케줄러를 사용할 수 있는 설정
(일반적으로 db에서는 설정 완돼있음
set global event_scheduler = on; (스케줄러 끄고 싶으면 off)
cretae event deletearticle
on schedule at 2025-04-17 11:38:00;
do
delete from article where 1d = 9;
select * from article;
그 시간에 그거 삭제할거야!(한번만!)
반복적으로 사용하고 싶으면 스케줄러 옆에 every 입력해야함
트리거
특정 테이블에 insert, update, delete가 발생할 때
자동으로 실행되는 SQL의 집합
-> insert, update, delete의 쿼리가 실행되고
나서 자동으로 실행될 이 아님
어떤 동작을 하면 그에 상응하는 무슨 일이 벌어져야 한다
백업 데이터 만들때 운용 , 로그 만들때 사용
articlDumy(백업) - id, regdate ,title, content
aricle - id, regdate ,title, content
................
delete from article;
insert into articleDumy
select * from article;
트리거 사용 예시
delimiter//
create trigger deleteArticle
after delete on `member`
FOR EACH ROW (줄의 단위로 동작?)
begin
insert into article
set regDate = now()
, title = 'qwe'
, `body` = 'qwe'
, memberId = 2
end//
delimiter;
select * from article;
select * from `member`;
delete from `member` where id = 4;
sso 통합 로그인?