MySQL : Objects, SQL Programming
MySQL Objects
1. 트리거 (Triggers)
정의: 트리거는 데이터베이스 테이블에 삽입, 수정 또는 삭제와 같은 특정 이벤트가 발생할 때 자동으로 실행되는 SQL 코드 블록. 트리거는 데이터의 무결성을 유지하고 자동화된 작업을 수행하는 데 유용함.
예제:
- 삽입 트리거: 테이블에 데이터가 삽입될 때 실행.
1 2 3 4 5 6
CREATE TRIGGER before_insert_customer BEFORE INSERT ON customers FOR EACH ROW BEGIN SET NEW.created_at = NOW(); END;
이 트리거는 고객이 삽입될 때
created_at
필드를 현재 시간으로 설정. - 수정 트리거: 테이블의 데이터가 수정될 때 실행.
1 2 3 4 5 6
CREATE TRIGGER before_update_customer BEFORE UPDATE ON customers FOR EACH ROW BEGIN SET NEW.updated_at = NOW(); END;
이 트리거는 고객 정보가 수정될 때
updated_at
필드를 현재 시간으로 업데이트.
2. 뷰 (Views)
정의: 뷰는 하나 이상의 테이블에서 데이터를 조회하는 가상 테이블. 뷰를 사용하면 복잡한 쿼리를 단순화하고 데이터의 보안을 향상시킬 수 있다.
예제:
- 기본 뷰 생성:
1 2 3 4
CREATE VIEW customer_orders AS SELECT customers.name, orders.order_id, orders.amount FROM customers JOIN orders ON customers.customer_id = orders.customer_id;
이 뷰는 고객과 주문 테이블을 조인하여 고객의 이름과 주문 정보를 제공.
- 업데이트 가능한 뷰:
1 2 3 4
CREATE VIEW active_customers AS SELECT * FROM customers WHERE status = 'active' WITH CHECK OPTION;
이 뷰는 활성 상태의 고객만 조회하며, 뷰를 통해 데이터를 업데이트할 때
status
가 ‘active’인지 확인.
3. 프로시저 (Stored Procedures)
정의: 프로시저는 반복적인 작업을 수행하기 위해 저장된 SQL 코드 블록. 프로시저는 복잡한 비즈니스 로직을 데이터베이스 내에서 처리할 수 있게 한다.
예제:
- 프로시저 생성:
1 2 3 4 5
CREATE PROCEDURE add_order (IN customer_id INT, IN amount DECIMAL(10,2)) BEGIN INSERT INTO orders (customer_id, amount, order_date) VALUES (customer_id, amount, NOW()); END;
이 프로시저는 주문을 추가하는 기능을 수행.
- 프로시저 호출:
1
CALL add_order(1, 100.50);
이 호출은 고객 ID가 1인 고객에 대해 100.50의 주문을 추가.
4. 함수 (Functions)
정의: 함수는 입력 값을 받아 처리한 후 결과를 반환하는 SQL 코드 블록. 함수는 프로시저와 달리 값을 반환할 수 있으며, 복잡한 계산이나 데이터를 처리하는 데 사용.
예제:
- 함수 생성:
1 2 3 4 5 6 7 8 9
CREATE FUNCTION get_customer_balance (cust_id INT) RETURNS DECIMAL(10,2) BEGIN DECLARE balance DECIMAL(10,2); SELECT SUM(amount) INTO balance FROM orders WHERE customer_id = cust_id; RETURN balance; END;
이 함수는 특정 고객의 주문 합계를 반환.
- 함수 호출:
1
SELECT get_customer_balance(1);
이 호출은 고객 ID가 1인 고객의 총 주문 금액을 반환.
SQL Programming
1. SQL 프로그래밍 개요
SQL 프로그래밍의 기본 개념과 SQL 스크립트 사용법을 소개한다.
2. 조건문과 반복문
조건문:
- IF 문: 조건에 따라 다른 SQL 코드를 실행한다.
1 2 3
IF condition THEN -- SQL code END IF;
반복문:
- LOOP 문: 반복 작업을 수행한다.
1 2 3
LOOP -- SQL code END LOOP;
3. 커서 사용
커서를 사용하여 여러 행을 처리하는 방법을 설명한다.
1
2
3
4
5
6
DECLARE cursor_name CURSOR FOR
SELECT column1, column2 FROM table_name;
OPEN cursor_name;
FETCH cursor_name INTO var1, var2;
CLOSE cursor_name;
4. 예외 처리
예외 상황을 처리하는 방법이다.
1
2
3
4
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
-- Exception handling code
END;
5. 저장 프로시저와 함수
복잡한 비즈니스 로직을 데이터베이스 내에서 처리하는 방법을 설명한다.
저장 프로시저:
1
2
3
4
CREATE PROCEDURE procedure_name()
BEGIN
-- Procedure logic
END;
함수:
1
2
3
4
5
6
CREATE FUNCTION function_name()
RETURNS datatype
BEGIN
-- Function logic
RETURN value;
END;