Rumah >pangkalan data >Oracle >Apakah kegunaan not exists dalam oracle
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)".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
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
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!