Die meisten modernen Webanwendungen interagieren heute mit Datenbanken, normalerweise mit einer Sprache, die als SQL bezeichnet wird. Zum Glück ist diese Sprache leicht zu lernen. In diesem Artikel beginnen wir mit einigen grundlegenden SQL-Abfragen und verwenden diese zur Interaktion mit einer MySQL-Datenbank.
SQL (Structured Query Language) ist eine Sprache, die für die Interaktion mit relationalen Datenbankverwaltungssystemen (RDBMS) wie MySQL, Oracle, Sqlite usw. entwickelt wurde. Um die SQL-Abfragen in diesem Artikel auszuführen, schlage ich vor, dass Sie MySQL installiert haben. Ich empfehle phpMyAdmin auch als visuelle Schnittstelle zu MySQL.
Die folgenden Anwendungen erleichtern die Installation von MySQL und phpMyAdmin auf Ihrem lokalen Rechner:
Wir werden die Befehlszeile für Abfragen verwenden. WAMP wird bereits mit einer MySQL-Konsole geliefert. Für MAMP möchten Sie möglicherweise diesen Artikel lesen.
Hier kommt unsere allererste Frage. Wir werden eine Datenbank erstellen, mit der wir arbeiten können.
Öffnen Sie zunächst Ihre MySQL-Konsole und melden Sie sich an. Bei WAMP ist das Standardkennwort leer. Für MAMP sollte das Passwort standardmäßig "root" sein.
Geben Sie nach dem Anmelden diese Abfrage ein und drücken Sie die Eingabetaste:
CREATE DATABASE my_first_db;
Beachten Sie, dass das Semikolon (;) am Ende der Abfrage hinzugefügt wird, genau wie am Ende einer Codezeile.
Die Sonderwörter "CREATE DATABASE" und die Sonderwörter in SQL sind unabhängig von der Groß- und Kleinschreibung. Der besseren Lesbarkeit halber schreiben wir sie jedoch in Großbuchstaben.
Wenn Sie den Standardzeichensatz und die Kollatierung festlegen möchten, können Sie stattdessen dieselbe Abfrage wie folgt schreiben:
CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Hier finden Sie eine Liste der unterstützten Zeichensätze und Kollatierungen in MySQL.
Diese Abfrage wird verwendet, um eine Liste aller Datenbanken zu erhalten.
Sie können eine vorhandene Datenbank mit dieser Abfrage löschen.
Seien Sie vorsichtig mit dieser Abfrage, da Sie keine Warnungen erhalten. Wenn sich unter der Datenbank Tabellen und Daten befinden, werden diese sofort gelöscht.
Dies ist technisch keine Frage. Es ist eine 'Anweisung' und erfordert am Ende kein Semikolon.
Er weist MySQL an, für die aktuelle Sitzung eine Standarddatenbank auszuwählen, mit der gearbeitet werden soll. Jetzt können wir Tabellen erstellen und andere Aufgaben in dieser Datenbank ausführen.
Sie können sich eine Datenbanktabelle wie eine Tabelle oder eine CSV-Datei vorstellen, die strukturierte Daten enthält.
Wie in diesem Beispiel haben Tabellen Spaltennamen und Datenzeilen. Mit SQL-Abfragen können wir diese Tabellen erstellen. Wir können die Daten auch hinzufügen, lesen, aktualisieren und löschen.
Mit dieser Abfrage können wir Tabellen in der Datenbank erstellen. Leider ist die MySQL-Dokumentation für Neulinge nicht sehr freundlich. Die Struktur dieser Art von Abfragen kann sehr komplex werden, aber wir werden mit einer einfachen Abfrage beginnen.
Die folgende Abfrage erstellt eine Tabelle mit 2 Spalten.
CREATE TABLE-Benutzer (Benutzername VARCHAR (20), create_date DATE);
Beachten Sie, dass wir eine Abfrage in mehreren Zeilen schreiben und sogar Registerkarten für die Einrückung verwenden können.
Die erste Zeile ist einfach. Wir erstellen einfach eine Tabelle mit dem Namen "Benutzer". Anschließend haben wir in Klammern eine durch Kommas getrennte Listentabellenspalte. Nach jedem Spaltennamen haben wir einen Datentyp wie VARCHAR oder DATE.
VARCHAR (20) bedeutet, dass es sich bei der Spalte um einen String-Typ handelt, der maximal 20 Zeichen umfassen darf. DATE ist auch ein Datentyp, der speziell zum Speichern von Datumsangaben in diesem Format verwendet wird: 'JJJJ-MM-TT'.
Bevor wir diese Abfrage ausführen, sollten wir auch eine Spalte für 'user_id' einfügen, die ein PRIMARY KEY sein wird. Ohne sich zu sehr mit den Details zu beschäftigen, können Sie sich einen PRIMARY KEY als einen Weg vorstellen, um jede Datenzeile in einer Tabelle zu identifizieren.
Nun wird die Abfrage:
CREATE TABLE-Benutzer (user_id INT AUTO_INCREMENT PRIMARY KEY, Benutzername VARCHAR (20), create_date DATE);
INT macht dies zu einem 32-Bit-Integer-Typ (d. H. Numerisch). AUTO_INCREMENT generiert bei jedem Hinzufügen neuer Datenzeilen automatisch eine neue ID-Nummer. Es ist nicht erforderlich, macht es aber viel bequemer.
Diese Spalte muss keine Ganzzahl sein, ist jedoch der am häufigsten verwendete Typ. Eine PRIMARY KEY-Spalte ist ebenfalls nicht erforderlich, wird jedoch für ein gutes Datenbankdesign und eine gute Performance dringend empfohlen.
Lassen Sie uns die Abfrage ausführen:
Mit dieser Abfrage können Sie eine Liste der Tabellen abrufen, die sich aktuell in der Datenbank befinden.
Um die Struktur einer vorhandenen Tabelle anzuzeigen, können Sie diese Abfrage verwenden.
Felder (auch Spalten genannt) werden mit ihren Eigenschaften in den Ergebnissen aufgeführt.
Genau wie DROP DATABASES löscht diese Abfrage eine Tabelle und ihren Inhalt ohne Warnung.
Diese Abfrage kann aufgrund der Vielzahl von Änderungen, die eine Tabelle ausführen kann, auch eine recht komplexe Struktur aufweisen. Schauen wir uns einige einfache Beispiele an.
(Stellen Sie sicher, dass Sie die gerade erstellte Tabelle neu erstellen, oder die folgenden Abfragen funktionieren offensichtlich nicht.)
ALTER TABLE-Benutzer E-Mail hinzufügen VARCHAR (100) NACH Benutzername;
Aufgrund der Lesbarkeit von SQL glaube ich nicht, dass die Abfrage eine Erklärung benötigt.
Das war auch sehr einfach. Verwenden Sie es jedoch mit Vorsicht, da es ohne Warnung permanent Daten entfernt.
Fügen Sie die E-Mail-Spalte erneut hinzu, da wir sie später verwenden werden:
ALTER TABLE-Benutzer E-Mail hinzufügen VARCHAR (100) NACH Benutzername;
Manchmal möchten Sie möglicherweise die Eigenschaften einer Spalte ändern, sodass Sie sie nicht löschen und erneut erstellen müssen.
Dadurch wurde die Spalte "Benutzername" in "Benutzername" umbenannt und der Typ von VARCHAR (20) in VARCHAR (30) geändert. Eine solche Änderung sollte keine der vorhandenen Daten in der Tabelle stören.
Lassen Sie uns mit dieser Abfrage einige Daten in die Tabelle einfügen.
Wie Sie sehen, enthält VALUES () die durch Kommas getrennte Liste von Feldwerten. Die Zeichenfolgewerte werden in einfache Anführungszeichen gesetzt. Die Werte müssen sich in der Reihenfolge der Spalten befinden, die beim Erstellen der Tabelle definiert wurden.
Beachten Sie, dass der erste Wert NULL für das Feld PRIMARY KEY ist, das wir "user_id" genannt haben. Wir machen dies, damit automatisch eine ID generiert wird, da die Spalte auf AUTO_INCREMENT gesetzt ist. Wenn Sie zum ersten Mal eine Datenzeile eingeben, lautet die ID 1. Die nächste eingefügte Zeile ist 2 usw.
Hier ist eine weitere Syntax zum Einfügen von Zeilen.
Diesmal verwenden wir das Schlüsselwort SET anstelle von VALUES, dem keine Parathesen folgen. Hier sind einige Dinge zu beachten:
Hier ist noch eine andere Syntax.
Da jede Spalte nach Namen referenziert wird, kann sie in beliebiger Reihenfolge sein.
Sie können diese Abfrage verwenden, um die AUTO_INCREMENT-ID für die letzte eingefügte Zeile in der aktuellen Sitzung abzurufen.
Ich denke, es ist ein guter Zeitpunkt, um zu demonstrieren, wie Sie eine MySQL-Funktion in Ihren Abfragen verwenden können.
Die Funktion NOW () gibt das aktuelle Datum zurück. Sie können damit eine Datumsspalte automatisch auf den aktuellen Tag setzen, während Sie eine neue Zeile einfügen.
Beachten Sie, dass wir eine Warnung von MySQL erhalten haben, aber dies ist keine große Sache. Der Grund ist, dass JETZT () tatsächlich auch Zeitinformationen zurückgibt.
Die von uns erstellte create_date-Spalte enthält jedoch nur das Datum und nicht den Zeitpunkt, zu dem die zurückgegebenen Daten abgeschnitten wurden. Wir könnten stattdessen die CURDATE () - Funktion verwenden, die nur das Datum zurückgibt, aber die am Ende gespeicherten Daten wären in beiden Fällen die gleichen.
Die von uns hinzugefügten Daten wären natürlich nutzlos, wenn wir sie nicht lesen können. Hier kommt die SELECT-Abfrage ins Spiel.
Hier ist die einfachste mögliche SELECT-Abfrage zum Lesen aus einer Tabelle:
In diesem Fall bedeutet das Sternchen (*), dass wir alle Spalten aus der Tabelle abrufen wollten. Wenn Sie nur bestimmte Spalten wünschen, würde die Abfrage folgendermaßen aussehen:
Meistens interessieren wir uns nur für einige Reihen und nicht für alle. Angenommen, wir möchten die E-Mail-Adresse für den Benutzer "nettuts"..
Betrachten Sie es wie eine IF-Anweisung. Mit WHERE können Sie Bedingungen für die gewünschten Ergebnisse in die Abfrage eingeben.
Beachten Sie, dass für die Gleichheitsbedingung nur ein einzelnes Gleichheitszeichen verwendet wird (=), anstelle von double (==), an das Sie von der Programmierung gewöhnt sind.
Sie können auch andere Vergleichsbedingungen verwenden:
AND und OR können verwendet werden, um Bedingungen zu kombinieren:
Beachten Sie, dass numerische Werte nicht in Anführungszeichen stehen müssen.
Dies ist nützlich, um mehrere Werte abzugleichen.
Dies ermöglicht Ihnen die Suche nach Platzhaltern.
Prozentzeichen (%) wird als Platzhalter verwendet.
Wenn Sie möchten, dass die Ergebnisse in einer bestimmten Reihenfolge zurückgegeben werden, verwenden Sie diese Klausel:
Die Standardreihenfolge ist ASC (d. H. Aufsteigend). Sie können DESC hinzufügen, um die Reihenfolge zu ändern.
Sie können die Anzahl der zurückgegebenen Ergebnisse begrenzen.
LIMIT 2 liefert nur die ersten 2 Ergebnisse. LIMIT 1 OFFSET 2 erhält 1 Ergebnis nach den ersten 2 Ergebnissen. LIMIT 2, 1 bedeutet dasselbe, aber beachten Sie, dass die erste Zahl der Versatz und die zweite Zahl das Limit ist.
Diese Abfrage wird zum Aktualisieren der Daten in einer Tabelle verwendet.
Meistens wird es mit einer WHERE-Klausel verwendet, da nur bestimmte Zeilen aktualisiert werden sollen. Wenn keine WHERE-Klausel angegeben wird, werden alle Zeilen mit den gleichen Änderungen aktualisiert.
Sie können auch eine LIMIT-Klausel verwenden, um die Anzahl der zu aktualisierenden Zeilen zu begrenzen.
Genau wie UPDATE wird diese Abfrage normalerweise auch mit einer WHERE-Klausel verwendet.
Um den gesamten Inhalt einer Tabelle zu löschen, können Sie Folgendes tun:
DELETE FROM Benutzer
Es ist jedoch normalerweise leistungsstärker, stattdessen TRUNCATE zu verwenden.
TRUNCATE setzt auch die AUTO_INCREMENT-Nummern zurück, sodass eine neue Zeile wieder die ID 1 hat. Dies geschieht jedoch nicht mit einer DELETE-Abfrage und der Zähler steigt weiter an.
Bestimmte Zeichen müssen maskiert werden, andernfalls können Probleme auftreten.
Backslash (\) wird für das Escaping verwendet.
Dies ist auch aus Sicherheitsgründen sehr wichtig. Alle Benutzereingaben, die in die Datenbank eingehen, müssen ordnungsgemäß maskiert werden. In PHP verwenden Sie die Funktion mysql_real_escape_string () oder verwenden vorbereitete Anweisungen, da sie automatisch umgangen werden.
Da MySQL viele Sonderwörter wie SELECT oder UPDATE enthält, können Sie Kollisionen verhindern, indem Sie die Tabellen- und Spaltennamen in Anführungszeichen setzen. Dies sind jedoch nicht die üblichen Zitate; Sie müssen das Backtick (') -Zeichen verwenden.
Angenommen, Sie möchten aus irgendeinem Grund eine Spalte mit dem Namen "delete" hinzufügen:
Vielen Dank, dass Sie den Artikel gelesen haben. Hoffentlich konnte ich Ihnen zeigen, dass SQL eine einfache Lernkurve hat und dennoch sehr mächtig ist.
Bitte hinterlassen Sie Ihre Kommentare und Fragen und haben Sie einen schönen Tag!
Sind Sie bereit, Ihre Fähigkeiten auf die nächste Stufe zu bringen und von Ihren Skripten und Komponenten zu profitieren? Besuchen Sie unseren Schwestermarkt CodeCanyon.