Czym jest PostgreSQL?
Operator EXISTS sprawdza, czy w podzapytaniu istnieją wiersze. Oznacza to, że operator jest używany razem z podzapytaniem. Mówi się, że operator Exists został spełniony, gdy w podzapytaniu zostanie znaleziony co najmniej jeden wiersz. Tej operacji można używać wraz z instrukcjami SELECT, UPDATE, INSERT i DELETE.
W tym samouczku PostgreSQL nauczysz się następujących rzeczy:
- Składnia
- Z instrukcją SELECT
- Z instrukcją INSERT
- Z instrukcją UPDATE
- Z instrukcją DELETE
- Dzięki pgAdmin
Składnia
Oto składnia instrukcji PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Powyższa składnia pokazuje, że operator EXISTS przyjmuje argument, który jest podzapytaniem. Podzapytanie to po prostu instrukcja SELECT, która powinna zaczynać się od SELECT * zamiast listy nazw kolumn lub wyrażeń.
Z instrukcją SELECT
Zobaczmy, jak używać instrukcji SELECT z operatorem EXISTS. Mamy następujące tabele:
Książka:
Cena £:
Uruchom następującą instrukcję:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Zwraca to:
Powyższe polecenie powinno zwrócić wszystkie rekordy w tabeli Book, których identyfikator jest zgodny z identyfikatorem dowolnego rekordu z podzapytania. Dopasowano tylko jeden identyfikator. W związku z tym zwrócono tylko jeden rekord.
Z instrukcją INSERT
Możemy użyć operatora EXISTS w instrukcji INSERT. Mamy następujące 3 tabele:
Książka:
Cena £:
Cena2:
Następnie możemy uruchomić następującą instrukcję:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Cennik przedstawia się teraz następująco:
Wiersz o identyfikatorze 5 w tabeli o nazwie Price2 został dopasowany. Ten rekord został następnie wstawiony do tabeli cen.
Z instrukcją UPDATE
Możemy użyć operatora EXISTS w instrukcji UPDATE.
Uruchom następujące zapytanie:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Aktualizujemy kolumnę cen w tabeli cen. Naszym celem jest, aby ceny przedmiotów o wspólnym identyfikatorze były takie same. Dopasowano tylko jeden wiersz, czyli 5.
Ponieważ jednak ceny są równe, czyli 205, nie dokonano żadnej aktualizacji. Gdyby była różnica, aktualizacja zostałaby dokonana.
Z instrukcją DELETE
Instrukcja DELETE PostgreSQL może używać operatora EXISTS. Oto przykład:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Cennik przedstawia się teraz następująco:
Wiersz o identyfikatorze 5 został usunięty.
Dzięki pgAdmin
Zobaczmy teraz, jak te akcje można wykonać za pomocą pgAdmin.
Z instrukcją SELECT
Aby osiągnąć to samo za pomocą pgAdmin, wykonaj następujące czynności:
Krok 1) Zaloguj się do swojego konta pgAdmin.
Krok 2)
- Z paska nawigacji po lewej stronie kliknij Bazy danych.
- Kliknij opcję Demo.
Krok 3) Wpisz zapytanie w edytorze zapytań:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Krok 4) Kliknij przycisk Wykonaj.
Powinien zwrócić następujące informacje:
Z instrukcją INSERT
Aby osiągnąć to samo za pomocą pgAdmin, wykonaj następujące czynności:
Krok 1) Zaloguj się do swojego konta pgAdmin.
Krok 2)
- Z paska nawigacji po lewej stronie kliknij Bazy danych.
- Kliknij opcję Demo.
Krok 3) Wpisz zapytanie w edytorze zapytań:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Krok 4) Kliknij przycisk Wykonaj.
Cennik powinien teraz wyglądać następująco:
Z instrukcją UPDATE
Aby osiągnąć to samo za pomocą pgAdmin, wykonaj następujące czynności:
Krok 1) Zaloguj się do swojego konta pgAdmin.
Krok 2)
- Z paska nawigacji po lewej stronie kliknij Bazy danych.
- Kliknij opcję Demo.
Krok 3) Wpisz zapytanie w edytorze zapytań:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Krok 4) Kliknij przycisk Wykonaj.
Cennik powinien teraz wyglądać następująco:
Z instrukcją DELETE
Aby osiągnąć to samo za pomocą pgAdmin, wykonaj następujące czynności:
Krok 1) Zaloguj się do swojego konta pgAdmin.
Krok 2)
- Z paska nawigacji po lewej stronie kliknij Bazy danych.
- Kliknij opcję Demo.
Krok 3) Wpisz zapytanie w edytorze zapytań:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Krok 4) Kliknij przycisk Wykonaj.
Cennik powinien teraz wyglądać następująco:
Podsumowanie
- Operator EXISTS sprawdza, czy w podzapytaniu istnieją wiersze.
- Jest używane z podzapytaniem i mówi się, że zostało spełnione, gdy podzapytanie zwróci co najmniej jeden wiersz.
- Jest używany razem z instrukcjami SELECT, UPDATE, INSERT i DELETE.
Pobierz bazę danych używaną w tym samouczku