PostgreSQL Изтриване на заявка (Изтриване на редове от избор)
Изтриване на заявка в PostgreSQL
- Изтриване на изявление in PostgreSQL се използва за изтриване на един или повече записи от таблица. Ако искате да изтриете избрани редове от таблица PostgreSQL ви позволява да комбинирате оператора DELETE с клаузата WHERE, в противен случай ще изтрие всички записи.
Синтаксис на заявка за изтриване на Postgres
Операторът 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.
- име на таблица: името на таблицата, от която трябва да се изтрият записи.
- псевдоним: това е заместител на името на целевата таблица.
- using-list: изрази на таблица, за да се позволи на колони от други таблици да се използват в WHERE клауза.
- състояние(я): по желание. Това са условията, които трябва да бъдат изпълнени, за да бъдат изтрити записите. Ако този раздел не е предоставен, всички записи за имена на таблици ще бъдат изтрити.
- име на курсора: курсорът, който ще се използва в WHERE CURRENT OF състояние. Последният извлечен ред от този курсор ще бъде изтрит.
- изходен израз: изразът, който ще бъде обработен и върнат от командата DELETE след изтриването на всеки ред.
- изходно име: името, което да се използва за върнатата колона.
Имайте предвид, че тъй като операторът DELETE изтрива целия ред, не е необходимо да указвате имената на колоните.
PostgreSQL Изтриване на заявка с едно условие
Операторът DELETE може да се използва с едно условие. Условието се задава с помощта на клаузата WHERE. Разгледайте таблицата с цените със следните данни:
Цена
Нека изтрием записа с id 4:
DELETE FROM Price WHERE id = 4;
Горната команда ще изтрие записите, в които id е 4. Нека потвърдим дали изтриването е успешно:
Редът с id 4 е изтрит.
Изтриване на заявка с две условия
- PostgreSQL Операторът DELETE може да приеме две условия. Двете условия трябва да бъдат обединени с помощта на оператора И. Ще използваме следната таблица:
Цена:
Разгледайте примера, даден по-долу:
DELETE FROM Price WHERE id = 3Y 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 с идентификатор, съответстващ на този на таблицата Book и цената е по-малка от 250.
Таблицата на книгата вече е както следва:
Записът с идентификатор 1 беше изтрит.
Как да изтриете ред в PostgreSQL използвайки pgAdmin
Следват стъпките за изтриване на ред PostgreSQL използвайки pgAdmin:
С едно условие
За да постигнете същото чрез pgAdmin, направете следното:
Стъпка 1) Влезте във вашия pgAdmin акаунт
Отворете pgAdmin и влезте в акаунта си, като използвате вашите идентификационни данни
Стъпка 2) Създайте демонстрационна база данни
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката
Въведете следната заявка в редактора на заявки:
DELETE FROM Price WHERE id = 4;
Стъпка 4) Изпълнете заявката
Щракнете върху бутона Изпълнение
Стъпка 5) Проверете дали редът е изтрит
Нека проверим дали изтриването е било успешно:
С две условия
За да постигнете същото чрез pgAdmin, направете следното:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
DELETE FROM Price WHERE id = 3 AND price = 300;
Стъпка 4) Щракнете върху бутона Изпълнение.
Стъпка 5) Нека проверим дали изтриването е било успешно:
Използване на условие EXISTS
За да постигнете същото чрез pgAdmin, направете следното:
Стъпка 1) Влезте във вашия pgAdmin акаунт.
Стъпка 2)
- От лентата за навигация вляво щракнете върху Бази данни.
- Щракнете върху Демо.
Стъпка 3) Въведете заявката в редактора на заявки:
DELETE FROM Book
WHERE EXISTS
(SELECT 1
FROM Price
WHERE Price.id = Book.id
AND price < 250 );
Стъпка 4) Щракнете върху бутона Изпълнение.
Стъпка 5) Нека проверим дали изтриването е било успешно:
Oбобщение
- Операторът DELETE се използва за изтриване на един или повече записи от таблица.
- За да изтриете само избрани редове от таблица, можете да комбинирате оператора DELETE с клаузата WHERE.
- Ако клаузата DELETE се използва без клаузата WHERE, тя изтрива всички записи от таблицата.
- параметърът table-name ви позволява да добавите името на таблицата, от която записите трябва да бъдат изтрити.
- Можем да използваме оператора DELETE с едно условие, определено с помощта на клаузата WHERE.
- Операторът DELETE може да се използва и с две условия, посочени в клаузата WHERE. Двете условия трябва да бъдат обединени с помощта на оператора И.
- - СЪЩЕСТВУВА условие може да ни помогне да изтрием записи от таблица въз основа на записите на друга таблица.
















