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.pswp.cn/news/372069.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372069.shtml
英文地址,請注明出處:http://en.pswp.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;看我將來選擇永久搬到詹金斯時是否會遇到任何重大問題。 有很多麻煩-最值得注意的是&…