메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
편집 요약 없음
편집 요약 없음
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 판

dbstudy_iconx1.png

Welcome To DB STUDY

dbstudy_logo.jpg

ORACLE

오라클 SQL 30일 학습

  1. SQL 기본
    1. 데이터 베이스 용어 설명
    2. 데이터 유형
    3. SELECT 기본 구문 작성 순서
      1. GROUP BY 절
      2. WITH 절
      3. SQL 조인
    4. INSERT 구문
    5. UPDATE 구문
    6. DELETE 구문
    7. MERGE 구문
    8. ALTER TABLE 구문
    9. DROP TABLE 구문
    10. TRUNCATE TABLE 구문
  2. SQL 활용
    1. 오라클SQL 과 안시SQL
    2. SQL 실행원리 와 과정
    3. 최적의 SQL 작성법
    4. 서브쿼리(스칼라/인라인뷰/서브쿼리)
    5. 원도우 함수
    6. 집계함수 (aggregate function)
    7. 그룹 함수
    8. 인덱스
    9. CONNECT BY 절
    10. LATERAL
  3. PL/SQL 기초
    1. 함수
    2. 프로시져
    3. 패키지
    4. 트리거
  4. SQL 고급
    1. 정규표현식(regular expression)
    2. 전체 텍스트 검색 match
    3. == 테이블 샘플링 (Table Sampling) ==
-- 대용량 테이블에서 10% 무작위 샘플 조회 (PostgreSQL 예제)
SELECT *
FROM large_sales_data TABLESAMPLE SYSTEM(10);

-- 특정 행 수만큼 샘플링 (Oracle 예제)
SELECT *
FROM customer_transactions SAMPLE(1000 ROWS);
    • 설명**:

- 대용량 테이블에서 무작위 샘플 데이터 추출 - 데이터 분석이나 테스트 시 유용 - `SYSTEM` 방식(블록 샘플링)과 `BERNOULLI` 방식(행 단위 샘플링) 차이 이해 필요

    1. 임시 테이블 (Temporary Tables)


동적 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 인젝션 공격 방지를 위해 반드시 입력 값 검증 필요