Die Structured Query Language (SQL) ist eine ISO Standardsprache zum Erstellen und Arbeiten mit Datenbanken, die in einem Set von Tabellen gespeichert sind. Implementierungen fügen in der Regel eigene Erweiterungen zur Sprache hinzu; Der Vergleich von verschiedenen SQL Implementierungen ist eine gute Referenz für Produktunterschiede.
Implementierungen bieten typischerweise eine Eingabeaufforderung, in den du die hier gezeigten Befehle interaktiv eingeben kannst. Sie bieten auch einen Weg, um Serien von Befehlen in einer Skript auszuführen. (Die Anzeige, dass du fertig mit der interaktiven Eingabeaufforderung bist, ist ein gutes Beispiel für etwas, was nicht standardisiert ist. Die meisten SQL Implementierungen unterstützen die Schlüsselwörter QUIT, EXIT oder beides.
Einige dieser Beispielbefehle gehen davon aus, dass sie die MySQL employee sample database, verfügbar auf GitHub, schon geladen wurde. Die GitHub Dateien sind Skripte von Befehlen, ähnlich wie die entsprechenden Befehle unten, die Tabellen mit Daten über die Mitarbeiter einer fiktiven Firma erstellen und füllen. Die Syntax für die Ausführung dieser Skripte hängt von der verwendeten SQL-Implementierung ab. Ein Dienstprogramm, das man über die Betriebssystemeingabeaufforderung ausführen kann, ist typisch.
-- Kommentare starten mit zwei Bindestrichen. Jeder Befehl endet mit einem Semikolon.
-- SQL unterscheidet nicht zwischen Groß- und Kleinschreibung bei
-- Schlüsselwörtern. Die Beispielbefehle folgen der Konvention der
-- Schreibweise in Großbuchstaben, damit sie leichter von Datenbank-,
-- Tabellen- und Spaltennamen zu unterscheiden sind.
-- Erstellen und Löschen einer Datenbank. Bei Datenbank- und Tabellennamen
-- wird zwischen Groß- und Kleinschreibung unterschieden.
CREATEDATABASEsomeDatabase;DROPDATABASEsomeDatabase;-- Liste verfügbare Datenbanken.
SHOWDATABASES;-- Verwende eine bestimmte Datenbank.
USEemployees;-- Wähle alle Zeilen und Spalten aus der Tabelle departmens aus der aktuellen
-- Datenbank aus.
-- Das Standardverhalten für den Interpreter ist die Ergebnisse auf
-- dem Bildschirm zu scrollen.
SELECT*FROMdepartments;-- Hole dir alle Zeilen aus der departments Tabelle,
-- aber nur die dept_no und die dept_name Spalten.
-- Das Aufteilen von Befehlen auf mehrere Zeilen ist in Ordnung.
SELECTdept_no,dept_nameFROMdepartments;-- Hole dir alle departments Spalten, aber nur 5 Zeilen.
SELECT*FROMdepartmentsLIMIT5;-- Hole dir die dept_name Spaltenwerte aus der departments Tabelle,
-- in der der Wert dept_name die Teilzeichenfolge 'en' hat.
SELECTdept_nameFROMdepartmentsWHEREdept_nameLIKE'%en%';-- Hole dir alle Spalten von der departments Tabelle, in der die dept_name
-- Spalte mit einem 'S' beginnt und exakt 4 Zeichen danach besitzt.
SELECT*FROMdepartmentsWHEREdept_nameLIKE'S____';-- Wähle die Titelwerte aus der Titeltabelle, aber zeige keine Duplikate an.
SELECTDISTINCTtitleFROMtitles;-- Das Gleiche wie oben, aber sortiert nach den Titelwerten, mit Beachtung
-- der Groß und Kleinschreibung.
SELECTDISTINCTtitleFROMtitlesORDERBYtitle;-- Zeige die Anzahl der Zeilen in der departments Tabelle an.
SELECTCOUNT(*)FROMdepartments;-- Zeige die Anzahl der Zeilen in der departments Tabelle an, die 'en' als
-- Teilezeichenkette des Wertes dept_name haben.
SELECTCOUNT(*)FROMdepartmentsWHEREdept_nameLIKE'%en%';-- Eine Vereinigung von Informationen von mehreren Tabellen:
-- Die titles Tabelle zeigt, wer welche Jobtitel hatte, wer welche Mitarbeiter-
-- nummer hat, von welchen Startdatum und zu welchen Enddatum
-- Wir rufen diese Information ab, aber anstelle der Mitarbeiternummer,
-- verwenden wir die Mitarbeiternummer als Querverweis auf die employees Tabelle
-- um die die Vor- und Nachnamen jedes Mitarbeiters zu erhalten.
-- (und nur 10 Reihen)
SELECTemployees.first_name,employees.last_name,titles.title,titles.from_date,titles.to_dateFROMtitlesINNERJOINemployeesONemployees.emp_no=titles.emp_noLIMIT10;-- Liste alle Tabellen in allen Datenbanken auf. Verschiedene Implementierungen
-- stellen typischerweise einen eigenen Abkürzungsbefehl zur Verfügung für
-- die aktuell verwendete Datenbank.
SELECT*FROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE='BASE TABLE';-- Erstelle eine Tabelle in der aktuell verwendeten Datenbank
-- mit dem Namen tablename1, in der die beiden Spalten angezeigt werden
-- Es gibt viele weiteren Optionen, wie man die Spalten spezifizieren kann,
-- wie z.B. deren Datentyp.
CREATETABLEtablename1(fnameVARCHAR(20),lnameVARCHAR(20));-- Füge eine Zeile mit Daten in die Tabelle tablename1. Dies setzt voraus,
-- das die Tabelle so definiert worden ist, dass sie die geeigneten
-- Werte akzeptiert.
INSERTINTOtablename1VALUES('Richard','Mutt');-- Verändere den fname Wert zu 'John' für alle Zeilen,
-- die einen lname Wert von 'Mutt' haben.
UPDATEtablename1SETfname='John'WHERElname='Mutt';-- Lösche Zeilen aus der tablename1 Tabelle,
-- deren lname Wert mit dem Wert 'M' beginnen.
DELETEFROMtablename1WHERElnamelike'M%';-- Lösche alle Zeilen von der tablename1 Tabelle, hinterlasse nur eine leere
-- Tabelle.
DELETEFROMtablename1;-- Lösche die gesamte tablename1 Tabelle.
DROPTABLEtablename1;