함수
- 내장함수 말고!! 내가 만든 함수를 사용하고 싶을 땐 ...????!!!?
- create function [지정 함수명]([인자])
returns [반환 데이터형]
begin
return [반환할 데이터]
end;
1. 함수 생성
create function sf_password(password varchar(255))
returns varchar(255)
begin
return
case
when length(password) > 2
then concat(substring(password, 1,2), '**')
else
'****'
end;
end;
- return에 case문을 쓴 예시이당
2. 함수 사용
select password, sf_password(password) as password_mask
from members;
프로시저
1. 프로시저 생성
delimiter $$
create procedure sp_select_members()
begin
select *
from members;
end;
delimiter ;
- delimiter가 뭐죠 ????? 쿼리문이 들어가면 ;을 남발할 수 있기에 시작과 끝을 지정해주는 역할이랍니다
2. 프로시저 호출
call sp_select_members();
트리거
- 특정 조건이 만족하면 저절로 실행되는 일종의 장치
- 프로시저나 함수와 다르게 한 번 설정을 하면 동작을 항상 감시하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징
- 주로 insert, update, delete 동작에 사용
- 동작 시점은 After, Before가 있음 (데이터 변경된 시점)
1. 트리거 생성
create trigger tg_members_mobile_no_history
before update on members_detail
for each row
begin
insert into members_detail_history
(
member_type,
user_id,
mobile_no,
new_mobile_no,
update_date
)
values
(
old.member_type,
old.user_id,
new.mobile_no,
old.mobile_no,
now()
);
end;
- 아래의 테이블(미리 만들어놈)로 old 값들이 들어갑니다
2. 트리거 사용하기
update members_detail
set
mobile_no = '01000000111'
where member_type = 'email'
and user_id = 'a@a'
;
- members_detail 테이블을 update하고 members_detail_history 테이블 내용을 확인해보세염 ㅎㅎ
함수, 프로시저, 트리거 생성 모두 create으로 하는 것 처럼
삭제는 drop으로 하면 된다는 것 ~
'DB' 카테고리의 다른 글
[DB] DB 연결 설정/JDBC 프로그램(CRUD) (0) | 2022.09.24 |
---|---|
[DB] 대용량 sql 파일 임포트시키기 (0) | 2022.09.23 |
[DB 개념] VIEW 테이블 (0) | 2022.09.21 |
[DB 개념] DBMS 내장 함수/페이징 처리 (1) | 2022.09.21 |
[DB 개념] alias/JOIN (0) | 2022.09.21 |