W języku SQL, aby usunąć konto użytkownika tak, aby nie wystąpił błąd w przypadku, gdy konto nie istnieje, można posłużyć się składnią
DROP USER 'anna'@'localhost';
IF EXISTS brak konta kończy się błędem #1396.DROP USER OR IGNORE 'anna'@'localhost';
OR IGNORE nie jest częścią składni DROP USER.DELETE USER 'anna'@'localhost';
DELETE USER nie istnieje; obiekty usuwa się przez DROP.DROP USER IF EXISTS 'anna'@'localhost';
IF EXISTS zamienia błąd przy braku konta w ostrzeżenie.Klauzula IF EXISTS w poleceniu DROP USER IF EXISTS 'anna'@'localhost'; sprawia, że serwer usuwa konto, jeśli istnieje, a gdy go nie ma - zamiast błędu zgłasza jedynie ostrzeżenie. Skrypt może więc działać dalej bez przerwania.
To lustrzane odbicie klauzuli IF NOT EXISTS przy CREATE USER. Takie zabezpieczenia stosuje się w skryptach instalacyjnych, uruchamianych wielokrotnie, na przykład przy odtwarzaniu środowiska testowego. Konto w MySQL identyfikuje para nazwa i host, więc 'anna'@'localhost' i 'anna'@'%' to dwa różne konta usuwane osobno. Ostrzeżenia można obejrzeć poleceniem SHOW WARNINGS;.
Usunięcie konta zabiera też wszystkie jego uprawnienia, więc nie trzeba wcześniej wykonywać REVOKE.
Zapis DROP USER 'anna'@'localhost'; to poprawne polecenie, ale bez zabezpieczenia. Gdy konta nie ma, serwer zwróci błąd #1396 „Operation DROP USER failed”, a skrypt zatrzyma się w tym miejscu - dokładnie tego zadanie każe uniknąć.
DELETE USER łączy słowo z poleceń usuwania wierszy z nazwą obiektu, ale takie polecenie nie istnieje. DELETE usuwa rekordy z tabel, a konta i inne obiekty bazy usuwa się poleceniem DROP.
Zapis z OR IGNORE przypomina INSERT OR IGNORE z SQLite, a w MySQL INSERT IGNORE. Przy DROP USER taka składnia nie jest rozpoznawana i zakończy się błędem składni. Zadanie spełnia tylko polecenie z klauzulą IF EXISTS, które w razie braku konta zgłasza ostrzeżenie zamiast błędu.
Ta sama klauzula działa przy innych obiektach: DROP TABLE IF EXISTS i DROP DATABASE IF EXISTS także zamieniają błąd w ostrzeżenie.