PostgreSQL ИЗТРИВАНЕ НА редове от избраното
⚡ Умно обобщение
PostgreSQL DELETE премахва един или повече редове от таблица, а сдвояването му с клауза WHERE се отнася само за записите, които отговарят на условие, докато пропускането на WHERE изчиства всеки ред в таблицата.

Изтриване на заявка в PostgreSQL
- Изявление за изтриване in PostgreSQL се използва за изтриване на един или повече записи от таблица. За да изтриете само избрани редове от таблица, PostgreSQL позволява ви да комбинирате оператора DELETE с клаузата WHERE; в противен случай изтрива всички записи в таблицата.
PostgreSQL Синтаксис на заявката за изтриване
Изразът DELETE може да бъде дефиниран, използвайки синтаксиса по-долу:
[ WITH [ RECURSIVE ] with-query [, ...] ] DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ] [ USING using-list ] [ WHERE condition(s) | WHERE CURRENT OF cursor-name] [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]
параметри
Налични са следните параметри:
- със заявка: клаузата WITH ви позволява да се обърнете към една или повече подзаявки по име в заявката DELETE.
- име на таблица: името на таблицата, от която трябва да се изтрият записи.
- псевдоним: заместител на името на целевата таблица.
- списък с използване: таблични изрази, които позволяват използването на колони от други таблици в клаузата WHERE.
- състояние(я): незадължително. Това са условията, които трябва да бъдат изпълнени, за да бъдат изтрити записите. Ако този раздел не е предоставен, всички записи с имена на таблици ще бъдат изтрити.
- име на курсора: курсорът, който ще се използва в условието WHERE CURRENT OF. Последният ред, извлечен от този курсор, ще бъде изтрит.
- изходен израз: изразът, който ще бъде обработен и върнат от оператора DELETE след изтриване на всеки ред.
- изходно име: името, което да се използва за върнатата колона.
Обърнете внимание, че тъй като командата DELETE изтрива целия ред, не е необходимо да посочвате имената на колоните.
PostgreSQL Изтриване на заявка с едно условие
Изразът DELETE може да се използва с едно условие, което се задава с помощта на клаузата WHERE. Да разгледаме таблицата Price със следните данни:
Цена:
Нека изтрием записа с id 4:
DELETE FROM Price WHERE id = 4;
Горната команда изтрива записите, в които идентификаторът е 4. Нека потвърдим дали изтриването е било успешно:
Редът с id 4 е изтрит.
Изтриване на заявка с две условия
- PostgreSQL Изразът DELETE може да приема и две условия. Двете условия трябва да бъдат свързани с оператора AND. Ще използваме следната таблица:
Цена:
Разгледайте примера, даден по-долу:
DELETE FROM Price WHERE id = 3 AND price = 300;
В горната команда изтриваме реда, в който идентификаторът е 3, а цената е 300. Сега можем да направим заявка към таблицата:
SELECT * FROM Price;
Това връща следното:
Записът с id 3 и цена 300 беше изтрит.
PostgreSQL Изтриване на заявка с помощта на условие EXISTS
С СЪЩЕСТВУВА условие, можете да направите DELETE по-сложно. Понякога може да се наложи да изтриете записи в една таблица въз основа на записи в друга таблица.
Тъй като клаузата FROM не позволява изброяване на записи от повече от една таблица при извършване на изтриване, клаузата EXISTS става много полезна. Имаме следните две таблици:
Книга:
Цена:
След това можем да изпълним следната заявка:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
Командата изтрива редове от таблицата „Book“, които имат съответстващ идентификатор в таблицата „Price“ с цена под 250.
Таблицата на книгата вече е както следва:
Записът с идентификатор 1 беше изтрит.
Как да изтриете ред в PostgreSQL използвайки pgAdmin
Същите заявки за изтриване могат да се изпълняват и визуално чрез интерфейса на pgAdmin, като се следват стъпките по-долу:
С едно условие
Стъпка 1) Влезте в профила си в pgAdmin. Отворете pgAdmin и влезте в профила си, използвайки вашите идентификационни данни.
Стъпка 2) Създайте демо база данни.
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете следната заявка в редактора на заявки:
DELETE FROM Price WHERE id = 4;
Стъпка 4) Щракнете върху бутона Изпълнение.
Стъпка 5) Нека проверим дали редът е изтрит:
С две условия
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
DELETE FROM Price WHERE id = 3 AND price = 300;
Стъпка 4) Щракнете върху бутона Изпълнение.
Стъпка 5) Нека проверим дали изтриването е било успешно:
Използване на условие EXISTS
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
Стъпка 4) Щракнете върху бутона Изпълнение.
Стъпка 5) Нека проверим дали изтриването е било успешно:
Изтеглете базата данни, използвана в този урок
















