czym jest PostgreSQL?
operator EXISTS sprawdza, czy wiersz(y) istnieje w podquery. Oznacza to, że operator jest używany razem z podzbiorem. Mówi się, że operator Exists został spełniony, gdy w podquery znajduje się co najmniej jeden wiersz. Tej operacji można używać wraz z instrukcjami wybierz, zaktualizuj, Wstaw i usuń.
w tym samouczku PostgreSQL dowiesz się następujących rzeczy:
- składnia
- z instrukcją SELECT
- z instrukcją INSERT
- z instrukcją UPDATE
- z instrukcją DELETE
- z 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 podzbiorem. Podquery jest po prostu instrukcją 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ące polecenie:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Zwraca to następujący:
powyższe polecenie powinno zwrócić wszystkie rekordy w tabeli książki, których id odpowiada ID wszystkich rekordów przez subquery. 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:
możemy wtedy uruchomić następujące polecenie:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
tabela cen jest teraz w następujący sposób:
wiersz o id 5 w tabeli o nazwie Price2 został dopasowany. Rekord ten został następnie wstawiony do tabeli cenowej.
z instrukcją aktualizacji
możemy użyć operatora EXISTS w instrukcji aktualizacji.
uruchom następujące zapytanie:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
aktualizujemy kolumnę cenową tabeli cenowej. Naszym celem jest, aby ceny przedmiotów udostępniających identyfikator były takie same. Dopasowano tylko jeden rząd, czyli 5.
jednak, ponieważ ceny są równe, czyli 205, nie dokonano aktualizacji. Gdyby była jakaś różnica, zrobilibyśmy aktualizację.
z instrukcją DELETE
Instrukcja DELETE PostgreSQL może używać operatora EXISTS. Oto przykład:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
tabela cen jest teraz w następujący sposób:
wiersz o identyfikatorze 5 został usunięty.
z pgAdmin
teraz zobaczmy, jak te działania można wykonać za pomocą pgAdmin.
używając polecenia SELECT
aby wykonać to samo za pomocą pgAdmin, zrób to:
Krok 1) Zaloguj się na swoje konto pgAdmin.
Krok 2)
- z paska nawigacyjnego na lewym przycisku bazy danych.
- Kliknij Demo.
Krok 3) wpisz zapytanie w Edytorze zapytań:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Krok 4) Kliknij przycisk Wykonaj.
powinien zwrócić następujące:
za pomocą polecenia Wstaw
aby wykonać to samo za pomocą pgAdmin, zrób to:
Krok 1) Zaloguj się na swoje konto pgAdmin.
Krok 2)
- z paska nawigacyjnego na lewym przycisku bazy danych.
- Kliknij Demo.
Krok 3) wpisz zapytanie w Edytorze zapytań:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Krok 4) Kliknij przycisk Wykonaj.
tabela cen powinna teraz wyglądać następująco:
z instrukcją aktualizacji
aby osiągnąć to samo poprzez pgAdmin, zrób to:
Krok 1) Zaloguj się na swoje konto pgAdmin.
Krok 2)
- z paska nawigacyjnego na lewym przycisku bazy danych.
- Kliknij Demo.
Krok 3) wpisz zapytanie w Edytorze zapytań:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Krok 4) Kliknij przycisk Wykonaj.
tabela cen powinna teraz wyglądać następująco:
używając polecenia DELETE
aby wykonać to samo za pomocą pgAdmin, zrób to:
Krok 1) Zaloguj się na swoje konto pgAdmin.
Krok 2)
- z paska nawigacyjnego na lewym przycisku bazy danych.
- Kliknij Demo.
Krok 3) wpisz zapytanie w Edytorze zapytań:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Krok 4) Kliknij przycisk Wykonaj.
tabela cen powinna teraz wyglądać następująco:
podsumowanie
- operator EXISTS sprawdza, czy wiersz(y) istnieje w podquery.
- jest używany z zapytaniem podrzędnym i mówi się, że został spełniony, gdy zapytanie podrzędne zwróci co najmniej jeden wiersz.
- jest używany razem z instrukcjami SELECT, UPDATE, INSERT i DELETE.
Pobierz bazę danych użytą w tym tutorialu