Oracle INSERT 語句
方法1
我估計有點 SQL 基礎(chǔ)的人都會寫 INSERT 語句。下面是 SQL 標(biāo)準(zhǔn)寫法。
1
2
|
INSERT INTO employees (employee_id, name ) VALUES (1, 'Zhangsan' ); INSERT INTO employees VALUES (1, 'Shangbo' ); |
方法2
其實, Oracle 還支持下面的寫法,作用和上面的語句完全相同。
1
|
INSERT INTO ( SELECT employee_id, name FROM employees) VALUES (2, 'Lisi' ); |
方法3
此外,同其他數(shù)據(jù)庫一樣,Oracle 也支持下面這種寫法。
1
2
|
INSERT INTO employees SELECT 3, 'Wangwu' FROM DUAL; |
方法4
下面這種寫法可以實現(xiàn)列轉(zhuǎn)行,如我們有下面的表存儲原始數(shù)據(jù),原始數(shù)據(jù)可能從文件中來。
1
2
3
4
5
6
7
8
9
|
create table sales_input_table ( prod_id number(9,0), amt_mon number(9,6), amt_tue number(9,6), amt_wed number(9,6), amt_thu number(9,6), amt_fri number(9,6) ); insert into sales_input_table values (1, 100.0, 200.0, 300.0, 400.0, 500.0); |
下面我們通過一個 SQL 把上面的數(shù)據(jù)插入到下面的表中實現(xiàn)列轉(zhuǎn)行。
1
2
3
4
5
6
7
8
9
10
11
12
|
CREATE TABLE sales ( prod_id number(9,0), time_id date , amount number(9,0) ); INSERT ALL INTO sales (prod_id, time_id, amount) VALUES (prod_id, CURRENT_DATE , amt_mon) INTO sales (prod_id, time_id, amount) VALUES (prod_id, CURRENT_DATE + 1, amt_tue) INTO sales (prod_id, time_id, amount) VALUES (prod_id, CURRENT_DATE + 2, amt_wed) INTO sales (prod_id, time_id, amount) VALUES (prod_id, CURRENT_DATE + 3, amt_thu) INTO sales (prod_id, time_id, amount) VALUES (prod_id, CURRENT_DATE + 4, amt_fri) SELECT prod_id, amt_mon, amt_tue, amt_wed, amt_thu, amt_fri FROM sales_input_table; |
方法5
下面這種寫法可以幫我們一次性把一個表中的數(shù)據(jù)倒入到多個表中,否則我們必須寫多條 SQL 實現(xiàn)同樣的功能。
1
2
3
4
5
6
7
8
9
10
11
12
|
INSERT ALL WHEN order_total <= 100000 THEN INTO small_orders WHEN order_total > 100000 AND order_total <= 200000 THEN INTO medium_orders WHEN order_total = 500000 THEN INTO special_orders WHEN order_total > 200000 THEN INTO large_orders ELSE INTO large_orders SELECT order_id, order_total, sales_rep_id, customer_id FROM orders; |
注意,當(dāng) order_total 大于 200000 時,orders 會被插入到 large_orders 和 special_orders 中。這可能不是你想要的結(jié)果,如果你只想讓 orders 插入到 special_orders 表中,你只需要把 ALL 替換成 FIRST, 如下。
1
2
3
4
5
6
7
8
9
10
11
12
|
INSERT FIRST WHEN order_total <= 100000 THEN INTO small_orders WHEN order_total > 100000 AND order_total <= 200000 THEN INTO medium_orders WHEN order_total = 500000 THEN INTO special_orders WHEN order_total > 200000 THEN INTO large_orders ELSE INTO large_orders SELECT order_id, order_total, sales_rep_id, customer_id FROM orders; |
從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù),自動生成INSERT語句
創(chuàng)建表
1
2
3
4
5
6
7
8
9
10
11
|
-- Create table create table TB_ACCIDENT_TYPE ( ID NUMBER(20) not null , NAME VARCHAR2(50), PATH VARCHAR2(20), PARENTPATH VARCHAR2(20), URL VARCHAR2(20), TYPE VARCHAR2(2), DESCR VARCHAR2(50) ) |
顯示表中的數(shù)據(jù)
1
2
3
4
5
6
7
8
9
|
select 'INSERT INTO tb_accident_type (ID,NAME,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES(' || '' '' || ID || '' '' || ',' || '' '' || NAME || '' '' || ',' || '' '' || PATH || '' '' || ',' || '' '' || PARENTPATH || '' '' || ',' || '' '' || URL || '' '' || ',' || '' '' || TYPE || '' '' || ',' || '' '' || DESCR || '' '' || ');' From tb_accident_type order by ID |
顯示結(jié)果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '1' , '事故類型關(guān)聯(lián) ' , '1' , '0' , '' , '0' , '' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '2' , '危險源類型關(guān)聯(lián)' , '2' , '0' , '' , '' , '' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '3' , '危險品類型關(guān)聯(lián)' , '3' , '0' , '' , '' , '' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '4' , '生產(chǎn)企業(yè)類型關(guān)聯(lián)' , '4' , '0' , '' , '' , '' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '5' , '區(qū)域關(guān)聯(lián)' , '5' , '0' , '' , '0' , '' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '568' , '物體打擊' , '1.1' , '1' , '' , '1' , '物體打擊' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '569' , '車輛傷害' , '1.2' , '1' , '' , '1' , '車輛傷害' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '570' , '機器傷害' , '1.3' , '1' , '' , '1' , '機器傷害' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '571' , '起重傷害' , '1.4' , '1' , '' , '1' , '起重傷害' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '572' , '觸電' , '1.5' , '1' , '' , '1' , '觸電' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '573' , '淹溺' , '1.6' , '1' , '' , '1' , '淹溺' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '574' , '灼燙' , '1.7' , '1' , '' , '1' , '灼燙' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '575' , '火災(zāi)' , '1.8' , '1' , '' , '1' , '火災(zāi)' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '576' , '高處墜落' , '1.9' , '1' , '' , '1' , '高處墜落' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '577' , '坍塌' , '1.10' , '1' , '' , '1' , '坍塌' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '578' , '冒頂片幫' , '1.11' , '1' , '' , '1' , '冒頂片幫' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '580' , '透水' , '1.12' , '1' , '' , '1' , '透水' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '581' , '波炮' , '1.13' , '1' , '' , '1' , '波炮' ); INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '582' , '火藥爆炸' , '1.14' , '1' , '' , '1' , '火藥爆炸' ) INSERT INTO tb_accident_type (ID, NAME ,PATH,PARENTPATH,URL,TYPE,DESCR) VALUES ( '583' , '瓦斯爆炸' , '1.15' , '1' , '' , '1' , '瓦斯爆炸' ); |
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/linder0209/article/details/83193130