SQL

SQL ist eine Abkürzung für Structured Query Language.

Dies ist eine Sprache zur Bearbeitung relationaler Datenbanken; sie bietet die Möglichkeit, Daten aus der DB abzufragen, einzufügen, zu ändern, und zu löschen. SQL wird in drei Kategorien eingeteilt:

Es stehen folgende grundlegende Funktionen zur Verfügung:

Befehl

Funktion

CREATE

Erzeugt Datenbanken und Tabellen

SELECT

Dieser Befehl dient zur Abfrage von Daten aus der DB

INSERT

Hiermit werden Daten eingefügt

UPDATE

mit UPDATE geschehen Datenänderungen

DELETE

DELETE löscht Datensätze aus der DB

Wichtig! Jeder SQL-Befehl wird mit einem Semikolon abgeschlossen!

Syntax und Optionen

CREATE

Mit CREATE werden Datenbanken oder Tabellen angelegt.

CREATE DATABASE

CREATE DATABASE <Datenbankname>

CREATE DATABASE erzeugt eine neue Datenbank.

Beispiel:

CREATE DATABASE post;

In dieser Datenbank werden später Tabellen gespeichert; sie (die Datenbank) dient also als Container für Tabellen.

CREATE TABLE

CREATE TABLE <Name> (<Spalte> <Datentyp> [, <Spalte> <Datentyp>])

CREATE TABLE erzeugt in einer Datenbank eine neue Tabelle.

Beispiel:

CREATE TABLE postleitzahlen (plz CHAR(5), ort VARCHAR(32));

Das Beispiel erzeugt eine Tabelle "postleitzahlen" mit zwei Spalten: plz und ort.

Die Tabelle wird in der vom Benutzer vorher ausgewählten Datenbank gespeichert. Wie eine Datenbank ausgewählt wird, steht in der Dokumentation des Datenbanksystemes.

SELECT

SELECT <Felder>
FROM <Tabelle>
WHERE <Bedingung>

Die erste Option <Felder> bietet folgende Möglichkeiten:

Die zweite Option <Tabelle> gibt die Tabelle an, aus der die Daten abgefragt werden sollen.
Es ist auch möglich, Daten aus mehreren Tabellen abzufragen, dazu werden die Tabellennamen durch Kommata getrennt aufgelistet (Bsp.: Passwd, Group). Dies wird notwendig, wenn mehrere Tabellen zueinander in Beziehung stehen und tabellenübergreifende Datensätze benötigt werden.

Beispiel:

SELECT plz FROM postleitzahlen WHERE ort='Paderborn';

wählt alle Postleitzahlen der Stadt Paderborn aus der Tabelle postleitzahlen aus.

Selbstverständlich kann man die ausgegebenen Daten auch sortieren lassen (wer selbst programmiert, weiss, wie aufwändig oder nervig es ist, Sortieralgorithmen zu schreiben, bzw. abzutippen):

SELECT plz FROM postleitzahlen WHERE ort='Paderborn' ORDER BY plz;

Zum Sortieren wird das Schlüsselwort ORDER BY verwendet, unter Angabe der Spalte, nach der sortiert werden soll. Standardmäßig wird dabei aufsteigend sortiert. Selbstverständlich läßt sich dies auch beeinflussen:

SELECT plz FROM postleitzahlen WHERE ort='Paderborn' ORDER BY plz DESC;

In diesem Fall wird absteigend sortiert (DESC = descending; absteigend). Das Gegenteil zu DESC ist ASC (ASC = ascending; aufsteigend).

Nun der Clou:
Auch mehrere Spalten können zur Sortierung herangezogen werden, wobei zunächst nach der zuerst angegeben Spalte, dann nach der zweiten, usw. sortiert wird. Ob das Ergebnis dann natürlich das gewünschte ist, sei aber dahingestellt; der Benutzer / Programmierer sollte schon wissen, was er tut :)

Würden wir uns also das gesamte Postleitzahlenverzeichnis in unserer Datenbank, sortiert nach Orten und innerhalb der Orte nach den Postleitzahlen selbst, ausgeben lassen, sähe der SELECT so aus:

SELECT * FROM postleitzahlen ORDER BY ort, plz;

(Erinnerung: Es wird standardmäßig aufsteigend sortiert!)

Das soll zunächst an dieser Stelle genug zum SELECT sein, denn dieser Befehl ist einer der mächtigsten von SQL und kann sehr lang werden (vor allem, wenn man SELECTs über mehrere Tabellen macht, mit verschiedenen Kriterien, usw.).

INSERT

INSERT INTO <Tabelle> [(<Spalte1 [, <Spalte2>, ...])] VALUES (<Wert1> [, <Wert2>, ...]);

Mit INSERT werden Daten in eine Tabelle geschrieben.

Beispiel:

INSERT INTO postleitzahlen VALUES ('33100', 'Paderborn');

Der Datensatz muss übrigens nicht zwangsläufig an das Ende der Tabelle geschrieben werden; das Datenbanksystem entscheidet über die Stelle, an der der Datensatz geschrieben wird. Dies kann zum Beispiel auch an einer Stelle sein, an der per DELETE ein anderer Datensatz vorher gelöscht wurde (aber dafür gibt es ja SELECT in Verbindung mit ORDER BY).

Hab jetzt keine Zeit mehr, später mehr... :) Max
(Dito, Hauke :) )

LugOwlWiki: SQL (zuletzt geändert am 2009-03-08 14:45:42 durch localhost)

Impressum Datenschutz