Rumah > pangkalan data > Oracle > teks badan

Apakah kegunaan gabungan ke dalam oracle

WBOY
Lepaskan: 2022-03-02 13:47:24
asal
22757 orang telah melayarinya

Dalam Oracle, "merge into" digunakan untuk mengemas kini data dalam jadual Anda boleh memasukkan data dari satu jadual ke dalam jadual yang lain Jika data sudah ada dalam jadual yang dimasukkan data tidak wujud, data baru akan ditambah pada jadual yang dimasukkan.

Apakah kegunaan gabungan ke dalam oracle

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Apakah penggunaan merge dalam Oracle

Oracle9g memperkenalkan arahan MERGE Anda boleh melakukan operasi sisipan dan kemas kini pada masa yang sama dalam satu pernyataan SQL memilih daripada satu atau lebih Pilih baris dalam sumber data untuk dikemas kini atau dimasukkan ke dalam satu atau lebih jadual Dalam Oracle 10g, MERGE mempunyai peningkatan berikut:

1 Klausa KEMASKINI atau INSERT adalah pilihan

fasal 2 , UPDATE dan INSERT boleh ditambah dengan klausa WHERE

3. Gunakan predikat penapis malar dalam keadaan ON untuk memasukkan semua baris ke dalam jadual sasaran, tanpa menyambungkan jadual sumber dan jadual sasaran

4. Klausa KEMASKINI boleh diikuti dengan klausa PADAM untuk mengalih keluar beberapa baris yang tidak diperlukan

5. Jadual sumber ialah jadual diikuti dengan kata kunci menggunakan, dan jadual sasaran ialah jadual yang akan digabungkan ke dalam

6 Semua kemas kini, sisipan dan pemadaman dalam gabungan ke dilakukan pada jadual sasaran. Memandangkan merge into operation table telah diformulasikan, kemas kini, insert, dan delete tidak perlu memaparkan nama jadual

7. Secara ringkasnya, fungsi merge into adalah untuk menyelesaikan masalah penggunaan jadual B dan data jadual A baru Jika Jika ia tidak wujud dalam jadual A, masukkan data daripada jadual B ke dalam jadual A atau masukkan data ke dalam jadual Jika jadual sudah mempunyai data, kemas kini, jika tidak tambah data baharu.
Sintaks:

MERGE INTO [your table-name] [rename your table here]  
  USING ( [write your query here] )[rename your query-sql and using just like a table]  
  ON ([conditional expression here] AND [...]...)  
  WHEN MATHED THEN [here you can execute some update sql or something else ]  
  WHEN NOT MATHED THEN [execute something else here ! ]
Salin selepas log masuk

Seterusnya, mari kita uji terus:

Keperluan 1: Masukkan sekeping data ke dalam jadual, dan kemas kini jika data sudah wujud dalam jadual . Sebaliknya, tambahkan

Mula-mula buat jadual TEST_ONE

create table TEST_ONE(
  ID   NUMBER not null
    primary key,
  NAME VARCHAR2(255),
  IP   VARCHAR2(255),
  MEMO VARCHAR2(255))commit;
Salin selepas log masuk

Tambah beberapa keping data sebagai data ujian

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (1, '2', '3', '周文军');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (2, '66', '366', '2656');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (3, '5656', '626', '2626');
INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (4, '5656', '2626', '626');
Salin selepas log masuk

Baiklah, jadual data kami ada telah dibina. Seperti yang ditunjukkan di bawah:
Apakah kegunaan gabungan ke dalam oracle
Jika kami perlu menambah sekeping data, kami biasanya melakukannya seperti ini

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (5, 'mrhu', '127.0.0.1.0', '王先生的IP');
Salin selepas log masuk

Tetapi kami berharap dapat menggunakan ID untuk menilai pertama. Jika data tidak ditambah, terdapat Bagaimana untuk melaksanakan kemas kini data ini?

