데이터베이스 개체 구성 : 테이블, 인덱스, 스토어드 프로시저, 트리거, 함수
인덱스
CREATE TABLE employees.indexTBL (first_name varchar(14), last_name varchar(16), hire_date date);
INSERT INTO employees.indexTBL
SELECT first_name, last_name, hire_date
FROM employees.employees
LIMIT 500;
SELECT * FROM indexTBL WHERE first_name = 'Mary';
CREATE INDEX idx_indexTBL_firstname ON employees.indexTBL(first_name);
인덱스 탔다면 Execution Plan에 아래 이미지처럼 index 탔다고 나옴.
뷰 : 가상의 테이블
뷰의 실체는 SELECT 문
CREATE VIEW employees.uv_indexTBL
AS
SELECT first_name, last_name FROM employees.indextbl;
위 명령으로 생성된 VIEW를 대상으로 아래 SQL을 날렸울 경우, 원본 Table에도 변화가 적용됨을 알 수 있음
UPDATE employees.uv_indextbl SET first_name = 'GGeorgi' WHERE first_name = 'Georgi';
스토어드 프로시저 : MySQL에서 제공해주는 프로그래밍 기능을 말함.
DELIMITER //
CREATE PROCEDURE employees.myProc()
BEGIN
SELECT * FROM employees.indexTBL WHERE first_name= "Parto";
SELECT * FROM employees.employees WHERE last_name = "Peac";
END //
DELIMITER ;
CALL employees.myProc();
트리거 : 트리거란 테이블에 부착되어서 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생되면 실행되는 코드를 말한다.
사용 예시 : 어떤 학생이 자퇴를 하는 경우, 학생 테이블에서 해당 학생 삭제 시 자퇴생 테이블에 해당 값 자동 INSERT 되도록 트리거 생성
CREATE TABLE employees.delete_employees (first_name varchar(14), last_name varchar(16), hire_date date, deleteDate date);
DELIMITER //
CREATE TRIGGER employees.trg_deleteEmployees -- 트리거 이름
AFTER DELETE -- 삭제 후에 작동하게 지정
ON employees.employees -- 트리거를 부착할 테이블
FOR EACH ROW -- 각 행마다 적용시킴
BEGIN
-- OLD (예약어임) 테이블이 내용을 백업테이블에 삽입
INSERT INTO employees.delete_employees
VALUES (OLD.first_name , OLD.last_name , OLD.hire_date , CURDATE() );
END //
DELIMITER ;
위 트리거 건 후 아래 SQL 실행 시 정상적으로 트리거 작동되어 대상 테이블로 데이터 INSERT 되었음을 확인할 수 있다.
DELETE FROM employees.employees WHERE emp_no = 10004;
백업과 복원 : 백업은 현재의 데이터베이스를 다른 매체에 보관하는 작업을 말하며 복원은 데이터베이스에 문제가 발생했을 때 다른 매체에 백업된 데이터를 이용해서 원상태로 돌려놓는 작업을 말한다.
댓글