Das Gegenteil vom insert-Befehl zum Anlegen und Speichern neuer Datensätze ist delete als Befehl, um Daten zu entsorgen. Dieser Befehl arbeitet konsequent und daher sollte man sehr vorsichtig damit umgehen. Speziell in Skripte kann man sich leicht vertippen und statt einem Datensatz ist plötzlich jede Information verschwunden. Hat man keine Sicherheitskopie angelegt, ist wirklich alles weg und nicht mehr zu retten.
Der delete-Befehl ist aber trotzdem eine wichtige Hilfestellung, um Daten zu löschen, die man nicht mehr brauchen kann. Der Syntax ist denkbar einfach und das macht es auch so gefährlich.
Webhosting mit viel Software bei Alfahosting (Affiliate-Link)
Ein einfaches Beispiel ist jenes:
delete from adressen where id = '24'
Das Beispiel zeigt, wie aus der Datentabelle adressen der Datensatz mit der ID-Nummer 24 gelöscht werden kann. Der MySQLi-Befehl Delete sucht die Nummer 24 heraus und entfernt den Datensatz, der damit nicht mehr zur Verfügung steht. Daher ist Vorsicht angebracht, denn wenn man beispielsweise auf die where-Abfrage verzichtet, löscht der Befehl konsequent alle Datensätze, die er in der Datentabelle finden kann und das kann bedeuten, dass eine Tabelle mit 20.000 Datensätzen plötzlich leer ist.
Selbst Profis wählen daher gerne den Weg, dass sie die ID-Nummer erheben lassen und vor dem delete-Befehl diese per echo ausdrucken und mit exit das Skript abbrechen. Dann können sie kontrollieren, ob alles in Ordnung ist, bevor sie das Skript erstmals in Echtzeit einsetzen. So können problematische Situationen vermieden werden, wobei man vor der Programmierung und dem Testen, das ohnehin auf einer Testebene erfolgen sollte, die Datenbank gesichert werden sollte.
Webhosting bei Alfahosting - jetzt gratis testen! (Affiliate-Link)
Doch das Rückspielen von verlorenen Daten kostet viel Zeit und daher ist delete sehr praktisch, aber mit Vorsicht zu genießen. Per Skript können so Daten gelöscht werden, beispielsweise Adressen aus einer Datentabelle für den Newsletter, weil die Kunden keine weiteren Zuschriften mehr beziehen möchten oder Artikeldaten aus einer entsprechenden Tabelle, weil es den Artikel nicht mehr gibt.
Wer mit der Konsole direkt auf die Datenbank zugreift oder phpMyAdmin anwendet, ist gut beraten, vorher auch abzufragen, ob die ID-Nummer stimmt und schaut sich dann die gefundenen Daten an. Passt alles, kann man immer noch löschen und reduziert damit die Gefahr, dass man zu viele Informationen entsorgt.
Es gibt nicht nur die Situation, dass ein Datensatz gelöscht werden muss, es kann verschiedene Situationen geben.
delete from adressen where nachname = 'Bauer'
löscht alle Datensätze mit Bauer als Nachnamen, das können auch 20 Bauer sein
delete from adressen where nachname like '%auer%'
löscht alle Datensätze, in deren Nachnamen auer vorkommt. Also zum Beispiel auch Hauer. Diese Form der Abfrage wird oft benötigt und bei like braucht es die Prozentzeichen als Abgrenzung. like 'auer' würde nicht funktionieren.
delete from adressen where id < 300
löscht alle Datensätze mit einer geringeren ID-Nummer als 300. Kann Sinn machen, wenn man ältere Datensätze löschen möchte, wobei man dann in der Praxis über das Datum geht, um ganz sicher zu gehen.
MySQLi basiert auf SQL und daher gibt es gar nicht so viele Befehle wie etwa in einer richtigen Programmiersprache, aber es gibt zu den Befehlen viele Zusätze, speziell bei der Abfrage mit select. Es gibt aber auch Befehle, die man kaum braucht und dazu gehört create zum Anlegen von Datenbanken und Datentabellen oder drop zum Löschen selbiger. Auch alter als Befehl zum Ändern wird selten benötigt.
Dann gibt es Anordnungen, die man sehr oft oder gelegentlich braucht, ganz nach Situation. Mit delete kann man Datensätze löschen und das ist in einem Skript immer wieder der Fall, etwa alte Statistikdaten. Und mit insert kann man neue Datensätze anlegen, zum Beispiel nach dem Eintragen im Geästebuch.
Der große Akteur auf Ebene der MySQLi-Datenbank auch von PHP aus ist der Befehl select. Er dient dazu, die vorhandenen Daten zu untersuchen und es gibt eine ganze Reihe an Möglichkeiten, wie dies erfolgen kann. Mit Filter, mit Begrenzungen oder auch mit verknüpften Kriterien, um die richtigen Datensätze zu finden. Selbst rechnen ist damit möglich.
Weitere Befehle gibt es mit Drop und Truncate, wobei Drop eine Tabelle komplett löschen kann oder auch Datenfelder aus einer Tabelle. Truncate leert die Tabelle, löscht also alle Datensätze. Diese Befehle nutzt man aber nicht in Skripte von außerhalb, sondern setzt sie direkt in phpMyAdmin bei der Verwaltung ein.
Themenseiten
Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen
Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel