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

相关文章

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带