日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 实例用法,Oracle merge into用法以及相关例子示例

發(fā)布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 实例用法,Oracle merge into用法以及相关例子示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下的文章主要是對Oracle merge into用法以及相關(guān)例子的介紹,首先我們以O(shè)racle 9I中加入MERGE入手,以下就是文章的具體內(nèi)容的分析,希望你瀏覽完之后會給你帶來一些幫助在此方面。

語法:

MERGE?[hint]?INTO?[schema?.]?table?[t_alias]

USING?[schema?.]?{?table?|?view?|?subquery?}?[t_alias]

ON?(?condition?)

WHEN?MATCHED?THEN?merge_update_clause

WHEN?NOT?MATCHED?THEN?merge_insert_clause;

創(chuàng)建測試數(shù)據(jù)表:

create?table?tj_test(id?number,name?varchar2(20),age?number);

向表中插入數(shù)據(jù):

insert?into?tj_test?values?(1,'jan',23);

insert?into?tj_test?values?(2,'kk',22);

insert?into?tj_test?values?(3,'joe',27);

select?*?from?tj_test;

查詢結(jié)果如下:

1 jan 23

2 kk 22

3 joe 27

創(chuàng)建另一新表

create?table?tj_test1?as?select?*?from?tj_test?where1=0

插入一條數(shù)據(jù)

insert?into?tj_test1?values?(1,'jlk',23);

select?*?from?tj_test1

查詢結(jié)果如下:

1 jkl 23 --注意,這里的的NAME字段中的值是jkl

Oracle merge into用法使用MERGE,實現(xiàn)有則更新,無則插入,sql語句如下:

merge?into?tj_test1?tt1

using?tj_test?tt

on?(tttt1.id=tt.id)

when?matched?then

update?set

tttt1.name=tt.name,

tttt1.age=tt.age

when?not?matched?then

insert?values(

tt.id,

tt.name,

tt.age)

查詢tj_test1表(對比原來表中的數(shù)據(jù),更新了ID=1 ROW中字段NAME,同時多出兩條新數(shù)據(jù))

select?*?from?tj_test1

改變行數(shù)據(jù)如下:

1 jan 23 --這里的原有jkl值被更新

3 joe 27 --原來表中沒有的插入

2 kk 22 --原來表中沒有的插入

如果存在就更新,不存在就插入

9i已經(jīng)支持了,是Merge,但是只支持select子查詢,

如果是單條數(shù)據(jù)記錄,可以寫作select …… from dual的子查詢。

語法為:

MERGE?INTO?table

USING?data_source

ON?(condition)

WHEN?MATCHED?THEN?update_clause

WHEN?NOT?MATCHED?THEN?insert_clause;

如:

MERGE?INTO?course?c

USING?(SELECT?course_name,?period,

course_hours

FROM?course_updates)?cu

ON?(c.course_name=cu.course_name

ANDc.period=cu.period)

WHEN?MATCHED?THEN

UPDATE

SETc.course_hours=cu.course_hours

WHEN?NOT?MATCHED?THEN

INSERT?(c.course_name,?c.period,

c.course_hours)

VALUES?(cu.course_name,?cu.period,

cu.course_hours);

以上的相關(guān)內(nèi)容就是對Oracle merge into用法及例子的介紹,望你能有所收獲。

【編輯推薦】

【責(zé)任編輯:孫巧華 TEL:(010)68476606】

點贊 0

總結(jié)

以上是生活随笔為你收集整理的oracle 实例用法,Oracle merge into用法以及相关例子示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。