PostgreSQL POSTOJI s SELECT Operator (Primjer)

โšก Pametni saลพetak

PostgreSQL EXISTS je Booleov operator koji provjerava vraฤ‡a li korelirani podupit bilo koji redak, omoguฤ‡ujuฤ‡i naredbama SELECT, INSERT, UPDATE i DELETE da uฤinkovito filtriraju podatke prema prisutnosti ili odsutnosti odgovarajuฤ‡ih zapisa.

  • ๐Ÿ“‹ Sintaksa: WHERE EXISTS (podupit) vraฤ‡a vrijednost true kada podupit vrati barem jedan redak.
  • ๐Ÿ”— Korelirani podupit: EXISTS povezuje unutarnje i vanjske upite, podudarajuฤ‡i retke na zajedniฤkom kljuฤu.
  • โšก Kratki spoj: EXISTS se zaustavlja na prvom odgovarajuฤ‡em retku, tako da se dobro skalira na velikim tablicama.
  • ๐Ÿ” ฤŒetiri izjave: Operator radi unutar upita SELECT, INSERT, UPDATE i DELETE.
  • ๐Ÿ›ก๏ธ NE POSTOJI: Sigurno iskljuฤuje retke i izbjegava NULL zamku koja prekida NOT IN.
  • ๐Ÿค– Upiti umjetne inteligencije: Asistenti generiraju EXISTS klauzule i oznaฤavaju rizike performansi koreliranih podupita.

PostgreSQL POSTOJI s Select Operahumka

ล to POSTOJI u PostgreSQL?

The PostgreSQL POSTOJI Operator provjerava postoji li redak(i) u podupitu. To znaฤi da se operator koristi zajedno s podupitorom. Kaลพe se da je operator EXISTS ispunjen kada se u podupitu pronaฤ‘e barem jedan redak. Ovu operaciju moลพete koristiti zajedno s naredbama SELECT, UPDATE, INSERT i DELETE.

PostgreSQL Sintaksa upita EXISTS

Ovdje je sintaksa za PostgreSQL EXISTS izjava:

WHERE EXISTS (subquery);

Gornja sintaksa pokazuje da operator EXISTS uzima argument koji je podupit. Podupit je jednostavno a SELECT izraz koji bi trebao zapoฤeti s SELECT * umjesto s popisom naziva stupaca ili izraza.

PostgreSQL POSTOJI s SELECT naredbom

Pogledajmo kako koristiti SELECT naredbu s operatorom EXISTS. Imamo sljedeฤ‡e tablice:

Rezervirati:

PostgreSQL POSTOJI s SELECT naredbom

Cijena:

PostgreSQL POSTOJI s SELECT naredbom

Pokrenite sljedeฤ‡u izjavu:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Ovo vraฤ‡a sljedeฤ‡e:

PostgreSQL POSTOJI s rezultatom SELECT naredbe

Gornja naredba trebala bi vratiti sve zapise u tablici knjiga ฤiji ID odgovara ID-u bilo kojeg zapisa podupita. Podudaran je samo jedan ID. Dakle, samo je jedan zapis vraฤ‡en.

PostgreSQL POSTOJI s INSERT naredbom

Operator EXISTS moลพemo koristiti u INSERT izjava. Imamo sljedeฤ‡e 3 tablice:

Rezervirati:

PostgreSQL POSTOJI s INSERT naredbom

Cijena:

PostgreSQL POSTOJI s INSERT naredbom

Cijena2:

PostgreSQL POSTOJI s INSERT naredbom

Zatim moลพemo pokrenuti sljedeฤ‡u izjavu:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Tablica cijena sada je sljedeฤ‡a:

PostgreSQL POSTOJI s rezultatom INSERT naredbe

Podudaran je redak s ID-om 5 u tablici pod nazivom Cijena2. Taj je zapis zatim umetnut u tablicu cijena.

PostgreSQL POSTOJI s naredbom UPDATE

Operator EXISTS moลพemo koristiti u izjavi UPDATE.

Pokrenite sljedeฤ‡i upit:

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

PostgreSQL POSTOJI s naredbom UPDATE

Aลพuriramo stupac cijena u tablici Cijena. Naลก cilj je da cijene artikala koji dijele isti ID budu iste. Uparen je samo jedan red, to jest 5.

Meฤ‘utim, buduฤ‡i da su cijene jednake, odnosno 205, aลพuriranje nije napravljeno. Da postoji razlika, aลพuriranje bi bilo napravljeno.

PostgreSQL POSTOJI s naredbom DELETE

