Oracle INSERT 语句
来源:互联网 发布:淘宝返红包怎么用 编辑:程序博客网 时间:2024/06/05 00:24
Oracle INSERT 语句
http://blog.csdn.net/shangboerds/article/details/46538655
下面我们通过一个 SQL 把上面的数据插入到下面的表中实现列转行。
注意,当 order_total 大于 200000 时,orders 会被插入到 large_orders 和 special_orders 中。这可能不是你想要的结果,如果你只想让 orders 插入到 special_orders 表中,你只需要把 ALL 替换成 FIRST, 如下。
方法1
我估计有点 SQL 基础的人都会写 INSERT 语句。下面是 SQL 标准写法。
- INSERT INTO employees (employee_id, name) VALUES (1, 'Zhangsan');
- INSERT INTO employees VALUES (1, 'Shangbo');
方法2
其实,Oracle 还支持下面的写法,作用和上面的语句完全相同。
- INSERT INTO (SELECT employee_id, name FROM employees) VALUES (2, 'Lisi');
方法3
此外,同其他数据库一样,Oracle 也支持下面这种写法。
- INSERT INTO employees
- SELECT 3, 'Wangwu' FROM DUAL;
方法4
下面这种写法可以实现列转行,如我们有下面的表存储原始数据,原始数据可能从文件中来。
- 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 把上面的数据插入到下面的表中实现列转行。
- 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
下面这种写法可以帮我们一次性把一个表中的数据倒入到多个表中,否则我们必须写多条 SQL 实现同样的功能。
- 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;
注意,当 order_total 大于 200000 时,orders 会被插入到 large_orders 和 special_orders 中。这可能不是你想要的结果,如果你只想让 orders 插入到 special_orders 表中,你只需要把 ALL 替换成 FIRST, 如下。
- 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 SQL 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-06-18
-- Created by ShangBo on 2015-06-17
-- End
- 上一篇Oracle 在字符串中输入单引号或特殊字符
- 下一篇Oracle UPDATE 语句
0 0
- INSERT 语句 ORACLE / MSSQL
- oracle中的insert语句
- oracle中的insert语句
- oracle insert select语句
- Oracle INSERT 语句
- Oracle INSERT 语句
- oracle拼接insert语句
- Oracle 插入insert语句
- oracle中的insert语句(转)
- Oracle-Insert all语句学习
- Oracle insert all语句介绍
- Oracle INSERT ALL 语句介绍
- Oracle insert all语句介绍
- ORACLE insert 语句中的sql injection
- Insert 语句中同时带查询(Oracle)
- oracle中合并insert、update语句
- Oracle的INSERT ALL和MERGE语句
- Oracle时间型数据的insert语句
- Android----让你的状态栏变色-----沉浸式状态栏解决方案
- Android文件(File)操作
- Rotate实现围绕中心旋转动画
- Android word /excel/ppt 显示
- <转>整合Kafka到Spark Streaming——代码示例和挑战
- Oracle INSERT 语句
- 二进制mysql2.7.16下载地址及安装步骤
- ioc和aop
- Android中HttpURLConnection与HttpClient的使用与封装
- ReactNative安装的点点滴滴
- recyclerview的notifyDataSetChang不刷新问题(转载)
- HTTP Status 500 - java.lang.IllegalStateException: No output folder
- Java mail 发送接收邮件
- Spring的IOC原理[通俗解释一下]