ce este PostgreSQL există?
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 cel puțin un rând se găsește în subinterogare. Puteți utiliza această operație împreună cu SELECT, UPDATE, INSERT și DELETE declarații.
în acest Tutorial PostgreSQL, veți afla următoarele:
- sintaxă
- cu select Statement
- cu INSERT Statement
- cu Update Statement
- cu DELETE Statement
- cu pgAdmin
sintaxă
aici este sintaxa pentru PostgreSQL există declarație:
WHERE EXISTS (subquery);
sintaxa de mai sus arată că operatorul EXISTS preia un argument, care este un subquery. Subinterogarea este pur și simplu o instrucțiune SELECT care ar trebui să înceapă cu un SELECT * în loc de o listă de nume de coloane sau expresii.
cu instrucțiunea SELECT
să vedem cum se utilizează 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 Price WHERE Book.id = Price.id);
aceasta returnează următoarele:
comanda de mai sus ar trebui să returneze toate înregistrările din tabelul de carte al cărui id se potrivește cu id-ul oricărei înregistrări de către subinterogare. Doar un singur id a fost potrivit. Prin urmare, a fost returnată o singură înregistrare.
cu instrucțiunea INSERT
putem folosi operatorul EXISTS într-o instrucțiune INSERT. Avem următoarele 3 tabele:
carte:
Preț:
Preț2:
putem rula apoi următoarea declarație:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
tabelul de prețuri este acum după cum urmează:
rândul cu un id de 5 în tabelul numit Price2 a fost potrivit. Această înregistrare a fost apoi introdusă în tabelul de prețuri.
cu instrucțiunea de actualizare
putem folosi operatorul EXISTS într-o instrucțiune de actualizare.
rulați următoarea interogare:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
actualizăm coloana de preț a tabelului de prețuri. Scopul nostru este ca prețurile articolelor care împărtășesc un id să fie aceleași. Doar un rând a fost potrivit, adică 5.
cu toate acestea, deoarece prețurile sunt egale, adică 205, nu s-a făcut nicio actualizare. Dacă ar fi existat o diferență, s-ar fi făcut o actualizare.
cu instrucțiunea DELETE
o declarație de ștergere PostgreSQL poate utiliza operatorul EXISTS. Iată un exemplu:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
tabelul de prețuri este acum după cum urmează:
rândul cu un id de 5 a fost șters.
cu pgAdmin
acum să vedem cum pot fi efectuate aceste acțiuni folosind pgAdmin.
cu select Statement
pentru a realiza același lucru prin pgAdmin, faceți acest lucru:
Pasul 1) Conectați-vă la contul dvs.
Pas 2)
- din bara de navigare din bazele de date cu clic stânga.
- Faceți Clic Pe Demo.
Pasul 3) tastați interogarea în editorul de interogări:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Pasul 4) Faceți clic pe butonul Executare.
ar trebui să returneze următoarele:
cu Inserare declarație
pentru a realiza același lucru prin pgAdmin, faceți acest lucru:
Pasul 1) Conectați-vă la contul dvs.
Pas 2)
- din bara de navigare din bazele de date cu clic stânga.
- Faceți Clic Pe Demo.
Pasul 3) tastați interogarea în editorul de interogări:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE 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 instrucțiunea de actualizare
pentru a realiza același lucru prin pgAdmin, faceți acest lucru:
Pasul 1) Conectați-vă la contul dvs.
Pas 2)
- din bara de navigare din bazele de date cu clic stânga.
- Faceți Clic Pe Demo.
Pasul 3) tastați interogarea în editorul de interogări:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE 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 instrucțiunea DELETE
pentru a realiza același lucru prin pgAdmin, faceți acest lucru:
Pasul 1) Conectați-vă la contul dvs.
Pas 2)
- din bara de navigare din bazele de date cu clic stânga.
- Faceți Clic Pe Demo.
Pasul 3) tastați interogarea în editorul de interogări:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE 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 utilizează cu o subinterogare și se spune că a fost îndeplinită atunci când subinterogarea returnează cel puțin un rând.
- se utilizează împreună cu instrucțiunile SELECT, UPDATE, INSERT și DELETE.
Descărcați baza de date utilizată în acest Tutorial