데브코스 W3D5

코끼릭·2022년 4월 1일
0

TIL

목록 보기
9/36

트랜잭션

계좌 입금에 대한 데이터베이스 작업 수행시 계좌 잔액에 대한 인출과 입금과 같이 Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법으로 DDL이나 DML 중 레코드를 수정, 추가, 삭제하는 것에만 의미가 있어 SELECT에는 사용되지 않는다. 레코드 삭제 명령어인 TRUNCATE의 경우에도 트랙잭션이 지원되지 않는다.

BEGIN;
DELETE FROM 테이블명;
INSERT INTO 테이블명 VALUES (1,2,...);
[ROLLBACK|COMMIT|END];

View

자주 사용되는 SELECT에 명칭을 두고 사용을 용이하게 한 것이다.

CREATE OR REPLACE VIEW 뷰 이름 AS
SELECT-- 사용방법 
SELECT * FROM 뷰 이름

Stored Procedure

프로그래밍 언어 함수처럼 인자(IN,OUT 매개변수 사용 가능)를 받고 리턴되는 값이 레코드들의 집합인 것이 특징인 SQL 쿼리들의 집합으로 구성되어 있다. 대신 디버깅이 힘들고 서버단의 부하를 증가시키는 단점이 존재하다.

-- 정의
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
 statements;
END //
DELIMITER ;

-- 호출
CALL stored_procedure_name(argument_list)

Stored Function

인자(IN 매개변수 사용 가능)를 받아서 한 개의 값을 하나 리턴해주는 서버단 함수이고 리턴값은 Deterministic하거나 Non Deterministic하고 Stored Procedure가 다른게 SQL안에서 사용이 가능한 게 특징이다.

DELIMITER $$
CREATE FUNCTION 함수명(IN parameter_list)
RETURNS 반환 타입
DETERMINISTIC
BEGIN
 DECLARE 변수명 타입명;
 함수에서 실행할 명령어
RETURN (변수);
END$$

-- 함수 호출 예시
SELECT 함수명(매개변수)
FROM 테이블명

Trigger

테이블의 INSERT/DELETE/UPDATE 실행 전후에 특정 작업을 수행하는 것이 가능한 SQL명령어 모음이다.

CREATE TRIGGER 트리거이름
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
ON table_name FOR EACH ROW
trigger 호출시 실행 명령어;

Index

  • 테이블에서 특정 찾기 작업을 빠르게 수행하기 위해 만드는 데이터 구조
  • 컬럼별로 인덱스가 만들어 질 수 있음
  • Primary Key나 Foreign Key로 지정된 컬럼은 기본적으로 Index를 갖게 됨
  • SELECT/DELETE/JOIN 명령은 빠르게 하는 대신 INSERT/UPDATE는 느리게 하는 단점이 존재
  • 인덱스 자체를 관리하기 위한 오버헤드 O
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,...);
profile
ㅇㅅㅇ

0개의 댓글