📟 Database/혼자 공부하는 SQL

    [MySQL] 17. 자동으로 실행되는 트리거(trigger)의 개념과 트리거를 활용하여 데이터 백업하는 방법

    [MySQL] 17. 자동으로 실행되는 트리거(trigger)의 개념과 트리거를 활용하여 데이터 백업하는 방법

    트리거(trigger)는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지해준다. 즉 트리거를 사용하면 데이터에 오류가 발생하는 것을 막을 수 있다. 이런 것을 데이터의 무결성이라고 부르기도 한다. 트리거는 테이블에 DML(Data Manipulation Language) 문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생할 때 작동한다. 테이블에 미리 부착(attach)되는 프로그램 코드라고 생각하면 된다. 트리거는 스토어드 프로시저와 문법이 비슷하지만, CALL 문으로 직접 실행시킬 수는 없고 오직 테이블에 INSERT, UPDATE, DELETE 등의 이벤트가 발생할 경우에만 자동으로 실행된다. 또한 스토어드 프로시저와 달리 트리거에는 IN, OUT 매개변수를 사용할 수 ..

    [MySQL] 16. 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법

    [MySQL] 16. 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법

    MySQL은 다양한 함수를 제공한다. 하지만 사용자가 원하는 모든 함수를 제공하지는 않으므로 필요하다면 사용자가 직접 함수를 만들어서 사용할 수 있다. 이렇게 직접 만들어서 사용하는 함수를 스토어드 함수(stored function)라고 부른다. 스토어드 함수는 다음과 같은 형식으로 구성할 수 있다. DELIMITER $$ CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환형식 BEGIN 이 부분에 프로그래밍 코딩 RETURN 반환값; END $$ DELIMITER ; SELECT 스토어드_함수_이름(); 스토어드 함수의 형식을 보면 스토어드 프로시저와 상당히 유사하다. 차이점을 살펴보면 다음과 같다. 스토어드 함수는 RETURNS 문으로 반환할 값의 데이터 형식을 지정하고, ..

    [MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)

    [MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)

    스토어드 프로시저(stored procedure)란 MySQL에서 제공하는 프로그래밍 기능이다. C, 자바, 파이썬 등의 프로그래밍과는 조금 차이가 있지만, MySQL 내부에서 사용할 때 적절한 프로그래밍 기능을 제공한다. 또한 스토어드 프로시저는 쿼리 문의 집합으로도 볼 수 있으며, 어떠한 동작을 일괄 처리하기 위한 용도로도 사용된다. 자주 사용하는 일반적인 쿼리를 반복하는 것보다는 스토어드 프로시저로 묶어 놓고, 필요할 때마다 간단히 호출만 하면 훨씬 편리하게 MySQL을 운영할 수 있다. 스토어드 프로시저의 기본적인 형식은 다음과 같다. DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름(IN 또는 OUT 매개변수) BEGIN SQL 프로그래밍 코드가 들어가는 부분 END ..

    [MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)

    [MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)

    인덱스를 생성하기 위해서는 CREATE INDEX 문을 사용해야 한다. UNIQUE는 중복이 안 되는 고유 인덱스를 만드는 것인데, 생략하면 중복이 허용된다. CREATE UNIQUE로 인덱스를 생성하려면 기존에 입력된 값들에 중복이 있으면 안 된다. 그리고 인덱스를 생성한 후에 입력되는 데이터와도 중복될 수 없으니 신중해야 한다. ASC 또는 DESC는 인덱스를 오름차순 또는 내림차순으로 만들어준다. 기본은 ASC로 만들어지며, 일반적으로 DESC로 만드는 경우는 거의 없다. CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC | DESC] 인덱스 생성의 예 CREATE INDEX idx_member_addr ON member (addr); SHOW INDEX F..