Oracle SQL精妙SQL语句讲解(二)

- 如果存在就更新,不存在就插入用一个语句实现 
DROP TABLE t_mg; 
CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10)); 

SELECT * FROM t_mg; 

MERGE INTO t_mg a 
USING (SELECT 'the code' code, 'the name' NAME FROM dual) b 
ON (a.code = b.code) 
WHEN MATCHED THEN 
UPDATE SET a.NAME = b.NAME 
WHEN NOT MATCHED THEN 
INSERT (code, NAME) VALUES (b.code, b.NAME); 

-- 抽取/删除重复记录 
DROP TABLE t_dup; 
CREATE TABLE t_dup AS SELECT 'code_'||ROWNUM code, dbms_random.string('z',5)NAME FROM dual CONNECT BY ROWNUM<=10; 
INSERT INTO t_dup SELECT 'code_'||ROWNUM code, dbms_random.string('z',5) NAMEFROM dual CONNECT BY ROWNUM<=2; 

SELECT * FROM t_dup; 

SELECT * FROM t_dup aWHERE a.ROWID <> (SELECT MIN(b.ROWID) FROM t_dup b WHERE a.code=b.code); 

SELECT b.code, b.NAME 
FROM (SELECT a.code, 
a.NAME, 
row_number() over(PARTITION BY a.code ORDER BY a.ROWID) rn 
FROM t_dup a) b 
WHERE b.rn > 1; 

-- IN/EXISTS的不同适用环境 
-- t_orders.customer_id有索引 
SELECT a.* 
FROM t_employees a 
WHERE a.employee_id IN 
(SELECT b.sales_rep_id FROM t_orders b WHERE b.customer_id = 12); 

SELECT a.* 
FROM t_employees a 
WHERE EXISTS (SELECT 1 
FROM t_orders b 
WHERE b.customer_id = 12 
AND a.employee_id = b.sales_rep_id); 

--t_employees.department_id有索引 
SELECT a.* 
FROM t_employees a 
WHERE a.department_id = 10 
AND EXISTS 
(SELECT 1 FROM t_orders b WHERE a.employee_id = b.sales_rep_id); 

SELECT a.* 
FROM t_employees a 
WHERE a.department_id = 10 
AND a.employee_id IN (SELECT b.sales_rep_id FROM t_orders b); 

-- FBI 
DROP TABLE t_fbi; 
CREATE TABLE t_fbi AS 
SELECT ROWNUM rn, dbms_random.STRING('z',10) NAME , SYSDATE + dbms_random.VALUE* 10 dt FROM dual 
CONNECT BY ROWNUM <=10; 

CREATE INDEX idx_nonfbiON t_fbi(dt); 

DROP INDEX idx_fbi_1; 
CREATE INDEX idx_fbi_1 ON t_fbi(trunc(dt)); 

SELECT * FROM t_fbiWHERE trunc(dt) = to_date('2006-09-21','yyyy-mm-dd') ; 

-- 不建议使用 
SELECT * FROM t_fbi WHERE to_char(dt, 'yyyy-mm-dd') = '2006-09-21'; 

-- LOOP中的COMMIT/ROLLBACK 
DROP TABLE t_loop PURGE; 
create TABLE t_loop AS SELECT * FROM user_objects WHERE 1=2; 

SELECT * FROM t_loop; 

-- 逐行提交 
DECLARE 
BEGIN 
FOR cur IN (SELECT * FROM user_objects) LOOP 
INSERT INTO t_loop VALUES cur; 
COMMIT; 
END LOOP; 
END;

-- 模拟批量提交
DECLARE 
v_count NUMBER; 
BEGIN 
FOR cur IN (SELECT * FROM user_objects) LOOP 
INSERT INTO t_loop VALUES cur; 
v_count := v_count + 1; 
IF v_count >= 100 THEN 
COMMIT; 
END IF; 
END LOOP; 
COMMIT; 
END; 

-- 真正的批量提交 
DECLARE 
CURSOR cur IS 
SELECT * FROM user_objects; 
TYPE rec IS TABLE OF user_objects%ROWTYPE; 
recs rec; 
BEGIN 
OPEN cur; 
WHILE (TRUE) LOOP 
FETCH cur BULK COLLECT 
INTO recs LIMIT 100; 
-- forall 实现批量 
FORALL i IN 1 .. recs.COUNT 
INSERT INTO t_loop VALUES recs (i); 
COMMIT; 
EXIT WHEN cur%NOTFOUND; 
END LOOP; 
CLOSE cur; 
END; 

转载于:https://www.cnblogs.com/yxj2006/p/6917536.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security –在一个应用程序中有两个安全领域

这篇博客文章主要是关于Spring Security配置的。 更具体地说&#xff0c;它打算显示如何在一个Web应用程序中配置两个不同的安全领域。 第一安全领域是针对浏览器客户端的。 它使我们能够在登录页面中登录并访问受保护的资源。 第二安全领域旨在处理来自android应用程序的REST…

基于Activiti工作流引擎实现的请假审核流程

概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用&#xff0c;该框架用的Activiti版本为5.19.0。本文档中主要以一个请假流程为例子进行说明&#xff0c;该例子的流程图如下&#xff1a; 这是一个可以正常运作的工作流业务了&#xff0c;但是它也有不足的地方&…

linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

1.下载ffmpeg源码,官网&#xff0c;我这里直接采用git 方式下载&#xff1a;下载ffmpeg.png终端输入git命令&#xff1a;静静等待~最后下载的版本为3.4.6 。image.png这里注意一下&#xff0c;刚开始我用的ndk版本是ndk-17b&#xff0c;在编译该版本的ffmpeg时始终失败&#xf…

