Какво съществува PostgreSQL съществува?
Операторът EXISTS тества дали в подзаявка съществуват редове. Това означава, че операторът се използва заедно с подзаявка. Казва се, че операторът Exists е изпълнен, когато в подзаявката е намерен поне един ред. Можете да използвате тази операция заедно с операторите SELECT, UPDATE, INSERT и DELETE.
В този урок за PostgreSQL ще научите следното:
- Синтаксис
- С SELECT Statement
- С INSERT изявление
- С АКТУАЛИЗИРАНО изявление
- С изтриване на изявление
- С pgAdmin
Синтаксис
Ето синтаксиса на оператора PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Горният синтаксис показва, че операторът EXISTS приема аргумент, който е подзаявка. Подзаявката е просто оператор SELECT, който трябва да започва с SELECT * вместо със списък с имена на колони или изрази.
С SELECT Statement
Нека видим как да използваме оператор SELECT с оператора EXISTS. Имаме следните таблици:
Книга:
Цена:
Изпълнете следното изявление:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Това връща следното:
Горната команда трябва да върне всички записи в таблицата Book, чийто идентификатор съвпада с идентификатора на всички записи от подзаявката. Съвпадаше само един идентификационен номер. Следователно е върнат само един запис.
С INSERT изявление
Можем да използваме оператора EXISTS в оператор INSERT. Имаме следните 3 таблици:
Книга:
Цена:
Цена2:
След това можем да изпълним следното изявление:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Таблицата с цени вече е както следва:
Редът с идентификатор 5 в таблицата с име Price2 беше съчетан. След това този запис беше вмъкнат в таблицата с цени.
С АКТУАЛИЗИРАНО изявление
Можем да използваме оператора EXISTS в оператор UPDATE.
Изпълнете следната заявка:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Актуализираме ценовата колона на таблицата Цени. Нашата цел е цените на артикулите, споделящи идентификатор, да бъдат еднакви. Съвпадаше само един ред, тоест 5.
Тъй като обаче цените са равни, т.е. 205, не е направена актуализация. Ако имаше разлика, щеше да бъде направена актуализация.
С изтриване на изявление
Оператор PostgreSQL DELETE може да използва оператора EXISTS. Ето пример:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Таблицата с цени вече е както следва:
Редът с идентификатор 5 е изтрит.
С pgAdmin
Сега нека видим как тези действия могат да бъдат извършени с помощта на pgAdmin.
С SELECT Statement
За да постигнете същото чрез pgAdmin, направете това:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Стъпка 4) Щракнете върху бутона за изпълнение.
Той трябва да върне следното:
С INSERT изявление
За да постигнете същото чрез pgAdmin, направете това:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Стъпка 4) Щракнете върху бутона за изпълнение.
Таблицата с цени трябва да бъде както следва:
С АКТУАЛИЗИРАНО изявление
За да постигнете същото чрез pgAdmin, направете това:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Стъпка 4) Щракнете върху бутона за изпълнение.
Таблицата с цени трябва да бъде както следва:
С изтриване на изявление
За да постигнете същото чрез pgAdmin, направете това:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Стъпка 4) Щракнете върху бутона за изпълнение.
Таблицата с цени трябва да бъде както следва:
Обобщение
- Операторът EXISTS тества дали в подзаявка съществуват редове.
- Използва се с подзаявка и се казва, че е изпълнена, когато подзаявката връща поне един ред.
- Използва се заедно с инструкции SELECT, UPDATE, INSERT и DELETE.
Изтеглете базата данни, използвана в този урок