oracle9i学习笔记之十八 Oracle9i对DML和DDL语句的扩展

2023-12-16 21:32

本文主要是介绍oracle9i学习笔记之十八 Oracle9i对DML和DDL语句的扩展,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.语句回顾
1)用INSERT语句添加新行到表中

  INSERT INTO table[(column [,column...])]
  VALUES (value[,value...]);
 
  用此语法一次只能插入一行:
  例:
     INSERT INTO dept(deptno,dname,loc)   
     VALUES (70,'Public Relations','shenyang');

2)用UPDATE语句修改存在的行
 
  UPDATE table
  SET    column=value[,column=value,...]
  [WHERE condition];
 
  -一次可以修改多行
  -如果使用了WHERE子句,可以指定一行或多行被修改
  例:
     UPDATE emp
     SET    deptno=30
     WHERE  empno=7369;   

2.多表INSERT语句
1)INSERT...SELECT语句能够作为单个的DML语句的一部分用于插入行到多表中
2)多表INSERT语句能够被用在数据仓库系统中从一个或多个操作源转移数据到一组目的表中
3)Oracle9i引入下面的多表插入语句的类型:
  -无条件INSERT
  -条件ALL INSERT
  -条件FIRST INSERT
  -枢轴式(Pivoting)INSERT

3.无条件INSERT语句
 
1)语法
  INSERT ALL
         [insert_into_value][values_clause]
  (subquery)

2)例子
  -从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;

4.条件INSERT语句
1)语法
  INSERT ALL
       [WHEN condition THEN]
             [insert_into_clause][values_clause]
  (subquery)

2)例子
  -从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;
   
5.条件FIRST INSERT
1)语法
 
  INSERT FIRST
      [WHEN condition THEN]
               [insert_into_clause][values_clause]
      [ELSE]
               [insert_into_clause][values_clause]
  (subquery)

2)例子
  -从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;

6.枢轴式(Pivoting) INSERT

1)支持从非关系数据库表中接受一组销售记录
  sales_source_data的格式如下:
    empno,week_id,sales_MON,sales_TUE,sales_WED,sales_THUR,sales_FRI
2)你可能想要以一种典型的相关格式存储这些记录到sales_info(empno,week,sales)表中
3)使用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;

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luyangever/archive/2008/12/13/3510773.aspx

这篇关于oracle9i学习笔记之十八 Oracle9i对DML和DDL语句的扩展的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/501959

相关文章

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用