백엔드/데이터베이스2
1차 정규화, 2차 정규화, 3차 정규화 예제
DELIMITER
프로시저, 트리거에서 사용, 지정한 문자를 만나기 전까지 실행을 보류, 프로지서 및 트리거 생성 시 내부에 ; 기호가 있으면 프로시저 및 트리거가 완료되지 않기 때문에 종료 문자를 변경
IN : 프로시저를 호출하기 위한 정보로 함수의 매개변수에 해당함
DECLARE : 프로시저 내부에서 변수를 선언할 때 사용
SET : 프로시저 내부에서 변수에 값을 설정할때 사용
<사용법>
IF THEN END, IF ELSE THEN IF END : 프로시저 내부에서 if문 사용
사용법
IF score >= 95 THEN
SET level = 'A+';
END IF;
IF score >= 90 THEN
SET level = 'A';
ELSE
IF score >= 80 THEN
SET level = 'B';
END IF;
CALL 프로지저명(매개변수) : 프로시저 호출하기
프로시저
트리거
데이터베이스의 테이블에 어떠한 신호가 전달되었을 때 미리 정해진 활동이 자동적으로 실행되는 것, INSERT, UPDATE, DELETE 와 같은 DML이 실행되었을 경우 지정한 데이터 베이스 테이블의 수행 내용을 자동으로 실행
해당 명령에 따라 BEFORE/AFTER로 나누어짐
BEFORE : 특정 명령어가 실행되기 이전에 먼저 실행
AFTER : 특정 명령어가 실행된 후 실행
NEW : 가상 변수, INSERT/UPDATE에서 사용 가능, 신규 데이터, UPDATE 시 변경된 이후의 데이터
OLD : 가상 변수, UPDATE/DELETE에서 사용 가능, 기존 데이터, UPDATE 시 변경되기 전의 데이터
<사용법>
DELIMITER //
CREATE TRIGGER 트리거이름
BEFORE/AFTER INSERT/UPDATE/DELETE
ON 테이블명
FOR EACH ROW
BEGIN
트리거 동작 시 수행할 쿼리문
END
// DELIMITER ;
트랜젝션
데이터베이스에 입력, 수정, 삭제 시 바로 데이터 베이스에 적용하는 것이 아니라 특정 세이브 포인트를 설정해 두고 입력, 수정, 삭제를 진행 후 아무런 문제가 없을 경우 데이터베이스에 적용하고, 문제가 있을 경우 복구하는 기술
트랜젝션 예외
DDL명령어 (CREATE, DROP, ALTER, RENAME, TRUNCATE)는 트랜젝션의 ROLLBACK 대상이 아님
<사용법>
START TRANSACTION : 트랜젝션 사용 준비
COMMIT : 데이터 베이스에 적용
ROLLBACK : 지정한 포인트의 상태로 데이터 베이스 복구
SAVEPOINT 이름 : 지정한 포인트로 ROLLBACK 할 수 있는 위치 설정
SET AUTOCOMMIT = 0/1 : 자동 COMMIT 사용 여부, 0 : OFF, 1 : ON
INDEX
테이블의 조회 속도를 높이기 위해서 일부 컬럼의 데이터만 빠르게 검색할 수 있도록 하는 자료구조
<사용법>
인덱스 생성
CREATE INDEX 인덱스이름 ON 테이블명 (컬럼명);
인덱스 조회
SHOW INDEX FROM 테이블명;
인덱스 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
SHOW INDEX FROM salaries;
VIEW
가상 테이블로 실제 데이터를 존재하지 않고, 기존의 테이블 및 뷰의 데이터를 가져다가 사용하는 테이블, 보안과 편의성을 위해서 사용함, 데이터의 입력, 수정, 삭제가 어려움, 뷰는 한번 생성되면 수정이 불가함
<사용법>
생성 : CREATE VIEW 뷰이름 AS SELECT 쿼리문
삭제 : DROP VIEW 뷰이름
조회 : SHOW CREATE VIEW 뷰이름
CREATE VIEW emp_copy AS SELECT * FROM employees LIMIT 100;
CREATE VIEW emp_maria AS SELECT * FROM employees WHERE first_name = 'maria' AND gender = 'F';
CREATE VIEW emp_csy AS SELECT * FROM employees WHERE first_name = 'luigi' AND gender = 'M';