Kaj obstaja PostgreSQL obstaja?
Operator EXISTS preizkusi, ali v podpoizvedbi obstajajo vrstice. To pomeni, da se operator uporablja skupaj s podpoizvedbo. Operator Exists naj bi bil izpolnjen, ko je v podpoizvedbi najdena vsaj ena vrstica. To operacijo lahko uporabite skupaj z izjavami SELECT, UPDATE, INSERT in DELETE.
V tej vadnici PostgreSQL boste izvedeli naslednje:
- Sintaksa
- Z izjavo SELECT
- Z izjavo INSERT
- Z izjavo UPDATE
- Z izjavo DELETE
- S pgAdmin
Sintaksa
Tu je sintaksa za stavek PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Zgornja sintaksa kaže, da operater EXISTS sprejme argument, ki je podpoizvedba. Podpoizvedba je preprosto stavek SELECT, ki naj se začne s SELECT * namesto s seznamom imen ali izrazov stolpcev.
Z izjavo SELECT
Poglejmo, kako uporabiti stavek SELECT z operaterjem EXISTS. Imamo naslednje tabele:
Knjiga:
Cena:
Zaženite naslednjo izjavo:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
To vrne naslednje:
Zgornji ukaz mora vrniti vse zapise v tabeli Book, katerih id se ujema z ID-jem vseh zapisov v podpoizvedbi. Ustrezen je bil samo en ID. Zato je bil vrnjen le en zapis.
Z izjavo INSERT
Operator EXISTS lahko uporabimo v stavku INSERT. Imamo naslednje 3 tabele:
Knjiga:
Cena:
Cena2:
Nato lahko zaženemo naslednjo izjavo:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Tabela cen je zdaj naslednja:
Vrstica z id 5 v tabeli z imenom Price2 je bila ujeta. Ta zapis je bil nato vstavljen v tabelo Cena.
Z izjavo UPDATE
Operator EXISTS lahko uporabimo v stavku UPDATE.
Zaženite naslednjo poizvedbo:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Posodabljamo stolpec s cenami v tabeli Cena. Naš cilj je, da so cene izdelkov, ki si delijo identiteto, enake. Ujemala se je samo ena vrstica, to je 5.
Ker pa so cene enake, torej 205, posodobitev ni bila izvedena. Če bi obstajala razlika, bi bila posodobljena.
Z izjavo DELETE
Stavek PostgreSQL DELETE lahko uporablja operator EXISTS. Tu je primer:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Tabela cen je zdaj naslednja:
Vrstica z id 5 je bila izbrisana.
S pgAdmin
Zdaj pa poglejmo, kako lahko ta dejanja izvedemo s pomočjo pgAdmin.
Z izjavo SELECT
Če želite to storiti s pomočjo pgAdmin, naredite to:
Korak 1) Prijavite se v svoj račun pgAdmin.
2. korak)
- V navigacijski vrstici na levi strani kliknite Baze podatkov.
- Kliknite Demo.
3. korak) Vnesite poizvedbo v urejevalnik poizvedb:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Korak 4) Kliknite gumb Izvedi.
Vrniti mora naslednje:
Z izjavo INSERT
Če želite to storiti s pomočjo pgAdmin, naredite to:
Korak 1) Prijavite se v svoj račun pgAdmin.
2. korak)
- V navigacijski vrstici na levi strani kliknite Baze podatkov.
- Kliknite Demo.
3. korak) Vnesite poizvedbo v urejevalnik poizvedb:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Korak 4) Kliknite gumb Izvedi.
Tabela cen naj bo zdaj naslednja:
Z izjavo UPDATE
Če želite to storiti s pomočjo pgAdmin, naredite to:
Korak 1) Prijavite se v svoj račun pgAdmin.
2. korak)
- V navigacijski vrstici na levi strani kliknite Baze podatkov.
- Kliknite Demo.
3. korak) Vnesite poizvedbo v urejevalnik poizvedb:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Korak 4) Kliknite gumb Izvedi.
Tabela cen naj bo zdaj naslednja:
Z izjavo DELETE
Če želite to storiti s pomočjo pgAdmin, naredite to:
Korak 1) Prijavite se v svoj račun pgAdmin.
2. korak)
- V navigacijski vrstici na levi strani kliknite Baze podatkov.
- Kliknite Demo.
3. korak) Vnesite poizvedbo v urejevalnik poizvedb:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Korak 4) Kliknite gumb Izvedi.
Tabela cen naj bo zdaj naslednja:
Povzetek
- Operator EXISTS preizkusi, ali v podpoizvedbi obstajajo vrstice.
- Uporablja se s podpoizvedbo in naj bi bila izpolnjena, ko podpoizvedba vrne vsaj eno vrstico.
- Uporablja se skupaj s stavki SELECT, UPDATE, INSERT in DELETE.
Prenesite zbirko podatkov, uporabljeno v tej vadnici