SQL steht für "Structured Query Language" und wird für das Ansprechen der meisten Datenbanken (PostgreSQL, MySQL, Adabas, Oracle, ...) benutzt.

SQL ist eine standardisierte Datenbank-Abfragesprache, die das Speichern, Updaten und den Zugriff auf Informationen erleichtert. Beispielsweise kann man Produktinformationen eines Kunden auf einem SQL-Server speichern und abrufen.

Externe Doku

Aufbau einer SQL-Abfrageanweisung

  1. Schlüsselwort SELECT vor der Liste der Namen der abgefragten Spalten

    • Sind die Inhalte aller Spalten anzuzeigen, so genügt das Sternchen "*".
    • Werden gleichnamige Spalten in mehreren Tabellen angesprochen, so muss man die qualifizierende Schreibweise verwenden: Tabellenname.Spaltenname

  2. In Standard SQL darf ein Name keine Leerzeichen enthalten.
  3. DISTINCTROW: besagt, dass jede Ausgabezeile sich von der anderen unterscheiden muss.

    • /!\ Standard-SQL: DISTINCT.

    • auch: UNIQUE

Tabellenangabe

/!\ (hier fehlt ein Stück Text!)

In einem Bedingungsausdruck weist man also das Datenbankprogramm an, jede Zeile einer Tabelle darauf hin zu überprüfen, ob in der angegebenen Spalte die gesetzte Bedingung erfüllt ist. Führt der Vergleich zum Ergebnis wahr bzw. true, wird die betreffende Zeile ausgegeben.

In der WHERE Klausel kann man auch Bedingungen für das Verknüpfen von Tabellen formulieren, z.B.:

SELECT DISTNCTORW Artikel_Lieferer.ArtNr, ArtBez, AngPreis
FROM Artikel, Artikel_Lieferer
WHERE Artikel_Lieferer.ArtNr = Artikel.ArtNr AND AngPreis > 20 AND AngPreis < 23;

Die Verknüpfung zwischen den beiden Tabellen z.B. Artikel und Artikel_Lieferer wird hier durch WHERE Artikel_Lieferer.ArtNr  = Artikel.ArtNr hergestellt.

Sortierungsanweisung

ORDER BY: wird die sortierte Ausgabe der Daten gewünscht und nach welchem Begriff zu sortieren ist, z.B.:

SELECT LiefNr, LiefName
FROM Lieferer
ORDER BY LiefName

DESC: erreicht die fallende Sortierfolgen, z.B.: ORDER BY LiefName DESC

Man kann also in einer ORDER BY sowohl aufsteigende als auch absteigende Sortierkriterien vorgeben.

Weitere Infos in SQL/SelectFürFortgeschrittene

SQL-Anweisungen zur Manipulation von Daten

Daten einfügen

INSERT: hiermit werden Daten in die Spalten der angegebenen Tabelle eingetragen, z.B.:

INSERT INTO Tabellenname(Spaltenname1, Spaltenname2,......)
VALUES(WertinSpalte1, WertinSpalte2, ....);

Aktualisieren

Bei der Aktualisierung werden in eine oder mehrere Spalten neue Werte eingesetzt, z.B.:

UPDATE Tabellenname
SET Spaltennamen = Ausdruck
WHERE Aktualisierungsbedingung

Neue Tabelle anlegen

Die neue Tabelle übernimmt die Spaltennamen, wie man sie in der SELECT Liste angegeben hat. Natürlich kann man die Namen der Spalten in der neuen Tabelle auch durch einen AS-Zusatz neu benennen, wie man aus dem prinzipiellen Aufbau der Tabellenerstellungsabfrage ersehen kann, z.B.:

SELECT Spaltenname1 AS SpName1, Spaltenname2 AS SpName2,.....
INTO Neue Tabelle
FROM Datenherkunftstabelle
WHERE?..

Löschen

Das Löschen erfolgt Satzweise, z.B.:

DELETE FROM Tabelle
WHERE Löschbedingung

Tabellen erstellen, ändern und löschen

Tabelle erzeugen

Beispiel: Einige Lieferanten kündigen an, dass sie künftig Mengenrabatte einführen wollen. So soll beispielsweise für die Abnahme von 1000 bis 9999 Blatt ein Rabatt von 9%, bei einer Abnahme von 10000 bis 20000 Blatt ein Rabatt von 15% gewährt werden. Um diese Informationen aufnehmen zu können, wird eine Tabelle mit folgenden Attributen benötigt: Artikelnummer, Lieferernummer, untere Mengenangabe, obere Mengenangabe sowie Rabattsatz.

CREATE TABLE Rabattstaffel
      (ArtNr          LONG,
       LiefNr         LONG,
       UntereMenge    LONG,
       ObereMenge     LONG,
       Rabattsa       SINGLE,
       CONSTRAINT alindex UNIQUE (ArtNr, LiefNr));

Beim Datentyp LONG INTEGER ist zu beachten, dass er in einer CREATE-Anweisung mit LONG bezeichnet wird. Spalten, die Zeichenketten aufnehmen, können durch die Angabe der Stellenzahl in ihrer Breite begrenzt werden. Mittels TEXT(30) wird die Breite einer Textspalte auf 30 Stellen festgesetzt.

CONSTRAINT: weist das Datenbanksystem an, einen aus der Artikelnummer und der Lieferernummer zusammengesetzten eindeutigen Schlüssel (UNIQUE) zu binden.

ALINDEX: damit wird sichergestellt, dass kein doppelter Schlüssel in die Tabelle Rabattstaffel eingegeben werden kann.

Tabelle ändern

ALTER: mit dieser Anweisung können sie den Aufbau einer Tabelle Verändern, z.B.:

ALTER TABLE Rabattstaffel
ADD Kommentar Text(40);

ADD: ist für das Hinzufügen von Spalten zuständig.

DROP: soll eine Spalte aus der Tabelle entfernt werden, wird ebenfalls die ALTER-Anweisung verwendet, z.B.:

ALTER TABLE Rabattstaffel
DROP Kommentar;

Tabelle löschen

Um eine Tabelle aus der Datenbank zu entfernen, verwendet man die Anweisung DROP, z.B. DROP TABLE Rabattstaffel;

Rechte

Die Rechte werden mit dem grant-Befehl definiert:

GRANT rechte (spalten) ON ebene TO giltfür IDENTIFIED BY "passwort" WITH optionen

Tabellenrechte: ALTER CREATE DELETE DROP INDEX INSERT REFERENCES SELECT UPDATE

Aktionsrechte: FILE PROCESS RELOAD SHUTDOWN

Sammelrechte: ALL USAGE

Ebene: datenbank.tabelle.spalte (auch mit Joker '*')

GiltFür: benutzer@host

Beispiele: {{{grant all on *.* to admin@% identified by "NaJa"; grant ALL on lager.* to lagerist@localhost identified by "pw"; grant CREATE,INSERT,UDATE on lager.* to lagerist@192.168.0.* identified by "pw"; grant SELECT on lager.* to lagerist@% identified by "pw"; }}}

Anmerkung: Folgende Joker kann MySQL nicht:


ToDo: überarbeiten / fehlende Passage ergänzen

Beitragende: Sofia Matos, ThomasWaldmann, JonesHamatoma

SQL (zuletzt geändert am 2011-02-13 13:38:56 durch brln-4dba90ac)