B-Tree 자료구조 기반 데이터 검색 효율 향상 기법
새로운 레코드 삽입 및 수정 시에도 활용
1 테이블 1 클러스터형 인덱스
예: PRIMARY KEY, UNIQUE NOT NULL
// 방법 1
ALTER TABLE students ADD PRIMARY KEY (id);
// 방법 2
CREATE CLUSTERED INDEX 인덱스명 ON students (id);
1 테이블 多 보조 인덱스 가능
클러스터형 인덱스보다 한 단계(인덱스 키로 데이터 행의 위치 검색) 더 필요
예: UNIQUE, UNIQUE NULL
// 방법 1
ALTER TABLE students ADD INDEX 인덱스명 (id);
// 방법 2
CREATE [UNIQUE] INDEX 인덱스명 ON students (id);
- SQL도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있음
- 변수는 워크벤치를 재시작할 때까지 유지되다가 종료하면 없어짐
SET @변수이름 = 변수의 값;
예: SET @count = 5;
SELECT문에서 LIMIT문에는 변수 사용 불가 → PREPARE, EXCUTE문으로 대체
SET @count = 5;
PREPARE mySQL FROM 'SELECT code, name, continent, region, population
FROM world.country
ORDER BY 1 ASC
LIMIT ?';
EXECUTE mySQL USING @count;
CALL 프로시저명(); 형식으로 SQL 묶음을 호출gender가 'man'인 학생들의 수를 세는 스토어드 프로시저
DELIMITER // -- 시작
CREATE PROCEDURE count_men()
BEGIN -- sql 시작
DECLARE count INT;
SELECT COUNT(*) INTO count FROM students WHERE gender = 'man';
IF count > 3 THEN
SELECT 'Many men' AS result;
ELSE
SELECT 'Few men' AS result;
END IF;
END // -- sql 끝
DELIMITER ; -- 끝
select * from students;
call count_men();
테이블에서 어떤 이벤트(update, insert, delete)가 발생했을 때, 실행시키고자 하는 추가 쿼리 작업들을 자동으로 수행

DELIMITER $$
CREATE TRIGGER 트리거이름
AFTER DELETE -- 트리거를 달 동작
ON 테이블 FOR EACH ROW
BEGIN
-- 문장
END $$
DELIMITER ;