Kas ir PostgreSQL pastāv?
Operators EXISTS pārbauda, vai apakšvaicājumā pastāv rinda (-s). Tas nozīmē, ka operators tiek izmantots kopā ar apakšvaicājumu. Tiek uzskatīts, ka operators Exists ir izpildīts, kad apakšvaicājumā ir atrasta vismaz viena rinda. Šo darbību varat izmantot kopā ar SELECT, UPDATE, INSERT un DELETE paziņojumiem.
Šajā PostgreSQL apmācībā jūs uzzināsiet sekojošo:
- Sintakse
- Ar SELECT paziņojumu
- Ar INSERT paziņojumu
- Ar atjaunināšanas paziņojumu
- Ar DELETE paziņojumu
- Ar pgAdmin
Sintakse
Šeit ir teikuma PostgreSQL EXISTS sintakse:
WHERE EXISTS (subquery);
Iepriekš minētā sintakse parāda, ka operators EXISTS iekļauj argumentu, kas ir apakšvaicājums. Apakšvaicājums ir vienkārši SELECT priekšraksts, kuram jāsākas ar SELECT *, nevis kolonnu nosaukumu vai izteicienu saraksta.
Ar SELECT paziņojumu
Ļaujiet redzēt, kā lietot SELECT priekšrakstu ar operatoru EXISTS. Mums ir šādas tabulas:
Grāmata:
Cena:
Palaidiet šādu paziņojumu:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Tādējādi tiek parādīts:
Iepriekš norādītajai komandai ir jāatgriež visi tabulas Book ieraksti, kuru ID sakrīt ar visu subquery ierakstu ID. Tika saskaņots tikai viens ID. Tādējādi tika atgriezts tikai viens ieraksts.
Ar INSERT paziņojumu
Operatoru EXISTS mēs varam izmantot INSERT paziņojumā. Mums ir šādas 3 tabulas:
Grāmata:
Cena:
2. cena:
Pēc tam mēs varam izpildīt šādu paziņojumu:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Cenu tabula tagad ir šāda:
Tabulas rinda ar ID 5 tika saskaņota. Pēc tam šis ieraksts tika ievietots cenu tabulā.
Ar atjaunināšanas paziņojumu
Operatoru EXISTS mēs varam izmantot UPDATE paziņojumā.
Palaidiet šādu vaicājumu:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Mēs atjauninām cenu tabulas Cenu sleju. Mūsu mērķis ir panākt, lai vienību cenas, kurām ir kopīgs ID, būtu vienādas. Tika saskaņota tikai viena rinda, tas ir, 5.
Tomēr, tā kā cenas ir vienādas, tas ir, 205, atjauninājums netika veikts. Ja būtu kāda atšķirība, būtu veikts atjauninājums.
Ar DELETE paziņojumu
PostgreSQL DELETE paziņojumā var izmantot operatoru EXISTS. Šeit ir piemērs:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Cenu tabula tagad ir šāda:
Rinda ar ID ir 5.
Ar pgAdmin
Tagad redzēsim, kā šīs darbības var veikt, izmantojot pgAdmin.
Ar SELECT paziņojumu
Lai to paveiktu, izmantojot pgAdmin, rīkojieties šādi:
1. darbība. Piesakieties savā pgAdmin kontā.
2. solis)
- Kreisajā pusē esošajā navigācijas joslā noklikšķiniet uz Databases.
- Noklikšķiniet uz Demo.
3. darbība. Vaicājuma redaktorā ierakstiet vaicājumu:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
4. solis) Noklikšķiniet uz pogas Izpildīt.
Tam jāatgriež:
Ar INSERT paziņojumu
Lai to paveiktu, izmantojot pgAdmin, rīkojieties šādi:
1. darbība. Piesakieties savā pgAdmin kontā.
2. solis)
- Kreisajā pusē esošajā navigācijas joslā noklikšķiniet uz Databases.
- Noklikšķiniet uz Demo.
3. darbība. Vaicājuma redaktorā ierakstiet vaicājumu:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
4. solis) Noklikšķiniet uz pogas Izpildīt.
Cenu tabulai tagad jābūt šādai:
Ar atjaunināšanas paziņojumu
Lai to paveiktu, izmantojot pgAdmin, rīkojieties šādi:
1. darbība. Piesakieties savā pgAdmin kontā.
2. solis)
- Kreisajā pusē esošajā navigācijas joslā noklikšķiniet uz Databases.
- Noklikšķiniet uz Demo.
3. darbība. Vaicājuma redaktorā ierakstiet vaicājumu:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
4. solis) Noklikšķiniet uz pogas Izpildīt.
Cenu tabulai tagad jābūt šādai:
Ar DELETE paziņojumu
Lai to paveiktu, izmantojot pgAdmin, rīkojieties šādi:
1. darbība. Piesakieties savā pgAdmin kontā.
2. solis)
- Kreisajā pusē esošajā navigācijas joslā noklikšķiniet uz Databases.
- Noklikšķiniet uz Demo.
3. darbība. Vaicājuma redaktorā ierakstiet vaicājumu:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
4. solis) Noklikšķiniet uz pogas Izpildīt.
Cenu tabulai tagad jābūt šādai:
Kopsavilkums
- Operators EXISTS pārbauda, vai apakšvaicājumā pastāv rinda (-s).
- To lieto kopā ar apakškomisiju, un tiek uzskatīts, ka tas ir izpildīts, kad apakškomanda atgriež vismaz vienu rindu.
- To lieto kopā ar priekšrakstiem SELECT, UPDATE, INSERT un DELETE.
Lejupielādējiet šajā apmācībā izmantoto datu bāzi