SQL

SQL ist die Abkürzung für Structured Query Language, die sich als Standardsprache für die Kommunikation mit zweidimensionalen, relationalen Datenbanken durchgesetzt hat[1]. Mit Hilfe von SQL können Datentabellen erstellt, miteinander verknüpft und editiert werden. Dabei funktioniert die Datenbanksprache wie eine Art Schnittstelle zwischen den in Sprachen wie C, C++ oder Java programmierten Datenbanken, indem sie die externen Anfragen von Usern in für die Datenbank verständliche Befehle übersetzt.

SQL Syntax[Bearbeiten]

Die Datenbanksprache ist nicht case-sensitiv und folgt einer einheitlichen Syntax, die lediglich geringfügige Abweichungen aufweist. So verlangen manche Datenbanksysteme etwa nach einem Semikolon hinter jeder SQL-Eingabe. Der Strichpunkt ist ein üblicher Befehl, mit dem einzelne SQL-Eingaben in Datenbanken, die die Eingabe mehrerer SQL-Abfragen parallel gestatten, getrennt werden.

Gängige SQL-Befehle[Bearbeiten]

Standardmäßig versteht jede Syntax-Variante diese gängigen SQL-Befehle[2]:

  • select – damit werden Daten aus der Datenbank ausgewählt, die in einer Ergebnistabelle gespeichert werden:
select ''spalte1, spalte2, …''
from ''tabellenname;''

spalte1 und spalte2 sind, wie tabellenname, an dieser Stelle Platzhalter. Hier würden die Spaltennamen der Tabelle (z.B. Name, Wohnort) eingefügt werden, aus denen man die Daten auswählen möchte. Würde man alle Daten aus einer Tabelle auswählen wollen, würde der Befehl dieser Syntax folgen:

select * from ''tabellenname''
  • update – aktualisiert in der folgenden Version alle bestehenden Daten in einer Datenbank:
update ''tabellenname''
set ''spalte1 = wert1, spalte2 = wert2, …''

Möchte man indes nur bestimmte Einträge aktualisieren, muss der SQL-Befehl um ein Attribut erweitert werden, das festlegt, wo in der Datenbank Updates vorgenommen werden. Das würde in etwa wie folgt aussehen:

update ''tablellenname''
set ''spalte1 = wert1, spalte2 = wert2, …''
where ''bedingung;''

Eine solche Bedingung (condition) könnte etwa eine Kunden ID in einem Warenwirtschaftssystem sein.

  • delete – löscht Datentabellen oder einzelne Daten; je nachdem wie spezifisch die Befehlssyntax ist:
  • Mit dem Befehl
delete from ''tabellenname''

wird die gesamte Datentabelle gelöscht. Will man nur ausgesuchte Spalten, Reihen oder Einträge löschen, benötigt die SQL-Eingabe wieder eine Ergänzung in Form eines where-Attributs.

  • insert into – fügt neue Einträge in die Datenbank ein. Durch entsprechende Attributergänzungen kann man festlegen, wo welche neuen Werte hinterlegt werden sollen.
insert into ''tabellenname (spalte1, spalte2, spalte3, …)''
values ''(wert1, wert2, wert3, …);’'

fügt die angegebenen Werte lediglich in den spezifisch ausgeführten Spalten der erwähnten Tabelle hinzu. Will man Werte in allen Spalten der Tabelle ergänzen, muss man im SQL-Befehl nicht zwingend die Spaltennamen aufführen. Allerdings sollten die zu ergänzenden Werte in der gleichen Reihenfolge wie die jeweiligen Spalten, in die sie eingefügt werden sollen, aufgeführt werden. Das würde so aussehen:

insert into ''tabellenname''
values ''(wert1, wert2, wert3, …);''
  • create database – erstellt eine neue SQL-Datenbank. Mit folgender Syntax kann man etwa eine neue Datenbank mit dem Namen TestDB erstellen:
create database ''TestDB;''
  • create table – erstellt eine neue Datentabelle innerhalb der Datenbank. Mithilfe ergänzender Spaltenparameter lassen sich gleich auch die Spaltennamen innerhalb der Tabelle festlegen. Und Datatype-Ergänzungen bestimmen, welche Art Daten in der Spalte enthalten sein sollen:
create table ''tabellenname'' (
	''spalte1 datentyp,
	''spalte2 datentyp,
	''spalte3 datentyp,
	…'' 
) ;
  • alter table – wird verwendet, um Spalten in einer bestehenden Datentabelle hinzuzufügen, zu löschen oder anderweitig zu verändern. Außerdem lassen sich damit verschiedene Bedingungen oder Einschränkungen festlegen oder aufheben.
alter table ''tabellenname''
add ''spaltenname datentyp;''

Hiermit lässt sich etwa eine weitere Spalte in eine Datentabelle hinzufügen. Analog hierzu lassen sich mit folgenden SQL-Eingaben Spalten löschen oder verändern:

