[TIL] 21.08.13 - DB 5일차

Yeonjae Im·2021년 8월 15일
0

✅ TIL

- 테이블 복사

INSERT INTO [dst_table] SELECT * FROM [src_table];
테이블의 내용을 복사해주는 코드라고 한다.

- Stored Procedure, Stored Function, Trigger

  • Stored procedure
    - SQL 쿼리를 저장한다는 개념
    - CALL 키워드로 프로시저를 호출할 수 있음
DELIMITER //
CREATE PROCEDURE return_session_count(IN channelName varchar(64), INOUT totalRecord int))
BEGIN
	SELECT COUNT(1) INTO totalRecord 
	FROM session_details
	WHERE channel = channelName;
END //
DELIMITER;

SET @facebook_count = 0
CALL return_session_count('Facebook', @facebook_count);
SELECT @facebook_count;
  • Stored Function
    - 값을 리턴해주는 함수
DELIMITER $$
CREATE FUNCTION Channel_Type(channel varchar(32))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
	DECLARE channel_type VARCHAR(20);
	
	IF channel in ('Facebook', 'Instagram', 'Tiktok') THEN
		SET channel_type = 'Social Network';
	ELSEIF channel in ('Google', 'Naver') THEN
		SET channel_type = 'Search Engine';
	ELSE
		SET channel_type = channel;
	END IF;
	RETURN (channel_type);
END$$

SELECT channel, Channel_Type(channel) FROM prod.channel;
  • Trigger
    - DML 명령 실행 전후에 특정 작업을 수행하도록 만드는 것
CREATE TABLE name_gender_audit (
	name varchar(16),
	gender enum('Male', 'Female'),
	modified timestamp
);

CREATE TRIGGER before_update_name_gender
	BEFORE UPDATE ON name_gender
	FOR EACH ROW
INSERT INTO name_gender_audit
SET name = OLD.name,
	gender = OLD.gender,
	modified = NOW();

- Explain SQL

쿼리가 어떻게 수행되는지 내부를 보여주는 SQL 명령. 쿼리문 앞에 EXPLAIN 키워드만 붙이면 된다.

📝 일기

원래는 아침에 강의를 다 들었는데, 어제 늦게 자서 그러지 못했다. 오후에 들으려고 하니 뭔가 집중도 안되고, 산만한 기분이었다. 강의는 계속 아침에 듣도록 노력해보자.

0개의 댓글