편집 요약 없음 |
편집 요약 없음 |
||
41번째 줄: | 41번째 줄: | ||
## [[정규표현식(regular expression)]] | ## [[정규표현식(regular expression)]] | ||
## [[전체 텍스트 검색 match]] | ## [[전체 텍스트 검색 match]] | ||
## {{:테이블 샘플링 (Table Sampling)}} | |||
## [[임시 테이블 (Temporary Tables)]] | |||
== 동적 SQL (Dynamic SQL) == | |||
<source lang=sql> | |||
-- 조건에 따라 다른 쿼리 실행 (MySQL 저장 프로시저 예제) | |||
DELIMITER // | |||
CREATE PROCEDURE get_employee_data(IN dept_id INT, IN min_salary DECIMAL) | |||
BEGIN | |||
SET @sql = CONCAT('SELECT * FROM employees WHERE department_id = ', dept_id); | |||
IF min_salary IS NOT NULL THEN | |||
SET @sql = CONCAT(@sql, ' AND salary >= ', min_salary); | |||
END IF; | |||
SET @sql = CONCAT(@sql, ' ORDER BY last_name;'); | |||
PREPARE stmt FROM @sql; | |||
EXECUTE stmt; | |||
DEALLOCATE PREPARE stmt; | |||
END // | |||
DELIMITER ; | |||
-- 프로시저 호출 | |||
CALL get_employee_data(5, 50000); | |||
</source> | |||
**설명**: | |||
- 런타임에 SQL 문을 동적으로 생성하고 실행 | |||
- 조건에 따라 다른 컬럼, 테이블, 조건을 사용할 때 필요 | |||
- SQL 인젝션 공격 방지를 위해 반드시 입력 값 검증 필요 | |||
---- | ---- |
2025년 5월 30일 (금) 18:16 판
Welcome To DB STUDY
ORACLE
오라클 SQL 30일 학습
- SQL 기본
- SQL 활용
- PL/SQL 기초
- SQL 고급
- 정규표현식(regular expression)
- 전체 텍스트 검색 match
- == 테이블 샘플링 (Table Sampling) ==
-- 대용량 테이블에서 10% 무작위 샘플 조회 (PostgreSQL 예제) SELECT * FROM large_sales_data TABLESAMPLE SYSTEM(10); -- 특정 행 수만큼 샘플링 (Oracle 예제) SELECT * FROM customer_transactions SAMPLE(1000 ROWS);
- 설명**:
- 대용량 테이블에서 무작위 샘플 데이터 추출 - 데이터 분석이나 테스트 시 유용 - `SYSTEM` 방식(블록 샘플링)과 `BERNOULLI` 방식(행 단위 샘플링) 차이 이해 필요
동적 SQL (Dynamic SQL)
-- 조건에 따라 다른 쿼리 실행 (MySQL 저장 프로시저 예제) DELIMITER // CREATE PROCEDURE get_employee_data(IN dept_id INT, IN min_salary DECIMAL) BEGIN SET @sql = CONCAT('SELECT * FROM employees WHERE department_id = ', dept_id); IF min_salary IS NOT NULL THEN SET @sql = CONCAT(@sql, ' AND salary >= ', min_salary); END IF; SET @sql = CONCAT(@sql, ' ORDER BY last_name;'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // DELIMITER ; -- 프로시저 호출 CALL get_employee_data(5, 50000);
- 설명**:
- 런타임에 SQL 문을 동적으로 생성하고 실행 - 조건에 따라 다른 컬럼, 테이블, 조건을 사용할 때 필요 - SQL 인젝션 공격 방지를 위해 반드시 입력 값 검증 필요