Rumah >pangkalan data >Oracle >Apakah kegunaan not exists dalam oracle

Apakah kegunaan not exists dalam oracle

WBOY
WBOYasal
2022-03-03 10:46:2726749semak imbas

Dalam Oracle, "tidak wujud" digunakan untuk menentukan sama ada klausa mengembalikan set hasil Jika klausa mengembalikan set hasil, ia adalah palsu Jika klausa tidak mengembalikan set hasil, ia adalah benar . Sintaks ialah "pilih * daripada daul yang tidak wujud (keadaan pertanyaan klausa)".

Apakah kegunaan not exists dalam oracle

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

Apakah penggunaan not exists dalam oracle?

wujud: Penekanan adalah sama ada untuk mengembalikan set hasil, dan tidak perlu mengetahui perkara yang dikembalikan. Contohnya:

  select name from student where sex = 'm' and mark exists(select 1 from grade where ...)

Selagi ada panduan klausa mempunyai set hasil yang dikembalikan, maka keadaan wujud ditubuhkan. ...", maka medan yang dikembalikan ialah 2. Nombor ini tidak bermakna. . Jadi klausa wujud tidak mengambil berat tentang apa yang dikembalikan, tetapi sama ada terdapat set hasil yang dikembalikan.

Perbezaan terbesar antara wujud dan dalam ialah klausa dalam hanya boleh mengembalikan satu medan, seperti:

  select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)

, klausa dalam mengembalikan tiga medan, ini tidak betul . Klausa wujud dibenarkan, tetapi hanya membenarkan satu medan untuk dikembalikan.

Dan tidak wujud dan tidak dalam adalah berlawanan dengan wujud dan dalam masing-masing.

  • wujud (sql mengembalikan set keputusan sebagai benar)

  • tidak wujud (sql tidak mengembalikan set hasil sebagai benar)

Proses tidak wujud diterangkan secara terperinci di bawah:

Seperti berikut:

Jadual A

NAMA ID

1 A1

2 A2

3 A3

Jadual B

NAMA ID AID

1 1 B1

2 2 B2

3 2 B3

Jadual A dan jadual B mempunyai hubungan 1-dengan-banyak A.ID => B.AID

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)

Keputusan pelaksanaan ialah

1 A1

2 A2

Sebabnya boleh dianalisis seperti berikut

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据

TIDAK WUJUD adalah sebaliknya

SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)

Hasil pelaksanaan adalah

3 A3

Exists = In, makna adalah sama tetapi terdapat sedikit perbezaan sintaks. kurang cekap, yang mungkin menjadi sebab mengapa indeks tidak akan dilaksanakan

SELECT ID,NAME FROM A  WHERE ID IN (SELECT AID FROM B)
TIDAK WUJUD = TIDAK DALAM , maksudnya sama tetapi terdapat sedikit perbezaan dalam sintaks

SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)
Kadangkala kita akan menghadapi situasi di mana kita ingin memilih lajur tertentu tanpa ulangan, menggunakan lajur tertentu sebagai syarat pemilihan dan lajur lain akan dikeluarkan secara normal.

Tutorial yang disyorkan: "

Oracle Tutorial Video"

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

Kenyataan:
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