☞ 형식 |
|
- 기본문형 : INSERT INTO [ALL] [ 조건절 ] [INSERT ~ VALUES | SUBQUERY ] - 조건절 : [ALL][FIRST] [WHEN 조건 THEN][INSERT ~ VALUES ] [ELSE] [INSERT ~ VALUES ] |
☞ SELECT 문을 이용한 INSERT |
|
1. INSERT INTO TABLE_NAME1 ( SELECT ... FROM TBL_NAME2 ) ;
: Oralce 에서는 Insert 와 Select 문을 같이 사용 할 경우에는 VALUES 문을 사용하지 않는다. |
☞ 조건부 INSERT ALL |
|
예시) INSERT ALL WHEN product_id IN ( SELECT product_id FROM promotional_items ) INTO promotional_sales VALUES (product_id, list_price) WHEN order_mode = 'online' INTO web_orders VALUES (product_id, order_total) SELECT product_id, list_price, order_total,order_mode FROM orders; |
▣ 조건절이 없는 INSERT : SQL> INSERT ALL INTO sal_log VALUES (id , salary , title ) INTO date_log VALUES (id , start_date , title ) SELECT id , salary , start_date , title FROM s_emp WHERE id > 20 ; |
▣ 조건절이 있는 ALL INSERT 예시) 사번이 20번보다 큰 사원의 사번, 급여, 입사일, 직책을 선택하여 사번, 급여, 직책은 SAL_LOG 테이블에 입력하되 급여가 850보다큰 직원만 입력하고, 사번, 입사일, 직책은 DATE_LOG 테이블에 입력하되 단 입사일이 91년 1월 1일 이전인 직원만 입력.
SQL> INSERT ALL WHEN salary > 850 THEN INTO sal_log VALUES (id , salary , title ) WHEN start_date < '91/01/01' THEN INTO date_log VALUES (id , start_date , title ) SELECT id , salary , start_date , title FROM s_emp WHERE id > 20 ; |
☞ 조건부 INSERT FIRST |
|
INSERT FIRST WHEN order_total> 10000 THEN INTO priority_handling VALUES (id) WHEN order_total > 5000 THEN INTO special_handling VALUES (id) WHEN total > 3000 THEN INTO privilege_handling VALUES (id) ELSE INTO regular_handling VALUES (id) SELECT order_total, order_id id FROM orders; |
※ 무조건 첫번째 조건인 salary>=4000인 조건의 데이터는 DEPT_SAL 테이블에 들어가고, 나머지 데이터 salary<4000인 데이터 중에서 입사일 조건에 따라 각각의 테이블에 입력 예시) SQL> INSERT FIRST WHEN salary >= 4000 THEN INTO dept_sal VALUES (dept_id , salary) WHEN start_date LIKE '90%' THEN INTO dept_date_90 VALUES (dept_id , start_date) WHEN start_date LIKE '91%' THEN INTO dept_date_91 VALUES (dept_id , start_date) ELSE INTO dept_date VALUES (dept_id , start_date ) SELECT dept_id , SUM(salary) SALARY, MAX(start_date) START_DATE FROM S_EMP GROUP BY dept_id ;
|
☞ Pivot INSERT |
|
예시) SQL> INSERT ALL INTO sale_data VALUES (id, week_id, sales_mon) INTO sale_data VALUES (id, week_id, sales_tue) INTO sale_data VALUES (id, week_id, sales_wed) INTO sale_data VALUES (id, week_id, sales_thur) INTO sale_data VALUES (id, week_id, sales_fri) SELECT id,week,sales_mon,sales_tue,sales_wed,sales_thur, sales_fri FROM main_sale ; | |