4Web Service中的几个重要术语

4.1WSDL: web service definition language 直译:Webservice定义语言 1.对应一种类型的文件.wsdl 2.定义了webservice的服务端与客户端应用交互传递请求和响应数据的格式和方式 3.一个webservice对应一个唯一的esdl文档 4.2SOAP: simple object access protocal 直译:简单对象访…

云端:亚马逊,谷歌应用引擎,Windows Azure,Heroku,Jelastic

您想在云端吗&#xff1f; 您有很多选择。 我已经评估或使用了许多方法&#xff0c;因此这里有几句话。 &#xff08;当我使用Java时&#xff0c;我将包括一些与Java相关的注释&#xff0c;但大多数情况适用于所有&#xff08;受支持的&#xff09;语言。&#xff09; 但是在深…

JS-字符串操作-替换

<!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>无标题文档</title><style>p { border:10px solid #ccc; background:#FFC; width:400px; padding:20px;…

linux下kegg注释软件,KEGG数据中全部代谢反应和代谢物注释信息的下载

# 加载函数与R包 -----------------------------------------------------------------library(KEGGREST)library(plyr)source("./RbioRXN-master/RbioRXN-master/R/get.kegg.all.R")source("./RbioRXN-master/RbioRXN-master/R/get.kegg.byId.R")## KEGG数…

java常见异常

算术异常类&#xff1a;ArithmeticExecption空指针异常类&#xff1a;NullPointerException 类型强制转换异常&#xff1a;ClassCastException 数组负下标异常&#xff1a;NegativeArrayException 数组下标越界异常&#xff1a;ArrayIndexOutOfBoundsException 违背安全原则异常…

Spring Security 3 Ajax登录–访问受保护的资源

我看过一些有关Spring Security 3 Ajax登录的博客&#xff0c;但是我找不到解决如何调用基于Ajax的登录的博客&#xff0c;匿名用户正在Ajax中访问受保护的资源。 问题 – Web应用程序允许匿名访问某些部分&#xff0c;并且某些部分是受保护的资源&#xff0c;需要用户登录。 …

测试环境下将centos6.8升级到centos7的操作记录(转)

在测试环境下安装openstack&#xff0c;由于在centos6下安装openstack&#xff0c;针对源的问题有很多&#xff0c;安装起来很不顺利&#xff01; 但是在centos7下安装却很顺利&#xff0c;所以考虑将服务器由centos6升级到centos7 这个我是在测试机中运行的&#xff0c;建议不…

linux运维选择题,初学Linux练习题

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中3、一个linux用户给root发邮件&#xff0c;要求邮件标题为”help”&#xff0c…

[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

本文转自&#xff1a;http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了&#xff0c;之前有很多事情&#xff0c;所以拖了很久&#xff0c;非常抱歉。好了&#xff0c;废话不多说&#xff0c;下面开始正题。本篇仍然使用上一季的的项目背景&#xff08;系列地址…

使用Spring 3 MVC处理表单

本文是有关Spring 3的一系列文章的一部分。该系列的上一篇文章可以在此处获得 。 在本文中&#xff0c;我们向Spring MVC迈出了又一步。 [此外&#xff1a; 术语MVC的创建者提供的pdf 。]从上一篇文章构建&#xff0c;让我们添加将“联系人”添加到应用程序所需的代码。 首先&a…

插入排序法之——直接插入排序、折半插入排序、希尔排序

// test20.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<vector> #include<string> #include<queue> #include<stack> #include<cstring> #include<string.h> #include<de…

linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S

前言这是个困扰我一年多的问题&#xff0c;今天终于解决了……起因一年前将主系统换成 Arch Linux 后&#xff0c;其他一切正常就是 IDEA 的打开设置的快捷键 ctrlalts 失效&#xff0c;让我很是头疼。虽然不是很重要&#xff0c;但是对于我这种强迫症来说别提多难受了……我曾…

修改input的placeholder颜色

1、CSS选择器 因为每个浏览器的CSS选择器有所差异&#xff0c;所以需要针对每个浏览器做单独的设定。 ::-webkit-input-placeholder { /* WebKit browsers */ color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #999; } ::-moz-placeholder { /* Mozil…

解决Spring自动装配中的循环依赖

我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践。 使用Spring编写企业Web应用程序时&#xff0c;服务层中的服务量可能会增加。 服务层中的每个服务可能会消耗其他服务&#xff0c;这些服务将通过Autowire注入。 问题&#xff1a;当服务数量开始增加时&#xff0…

01.MD5加密

namespace _01.MD5加密{ class Program { static void Main(string[] args) { //MD5加密就是给想要的密码或者其它字符加密 //如果字符串被加密成MD5值之后,是不可逆的. //字符串123 的MD5 64位加密形式是 202cb962ac59075b964b07152d234b70 Console.WriteLine("请输入需要…

C语言数字3转变字符 3 程序,大学c语言知识点总结

大学c语言知识点总结C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。一起来看看大学c语言知识点总结吧!大学c语言知识点总结1、编译预处理不是C语言的一部分&#xff0c;不再运行时间。C语言编…

接触Jenkins(Hudson)API,第1部分

哪一个-哈德森还是詹金斯&#xff1f; 都。 几个月前&#xff0c;我开始使用Hudson v1.395来从事这个小项目&#xff0c;在出现巨大分歧之后又回到了这个项目。 我以此为契机&#xff0c;看我将来选择永久搬到詹金斯时是否会遇到任何重大问题。 有很多麻烦-最值得注意的是&…