Kemudian perintah gabungan menjadi di sini, masukkan kod:

merge into TEST_ONE mtb using (select '5' as id, 'mrhu' as name,'127.0.0.1.0' as ip,'王先生的IP' as memo from dual)mmb on (mtb.id = mmb.id)when matched THENupdate set mtb.name = mmb.name,mtb.ip = mmb.ip,mtb.memo=mmb.memo
when not matched theninsert (mtb.id, mtb.name,mtb.ip,mtb.memo) VALUES(mmb.id,mmb.name,mmb.ip,mmb.memo);
Salin selepas log masuk

Jalankan seperti berikut:
Apakah kegunaan gabungan ke dalam oracle
Mari kita lihat data dalam jadual:
Apakah kegunaan gabungan ke dalam oracle
Data berjaya ditambahkan!

Jadi bagaimana kita menguji kemas kini? Ia sangat mudah. ​​Kami menukar memo='IP En. Wang' kepada memo='IP gadis cantik ini' untuk ujian

merge into TEST_ONE mtb using (select '5' as id, 'mrhu' as name,'127.0.0.1.0' as ip,'本大美女的IP' as memo from dual)mmb on (mtb.id = mmb.id)when matched THENupdate set mtb.name = mmb.name,mtb.ip = mmb.ip,mtb.memo=mmb.memo
when not matched theninsert (mtb.id, mtb.name,mtb.ip,mtb.memo) VALUES(mmb.id,mmb.name,mmb.ip,mmb.memo);
Salin selepas log masuk

Jalankan seperti berikut:
Apakah kegunaan gabungan ke dalam oracle
Mari lakukannya sekali lagi Lihat data dalam jadual:
Apakah kegunaan gabungan ke dalam oracle
Data telah berjaya dikemas kini!

Keperluan 2: Tambahkan data dalam jadual A ke jadual B. Ia dikehendaki menilai mengikut kunci utama Jika data disertakan, kemas kini. Jika tidak, tambahkan

Kami mencipta satu lagi jadual TEST_TWO Sebagai jadual B, TEST_ONE sebagai jadual A

create table tes(
  ID   NUMBER not null
    primary key,
  CODE VARCHAR2(255),
  MEMO VARCHAR2(255));commit;
Salin selepas log masuk

Sekarang jadual TEST_TWO telah dibuat, mari tambahkan sekeping data dahulu!

INSERT INTO ROOT.TEST_TWO (ID, CODE, MEMO) VALUES (5, 'mrhu', '隔壁老王的IP');
Salin selepas log masuk

Mari kita lihat data dalam TEST_TWO sekali lagi:
Apakah kegunaan gabungan ke dalam oracle
Mari import data dalam TEST_ONE ke dalam jadual kami yang baru dibuat, kami mendapati bahawa jadual TEST_TWO Terdapat sekeping data dalam TEST_ONE dengan ID 5. Terdapat juga sekeping data dengan ID 5 dalam TEST_ONE Kesan pelaksanaan yang dijangkakan ialah nilai medan memo data dengan ID 5 dalam TEST_TWO akan dikemas kini. ke 'IP wanita cantik ini' dalam TEST_ONE, dan nilai lain akan dikemas kini.

Mari tulis kod untuk mengesahkan:

merge into TEST_TWO mtb using (select id,name,ip,memo from TEST_ONE) mmb on (mtb.id = mmb.id)when matched THENUPDATE set mtb.code = mmb.name,mtb.memo = mmb.memo
when not matched THENinsert (mtb.id,mtb.code,mtb.memo) values (mmb.id,mmb.name,mmb.memo);
Salin selepas log masuk

Mari lihat kesannya:
Apakah kegunaan gabungan ke dalam oracle
Hasil pelaksanaan adalah konsisten dengan hasil yang dijangkakan, gabungkan ke Have anda belajar cara menggunakannya? Jika anda suka, sila ikuti dan sokong!

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Apakah kegunaan gabungan ke dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan