转载一波春光 yangbosos@126.com的

一、Insert基础用法

语法:

Insert Into 表名 (字段1,字段2,字段3...)

Values (值1,值2,值3...)

例子:

INSERT INTO departments(department_id, department_name,

manager_id, location_id)

VALUES      (70, 'Public Relations', 100, 1700);

语法:

Insert Into 表名 (字段1,字段2,字段3...)

select 语句

不做任何解释,实在是没啥好说的〇_〇,注意别跟create table ...as select一样,insert中的select前面可没as ^_^

二、Unconditional INSERT ALL 用法

直接拿例子了:

INSERT  ALL

INTO sal_history VALUES(EMPID,HIREDATE,SAL)

INTO mgr_history VALUES(EMPID,MGR,SAL)

SELECT employee_id EMPID, hire_date HIREDATE,

salary SAL, manager_id MGR

FROM  employees

WHERE employee_id > 200;

解释:将select查询出来的结果,每返回一行就分别插入表sal_history 和mgr_history 中,优点就是只做一次查询即可分别查询2个表,假如使用基础用法,将进行2次查询。

三、Conditional INSERT ALL

还是直接拿例子:

INSERT ALL

WHEN SAL > 10000 THEN

INTO sal_history VALUES(EMPID,HIREDATE,SAL)

WHEN MGR > 200   THEN

INTO mgr_history VALUES(EMPID,MGR,SAL)

SELECT employee_id EMPID,hire_date HIREDATE,

salary SAL, manager_id MGR

FROM   employees

WHERE  employee_id > 200;

解释:将select查询出来的结果,每返回一行就判断,SAL > 10000 就插入表sal_history ,MGR > 200就插入mgr_history ,优点和前面提到一样。

四、Conditional FIRST INSERT

仍然是例子:

INSERT FIRST

WHEN SAL  > 25000          THEN

INTO special_sal VALUES(DEPTID, SAL)

WHEN HIREDATE like ('%00%') THEN

INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)

WHEN HIREDATE like ('%99%') THEN

INTO hiredate_history_99 VALUES(DEPTID, HIREDATE)

ELSE

INTO hiredate_history VALUES(DEPTID, HIREDATE)

SELECT department_id DEPTID, SUM(salary) SAL,

MAX(hire_date) HIREDATE

FROM   employees

GROUP BY department_id;

解释:将select查询出来的结果,每返回一行就判断,SAL  > 25000就插入表special_sal ,否则HIREDATE like ('%00%') ,符合就插入hiredate_history_00,前面2个条件还是不成力,就判断HIREDATE like ('%99%') ,符合就插入表hiredate_history_99 ,前面3个条件都不符合,只好插入表hiredate_history 了。

打完这我都头晕了,假如学过程序设计,看下面的清晰明了:

if  SAL  > 25000 then

INTO special_sal VALUES(DEPTID, SAL)

else

(

if HIREDATE like ('%00%') THEN

INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)

else

(

if HIREDATE like ('%99%') THEN

INTO hiredate_history_99 VALUES(DEPTID, HIREDATE)

else

INTO hiredate_history VALUES(DEPTID, HIREDATE)

)

)

假如还看不理解,看官方的这句话吧,“If the first WHEN clause evaluates to true, the subsequent WHEN clauses for this row should be skipped.”

五、Pivoting INSERT

最后还是例子:

INSERT ALL

INTO sales_info VALUES (employee_id,week_id,sales_MON)

INTO sales_info VALUES (employee_id,week_id,sales_TUE)

INTO sales_info VALUES (employee_id,week_id,sales_WED)

INTO sales_info VALUES (employee_id,week_id,sales_THUR)

INTO sales_info VALUES (employee_id,week_id, sales_FRI)

SELECT EMPLOYEE_ID, week_id, sales_MON, sales_TUE,

sales_WED, sales_THUR,sales_FRI

FROM sales_source_data;

解释:老实说,看不出有啥用法,真的非要说,咱就把它当作行列转换吧,如果上面表在加多一列,比如INTO sales_info VALUES (employee_id,week_id,week_which,sales_MON) 改成 INTO sales_info VALUES (employee_id,week_id,'星期一',sales_MON)

多表INSERT语句

1)INSERT...SELECT语句能够作为单个的DML语句的一部分用于插入行到多表中

2)多表INSERT语句能够被用在数据仓库系统中从一个或多个操作源转移数据到一组目的表中

3)Oracle9i引入下面的多表插入语句的类型:

-无条件INSERT

-条件ALL INSERT

-条件FIRST INSERT

-枢轴式(Pivoting)INSERT

无条件INSERT语句

语法:

INSERT ALL

[insert_into_value][values_clause]

(subquery)

例如:

-从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值

-用多表INSERT插入这些值到sal_history(empno,hiredate,sal)和mgr_history(empno,mgr,sal)表中

INSERT ALL

INTO sal_history VALUES(empno,hiredate,sal)

INTO mgr_history VALUES(empno,mgr,sal)

SELECT empno,hiredate,sal,mgr

FROM   emp

WHERE  empno>7698;

有条件INSERT语句

语法

INSERT ALL

[WHEN condition THEN]

[insert_into_clause][values_clause]

(subquery)

例子

-从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值

-如果sal大于$2500,用一个条件多表INSERT语句插入这些值到sal_history表中

-如果mgr大于7782,用一个多表INSERT语句插入这些值到mgr_history表中

INSERT ALL

WHEN sal>2500 THEN

INTO sal_history VALUES(empno,hiredate,sal)

WHEN mgr>7782 THEN

INTO mgr_history VALUES(empno,mgr,sal)

SELECT empno,hiredate,sal,mgr

FROM   emp

WHERE  empno>7698;

条件FIRST INSERT

语法

INSERT FIRST

[WHEN condition THEN]

[insert_into_clause][values_clause]

[ELSE]

[insert_into_clause][values_clause]

(subquery)

例子

-从emp表中选择empno大于7698雇员的empno,hiredate,sal和mgr值

-如果sal大于$2500,则用一个条件FIRST多表INSERT语句插入这些值到sal_history表中

-如果第一个WHEN子句的值为true,则该行后面的WHEN子句被跳过

-如果mgr大于7782,用一个条件FIRST多表INSERT语句插入这些值到mgr_history表中

INSERT FIRST

WHEN sal>2500 THEN

INTO sal_history VALUES(empno,hiredate,sal)

WHEN mgr>7782 THEN

INTO mgr_history VALUES(empno,mgr,sal)

SELECT empno,hiredate,sal,mgr

FROM   emp

WHERE  empno>7698;

枢轴式(Pivoting) INSERT

支持从非关系数据库表中接受一组销售记录

sales_source_data的格式如下:

empno,week_id,sales_MON,sales_TUE,sales_WED,sales_THUR,sales_FRI

你可能想要以一种典型的相关格式存储这些记录到sales_info(empno,week,sales)表中使用pivoting INSERT,从非关系数据库表转换销售记录集到关系格式

INSERT ALL

INTO sales_info VALUES(empno,week_id,sales_MON)

INTO sales_info VALUES(empno,week_id,sales_TUE)

INTO sales_info VALUES(empno,week_id,sales_WED)

INTO sales_info VALUES(empno,week_id,sales_THUR)

INTO sales_info VALUES(empno,week_id,sales_FRI)

SELECT empno,week_id,sales_MON,sales_TUE,sales_WED,sales_THUR,sales_FRI

FROM   sales_source_data;

什么是pivoting insert

create table sales_source_data (

employee_id number(6),

week_id number(2),

sales_mon number(8,2),

sales_tue number(8,2),

sales_wed number(8,2),

sales_thur number(8,2),

sales_fri number(8,2)

);

insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);

create table sales_info (

employee_id number(6),

week number(2),

sales number(8,2)

);

-- 现在要将上表的数据转换到下表中,

insert all

into sales_info values(employee_id,week_id,sales_mon)

