Ce este PostgreSQL Exists?
Operatorul EXISTS testează dacă există un rând (rânduri) într-o subinterogare. Aceasta înseamnă că operatorul este utilizat împreună cu o subinterogare. Se spune că operatorul Exists a fost îndeplinit atunci când se găsește cel puțin un rând în subinterogare. Puteți utiliza această operațiune împreună cu instrucțiunile SELECT, UPDATE, INSERT și DELETE.
În acest tutorial PostgreSQL, veți afla următoarele:
- Sintaxă
- Cu declarația SELECT
- Cu declarația INSERT
- Cu declarația UPDATE
- Cu declarația DELETE
- Cu pgAdmin
Sintaxă
Iată sintaxa pentru instrucțiunea PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Sintaxa de mai sus arată că operatorul EXISTS acceptă un argument, care este o subinterogare. Subinterogarea este pur și simplu o instrucțiune SELECT care ar trebui să înceapă cu un SELECT * în locul unei liste de nume de coloane sau expresii.
Cu declarația SELECT
Vedeți cum să utilizați o instrucțiune SELECT cu operatorul EXISTS. Avem următoarele tabele:
Carte:
Preț:
Rulați următoarea declarație:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Aceasta returnează următoarele:
Comanda de mai sus ar trebui să returneze toate înregistrările din tabelul Cărții al căror id se potrivește cu ID-ul oricărei înregistrări din subcontest S-a potrivit un singur id. Prin urmare, o singură înregistrare a fost returnată.
Cu declarația INSERT
Putem folosi operatorul EXISTS într-o declarație INSERT. Avem următoarele 3 tabele:
Carte:
Preț:
Preț2:
Apoi putem rula următoarea declarație:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Tabelul de prețuri este acum după cum urmează:
Rândul cu un ID 5 în tabelul denumit Price2 a fost potrivit. Această înregistrare a fost apoi inserată în tabelul Prețuri.
Cu declarația UPDATE
Putem folosi operatorul EXISTS într-o declarație UPDATE.
Rulați următoarea interogare:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Actualizăm coloana prețurilor din tabelul Prețuri. Scopul nostru este ca prețurile articolelor care partajează un id să fie aceleași. S-a potrivit un singur rând, adică 5.
Cu toate acestea, deoarece prețurile sunt egale, adică 205, nu s-a făcut nicio actualizare. Dacă ar exista o diferență, s-ar fi făcut o actualizare.
Cu declarația DELETE
O declarație PostgreSQL DELETE poate utiliza operatorul EXISTS. Iată un exemplu:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Tabelul de prețuri este acum după cum urmează:
Rândul cu un ID 5 a fost șters.
Cu pgAdmin
Acum să vedem cum pot fi efectuate aceste acțiuni folosind pgAdmin.
Cu declarația SELECT
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pasul 1) Conectați-vă la contul dvs. pgAdmin.
Pasul 2)
- Din bara de navigare din stânga - Faceți clic pe Baze de date.
- Faceți clic pe Demo.
Pasul 3) Tastați interogarea în editorul de interogări:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Pasul 4) Faceți clic pe butonul Executare.
Ar trebui să returneze următoarele:
Cu declarația INSERT
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pasul 1) Conectați-vă la contul dvs. pgAdmin.
Pasul 2)
- Din bara de navigare din stânga - Faceți clic pe Baze de date.
- Faceți clic pe Demo.
Pasul 3) Tastați interogarea în editorul de interogări:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Pasul 4) Faceți clic pe butonul Executare.
Tabelul de prețuri ar trebui să fie acum după cum urmează:
Cu declarația UPDATE
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pasul 1) Conectați-vă la contul dvs. pgAdmin.
Pasul 2)
- Din bara de navigare din stânga - Faceți clic pe Baze de date.
- Faceți clic pe Demo.
Pasul 3) Tastați interogarea în editorul de interogări:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Pasul 4) Faceți clic pe butonul Executare.
Tabelul de prețuri ar trebui să fie acum după cum urmează:
Cu declarația DELETE
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pasul 1) Conectați-vă la contul dvs. pgAdmin.
Pasul 2)
- Din bara de navigare din stânga - Faceți clic pe Baze de date.
- Faceți clic pe Demo.
Pasul 3) Tastați interogarea în editorul de interogări:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Pasul 4) Faceți clic pe butonul Executare.
Tabelul de prețuri ar trebui să fie acum după cum urmează:
rezumat
- Operatorul EXISTS testează dacă există un rând (rânduri) într-o subinterogare.
- Se folosește cu o subinterogare și se spune că a fost îndeplinită atunci când subinterogarea returnează cel puțin un rând.
- Este utilizat împreună cu instrucțiunile SELECT, UPDATE, INSERT și DELETE.
Descărcați baza de date utilizată în acest tutorial