alter table ''tabellenname''
drop column ''spaltenname;''
alter table ''tabellenname''
alter column ''spaltenname datentyp;''

Hierzu sei angemerkt, dass der alter-Befehl systemabhängig durch einen modify-Befehl ersetzt werden muss. SQL Server und MS Access, zum Beispiel, verstehen den alter-Befehl, in MySQL allerdings ist der modify-Befehl erforderlich.

  • drop table – löscht eine Datentabelle:
drop table ''tabellenname;''
  • create index – erstellt einen Index innerhalb einer Datentabelle. Durch Indexes können Daten aus den Datenbanken schneller herausgefiltert werden. Der User kann die Indizes zwar nicht sehen, aber sie beschleunigen die Suchabfragen deutlich. Jedoch kann die Aktualisierung einer Datentabelle mit Index länger dauern, als das Update einer Tabelle ohne Index. Es ist darum zu empfehlen, nur in den Spalten einen Index zu erstellen, die oft durchsucht werden[3]. Im create-index-SQL-Befehl ist die Nennung mehrerer Werte gleichzeitig möglich:
create index ''indexname''
on ''tabellenname (spalte1, spalte2, …);''
  • drop index – löscht den ausgewählten Index. Hier ist wiederum das System zu beachten, innerhalb dessen der Befehl ausgeführt werden soll. In MySQL muss der Index-Löschbefehl wie folgt aussehen:
alter table ''tabellenname''
drop index ''indexname;''

In MS Access hingegen lautet der Befehl analog zur Erstellung eines Index:

drop index ''indexname''
on ''tabellenname;''

SQL Befehlsergänzungen[Bearbeiten]

Die Basisbefehle lassen sich darüber hinaus noch durch etwaige Ergänzungsparameter detaillieren. Das hilft, um Datentabellen konkreter zu filtern. Beispiele für solche Ergänzungen wären etwa die Parameter:

  • where
  • and, or, not
  • order by

Anwendung des where-Attributs in SQL[Bearbeiten]

Mit dem where-Attribut können Daten gefiltert werden. So werden bei Suchanfragen nur die Ergebnisse ausgegeben, die bestimmte Bedingungen erfüllen, die mit Hilfe des where-Attributs spezifiziert werden:

select ''spalte1, spalte2, …''
from ''tabellenname''
where ''bedingung;''

Dabei kann das Attribut nicht nur in select-Befehlen angewandt werden, sondern auch in update-, delete- und weiteren Eingaben.

Anwendung von and-, or- und not-Attributen[Bearbeiten]

and, or und not ermöglichen in Verbindung mit dem where-Attribut noch spezifischere Suchen innerhalb der Datenbanken. Mit and und or lassen sich verschiedene bzw. mehrere Bedingungen gleichzeitig festlegen, auf die der Filter bei der Suche nach Daten achten soll.

Durch die Ergänzung um and werden alle Informationen ausgegeben, auf die die Bedingungen, die durch den and-Befehl getrennt aufgelistet werden, zutreffen:

select ''spalte1, spalte2, …''
from ''tabellenname''
where ''bedingung1 and bedingung2 and bedingung3 …;''

Wird dem where-Attribut ein or-Befehl hinzugefügt, werden alle Daten ausgegeben, auf die mindestens eine der durch or getrennten Bedingungen oder Eigenschaften zutreffen:

select ''spalte1, spalte2, …''
from ''tabellenname''
where ''bedingung1 or bedingung2 or bedingung3 …;''

Die not-Einschränkung spuckt indes nur Ergebnisse aus, auf die die angegebenen Bedingungen oder Merkmale nicht zutreffen:

select ''spalte1, spalte2, …''
from ''tabellenname''
where not ''bedingung;''

Anwendung des order-by-Attributs[Bearbeiten]

order by ist ein SQL-Befehlsattribut, mit dem die Reihenfolge festgelegt werden kann, in der die Suchergebnisse dargestellt werden sollen. Dabei gibt das reine order-by-Attribut die Ergebnisse standardmäßig in aufsteigender Reihenfolge aus:

select ''spalte1, spalte2, …''
from ''tabellenname''
order by ''spalte1, spalte2, …'' 

Möchte man eine absteigende Reihenfolge festlegen, muss zusätzlich ein desc-Befehl in den SQL-Command eingefügt werden:

select ''spalte1, spalte2, …''
from ''tabellenname''
order by ''spalte1, spalte2, …''
desc;

Einzelnachweise[Bearbeiten]

  1. SQL Einführung – Was ist SQL? Datenbanken verstehen. Abgerufen am 14.08.2020
  2. Übersicht SQL-Befehle PHP-Einfach. Abgerufen am 14.08.2020
  3. Anatomie eines SQL Indexes Use The Index, Luke! Abgerufen am 14.08.2020

Weblinks[Bearbeiten]