계좌 입금에 대한 데이터베이스 작업 수행시 계좌 잔액에 대한 인출과 입금과 같이 Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법으로 DDL이나 DML 중 레코드를 수정, 추가, 삭제하는 것에만 의미가 있어 SELECT에는 사용되지 않는다. 레코드 삭제 명령어인 TRUNCATE의 경우에도 트랙잭션이 지원되지 않는다.
BEGIN;
DELETE FROM 테이블명;
INSERT INTO 테이블명 VALUES (값1, 값2,...);
[ROLLBACK|COMMIT|END];
자주 사용되는 SELECT에 명칭을 두고 사용을 용이하게 한 것이다.
CREATE OR REPLACE VIEW 뷰 이름 AS
SELECT 문
-- 사용방법
SELECT * FROM 뷰 이름
프로그래밍 언어 함수처럼 인자(IN,OUT 매개변수 사용 가능)를 받고 리턴되는 값이 레코드들의 집합인 것이 특징인 SQL 쿼리들의 집합으로 구성되어 있다. 대신 디버깅이 힘들고 서버단의 부하를 증가시키는 단점이 존재하다.
-- 정의
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
statements;
END //
DELIMITER ;
-- 호출
CALL stored_procedure_name(argument_list)
인자(IN 매개변수 사용 가능)를 받아서 한 개의 값을 하나 리턴해주는 서버단 함수이고 리턴값은 Deterministic하거나 Non Deterministic하고 Stored Procedure가 다른게 SQL안에서 사용이 가능한 게 특징이다.
DELIMITER $$
CREATE FUNCTION 함수명(IN parameter_list)
RETURNS 반환 타입
DETERMINISTIC
BEGIN
DECLARE 변수명 타입명;
함수에서 실행할 명령어
RETURN (변수);
END$$
-- 함수 호출 예시
SELECT 함수명(매개변수)
FROM 테이블명
테이블의 INSERT/DELETE/UPDATE 실행 전후에 특정 작업을 수행하는 것이 가능한 SQL명령어 모음이다.
CREATE TRIGGER 트리거이름
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
ON table_name FOR EACH ROW
trigger 호출시 실행 명령어;
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT,
index_col VARCHAR(20),
PRIMARY KEY (id),
INDEX index_name (index_col)
);
-- ALTER나 CREATE INDEX로 Index를 생성하는게 가능
ALTER TABLE 테이블명 ADD INDEX (필드명)
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);