into sales_info values(employee_id,week_id,sales_tue)

into sales_info values(employee_id,week_id,sales_wed)

into sales_info values(employee_id,week_id,sales_thur)

into sales_info values(employee_id,week_id,sales_fri)

select employee_id,week_id,sales_mon,sales_tue,

行转列

linux insert最后一行,insert基础用法及进阶相关推荐

  1. vector 清空 Linux,STL容器vector基础用法小结

    STL容器vector基础用法小结根据<ACM程序设计>写的,用实例展示vector用法. 方法:push_back(), insert(), erase(), clear(), size ...

  2. insert oracle用法,insert into select的实际用法,insertselect

    insert into select的实际用法,insertselect INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,... ...

  3. 【Linux防火墙】iptables基础用法及高级用法

    文章目录 iptables命令简介 1.语法 2.iptables命令选项输入顺序 3.选项讲解 4.基础用法示例 1.清除规则相关操作 2.查看相关规则及序列号 3.通过查看后的序列号删除规则 4. ...

  4. mysql中insert语句的五种用法

    文章目录 前言 一.values参数后单行插入 二.values参数后多行插入 三.搭配select插入数据 四.复制旧表的信息到新表 五.搭配set插入数据 总结 前言 insert语句是标准sql ...

  5. Linux的基本知识和基础操作

    Linux的基本知识和基础操作 一.基本知识 Linux是基于Unix的 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种 ...

  6. ORACLE的基础用法

    ORACLE的基础用法 转 自:http://blog.163.com/kelly_19831017/blog/static/6196787020083133348873/ sqlplus sys/o ...

  7. Linux下Mysql数据库的基础操作

    Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...

  8. linux第一阶段学习笔记基础

    linux学习 day01 1.计算机基础 运维人员的职责: 7*24是服务器稳定运行 数据不能丢失损坏 提升用户体验 常见的服务器种类 DELL DELL 1U 2U 2010 1850/1950 ...

  9. MongoDB 基础用法及学习笔记

    MongoDB 基础用法 环境配置与安装 安装 查看MongoDB版本 启动MongoDB服务 检查服务状态 启动服务 打开配置文件,连接MongoDB 查看数据列表 退出 MongoDB 连接 Mo ...

最新文章

  1. 更新TensorFlow 2.0的旧代码
  2. 黑鹰长期班.边程浪子系列教程
  3. 夏意秋尽-08年1月
  4. 成功解决TypeError: unsupported operand type(s) for +: 'dict_items' and 'list'
  5. C#——《C#语言程序设计》实验报告——继承与多态——银行ATM程序
  6. python token api_python接口自动化之token登录
  7. python如何使用字典中的值并进行比较_比较字典python中的值
  8. 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
  9. gstreamer/deepstream方面的博文,全网首发且唯一,有图为证
  10. ast java_一种基于AST的Java代码SSA单路径的生成方法技术
  11. 使用OBS直播软件进行直播推流
  12. 第十一节:抽象类和接口【java】
  13. 计算机桌面文件夹消失了,电脑桌面文件不见了怎么恢复?再也不担心系统故障...
  14. conda的environment未被激活解决方案
  15. 网吧上网小心绝地求生账号被盗
  16. 真没想到,vmware进入 bios设置 的方法是这样的
  17. python爬虫爬取图片并存入本地
  18. 主流的大数据BI软件有哪些?
  19. 如何给电脑安装双系统,电脑安装双系统教程
  20. 苹果iphone 6s手机测评

热门文章

  1. 爬动的蠕虫(C语言)
  2. Linux platform
  3. 工科学术论文书写攻略
  4. ZooKeeper原理和实践
  5. loaderruner
  6. 计算机考研要考科目,2022考研:计算机专业需要准备哪些科目?
  7. Android 2018优秀开源框架整理收藏
  8. 浏览器提示代理服务器出现问题,或则地址有误
  9. 《数据结构(C语言版)》严巍敏课件~第二章:线性表
  10. 花了一些力气研究aircv,搞一个后台找图识图的DEMO