날짜 함수(Date Functions)
- 날짜와 시간 데이터를 처리하는데 유용
- NOW() : 현재 날짜와 시간 반환
SELECT NOW();
SELECT CURDATE();
- DATE_ADD() : 날짜에 일정 시간 추가
SELECT DATE_ADD('2024-09-30', INTERVAL 5 DAY);
- DATEDIFF() : 두 날짜 간의 차이를 일수로 반환
SELECT DATEDIFF('2024-10-01', '2024-09-30');
- YEAR(), MONTH(), DAY() : 특정 날짜의 연도, 월, 일 추출
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
UNION/UNION ALL
- 여러 SELECT문의 결과를 하나로 합침
- UNION : 중복된 행 제거
SELECT name FROM customers
UNION
SELECT name FROM employees;
SELECT name FROM customers
UNION ALL
SELECT name FROM employees;
임시 테이블(Temporary Table)
- 세션 동안만 존재, 세션이 끝나면 자동으로 삭제
- 대량의 데이터 처리나 복잡하 쿼리의 중간 결과 저장하는 데 유용
- 임시 테이블 생성
CREATE TEMPORARY TABLE temp_users (
id INT,
name VARCHAR(50)
);
INSERT INTO temp_users (id, name)
VALUES (1, 'Alice'), (2, 'Bob');
SELECT * FROM temp_users;
가상 테이블(View)
- 복잡한 쿼리를 간단하게 재사용하거나 보안상의 이유로 실제 테이블을 감추는 데 유용
- View 생성
CREATE VIEW active_users AS
SELECT id, name FROM users WHERE status = 'active';
SELECT * FROM active_users;
ROWNUM
- 쿼리 결과에 고유한 순번 붙임
- 상위 몇 개의 레코드를 가져올 때 유용
SELECT * FROM employees WHERE ROWNUM <= 5;
프로시저(Stored Procedure)
- 미리 정의된 SQL코드의 묶음
- 재사용 가능
- 성능 개선
- 프로시저 생성
CREATE PROCEDURE get_employee_salary(IN emp_id INT)
BEGIN
SELECT salary FROM employees WHERE id = emp_id;
END;
CALL get_employee_salary(3);