Mikä PostgreSQL on olemassa?
EXISTS-operaattori testaa, onko alikyselyssä rivejä. Tämä tarkoittaa, että operaattoria käytetään yhdessä alikyselyn kanssa. Olemassaolevan operaattorin sanotaan täyttyvän, kun vähintään yksi rivi löytyy alakyselystä. Voit käyttää tätä toimintoa yhdessä SELECT-, UPDATE-, INSERT- ja DELETE-käskyjen kanssa.
Tässä PostgreSQL-opetusohjelmassa opit seuraavat:
- Syntaksi
- SELECT-lauseella
- INSERT-lauseella
- UPDATE-lausunnolla
- DELETE-lauseella
- Kanssa pgAdmin
Syntaksi
Tässä on PostgreSQL EXISTS -käskyn syntaksi:
WHERE EXISTS (subquery);
Yllä oleva syntaksi osoittaa, että EXISTS-operaattori ottaa vastaan argumentin, joka on alikysely. Alakysely on yksinkertaisesti SELECT-käsky, jonka pitäisi alkaa SELECT * -sarakkeella sarakkeiden nimien tai lausekkeiden luettelon sijaan.
SELECT-lauseella
Katsotaanpa, kuinka SELECT-käskyä käytetään EXISTS-operaattorin kanssa. Meillä on seuraavat taulukot:
Kirja:
Hinta:
Suorita seuraava lause:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Tämä palauttaa seuraavan:
Yllä olevan komennon tulisi palauttaa kaikki Kirja-taulukon tietueet, joiden tunnus vastaa alikyselyn kaikkien tietueiden tunnusta. Vain yksi tunnus sovitettiin. Siksi vain yksi levy palautettiin.
INSERT-lauseella
Voimme käyttää EXISTS-operaattoria INSERT-lauseessa. Meillä on seuraavat 3 taulukkoa:
Kirja:
Hinta:
Hinta2:
Voimme sitten suorittaa seuraavan lauseen:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Hintataulukko on nyt seuraava:
Rivi, jonka tunnus on 5, taulukossa nimeltä Price2 sovitettiin. Tämä tietue lisättiin sitten hintataulukkoon.
UPDATE-lausunnolla
Voimme käyttää EXISTS-operaattoria UPDATE-käskyssä.
Suorita seuraava kysely:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Päivitämme hintataulukon hintasaraketta. Tavoitteenamme on, että nimiä jakavien tuotteiden hinnat ovat samat. Vain yksi rivi sovitettiin, toisin sanoen 5.
Koska hinnat ovat kuitenkin samat, eli 205, päivitystä ei tehty. Jos olisi ollut eroa, päivitys olisi tehty.
DELETE-lauseella
PostgreSQL DELETE -käsky voi käyttää EXISTS-operaattoria. Tässä on esimerkki:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Hintataulukko on nyt seuraava:
Rivi, jonka tunnus on 5, on poistettu.
Kanssa pgAdmin
Katsotaan nyt, kuinka nämä toiminnot voidaan suorittaa pgAdmin-sovelluksella.
SELECT-lauseella
Voit tehdä saman pgAdminin avulla seuraavasti:
Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.
Vaihe 2)
- Valitse vasemmalla olevasta siirtymispalkista Tietokannat.
- Napsauta Demo.
Vaihe 3) Kirjoita kysely kyselyeditoriin:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Vaihe 4) Napsauta Suorita-painiketta.
Sen pitäisi palauttaa seuraava:
INSERT-lauseella
Voit tehdä saman pgAdminin avulla seuraavasti:
Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.
Vaihe 2)
- Valitse vasemmalla olevasta siirtymispalkista Tietokannat.
- Napsauta Demo.
Vaihe 3) Kirjoita kysely kyselyeditoriin:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Vaihe 4) Napsauta Suorita-painiketta.
Hintataulukon tulisi nyt olla seuraava:
UPDATE-lausunnolla
Voit tehdä saman pgAdminin avulla seuraavasti:
Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.
Vaihe 2)
- Valitse vasemmalla olevasta siirtymispalkista Tietokannat.
- Napsauta Demo.
Vaihe 3) Kirjoita kysely kyselyeditoriin:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Vaihe 4) Napsauta Suorita-painiketta.
Hintataulukon tulisi nyt olla seuraava:
DELETE-lauseella
Voit tehdä saman pgAdminin avulla seuraavasti:
Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.
Vaihe 2)
- Valitse vasemmalla olevasta siirtymispalkista Tietokannat.
- Napsauta Demo.
Vaihe 3) Kirjoita kysely kyselyeditoriin:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Vaihe 4) Napsauta Suorita-painiketta.
Hintataulukon tulisi nyt olla seuraava:
Yhteenveto
- EXISTS-operaattori testaa, onko alikyselyssä rivejä.
- Sitä käytetään alikyselyssä, ja sen sanotaan täyttyvän, kun alikysely palauttaa vähintään yhden rivin.
- Sitä käytetään yhdessä SELECT-, UPDATE-, INSERT- ja DELETE-käskyjen kanssa.
Lataa tässä opetusohjelmassa käytetty tietokanta