A PostgreSQL Izjava DELETE moลพe koristiti operator EXISTS. Evo primjera:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Tablica cijena sada je sljedeฤ‡a:

PostgreSQL POSTOJI s naredbom DELETE

Redak s ID-om 5 je izbrisan.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Izvan SQL ljuske, isti EXISTS upiti mogu se vizualno izvrลกiti putem pgAdmin suฤelja. Sada pogledajmo kako se te radnje mogu izvrลกiti pomoฤ‡u pgAdmin-a:

S SELECT naredbom

U nastavku su navedeni koraci za koriลกtenje EXISTS upita u PostgreSQL s SELECT naredbom koristeฤ‡i pgAdmin:

Korak 1) Prijavite se na svoj pgAdmin raฤun. Otvorite pgAdmin i prijavite se na svoj raฤun koristeฤ‡i svoje vjerodajnice.

Korak 2) Izradite demo bazu podataka.

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Korak 3) Unesite upit u nastavku u ureฤ‘ivaฤ upita:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Korak 4) Pritisnite gumb Izvrลกi.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Uz naredbu INSERT

Da biste postigli isto putem pgAdmina, uฤinite ovo:

Korak 1) Prijavite se na svoj pgAdmin raฤun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

EXISTS izjava u PostgreSQL koristeฤ‡i pgAdmin

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Korak 4) Pritisnite gumb Izvrลกi.

EXISTS izjava u PostgreSQL koristeฤ‡i pgAdmin

Tablica cijena sada bi trebala biti sljedeฤ‡a:

EXISTS izjava u PostgreSQL koristeฤ‡i pgAdmin

Uz izjavu UPDATE

Da biste postigli isto putem pgAdmina, uฤinite ovo:

Korak 1) Prijavite se na svoj pgAdmin raฤun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

EXISTS izjava u PostgreSQL koristeฤ‡i pgAdmin

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

Korak 4) Pritisnite gumb Izvrลกi.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Tablica cijena sada bi trebala biti sljedeฤ‡a:

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Uz naredbu DELETE

Da biste postigli isto putem pgAdmina, uฤinite ovo:

Korak 1) Prijavite se na svoj pgAdmin raฤun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Pritisnite Demo.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Korak 4) Pritisnite gumb Izvrลกi.

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Tablica cijena sada bi trebala biti sljedeฤ‡a:

PostgreSQL EXISTS izjava koriลกtenjem pgAdmin-a

Preuzmite bazu podataka koriลกtenu u ovom vodiฤu

Pitanja i odgovori

EXISTS provjerava vraฤ‡a li korelirani podupit bilo koji redak i zaustavlja se na prvom podudaranju, tako da je prikladan za velike podupite. IN usporeฤ‘uje vrijednost s popisom i prilagoฤ‘uje male, konstantne skupove.

NOT IN moลพe vratiti nula redaka kada podupit sadrลพi NULL, jer usporedba postaje nepoznata. NOT EXISTS zanemaruje NULL-ove i ispravno procjenjuje svaki redak, ลกto ga ฤini pouzdanim izborom za anti-joinove.

Korelirani podupit referencira stupac iz vanjskog upita, kao ลกto je WHERE Book.id = Price.id. EXISTS ga ponovno provjerava za svaki vanjski redak i vraฤ‡a vrijednost true nakon ลกto se pronaฤ‘e podudaranje.

Da. EXISTS vraฤ‡a vrijednost true ฤim podupit proizvede jedan redak, tako da ne skenira ostale. Ovo ponaลกanje kratkog spoja ฤini ga uฤinkovitim na velikim koreliranim podupitima.

Ne. EXISTS samo provjerava vraฤ‡a li podupit redak, pa se SELECT *, SELECT 1 ili SELECT id ponaลกaju isto. Popis stupaca unutar podupita ne utjeฤe na rezultat.

Indeksirajte stupce spojene unutar podupita, zadrลพite uvjet korelacije sargableom i pokrenite EXPLAIN ANALYZE. PostgreSQL ฤesto prepisuje EXISTS kao uฤinkovito poluspajanje kada indeksi to podrลพavaju.

AI asistenti pretvaraju pravila na obiฤnom engleskom jeziku u EXISTS klauzule, grade korelirani podupit i upozoravaju na NOT IN NULL zamke. Takoฤ‘er predlaลพu indekse i EXPLAIN savjete za podeลกavanje.

Da. AI Copilot detektira obrasce podupita i prepisuje IN kao EXISTS ili NOT IN kao NOT EXISTS, poboljลกavajuฤ‡i sigurnost i performanse NULL-a na velikim tablicama.

Saลพmite ovu objavu uz: