SQL

Werbung
SQL
Überblick
SQL steht für Structured Query Language und bedeutet soviel wie strukturierte
Abfragesprache. SQL ist die De-facto-Standardsprache, mit der sich Daten aus
relationalen Datenbanken abrufen und dort manipulieren lassen. SQL ist eine nicht
prozedurale Sprache. Das bedeutet „was“ statt „wie“. SQL beschreibt, welche Daten
abgerufen, aktualisiert oder gelöscht werden und nicht wie es zu geschehen hat. SQL ist
eine echte, plattformunabhängige und produktübergreifende Sprache. Und da sie eine
höhere Sprache der vierten Generation ist (4GL), lassen sich komplexe Funktionen mit
wenigen Codezeilen formulieren. Ursprünglich wurde SQL von IBM für DB2, ein
relationales DBMS (RDBMS = Relational Database Management System), entwickelt.
ANSI und ISO standardisierten SQL, welches den Datenbankherstellern nun als Richtlinie
dient. Der aktuelle Standard ist der ANSI 1992 (SQL-92). Mit SQL kann der
Programmierer oder Datenbankadministrator folgende Aufgaben ausführen:
-
die Struktur einer Datenbank modifizieren.
die Einstellungen der Systemsicherheit ändern.
Benutzerberechtigungen für Datenbanken oder Tabellen einrichten.
eine Datenbank nach Informationen abfragen.
den Inhalt einer Datenbank aktualisieren.
Einführung
In einer kurzen Einführung möchte ich die grundlegenden SQL Befehle vorstellen. Ich
zeige wie man eine kleine, einfache Datenbank anlegt, Tabellen erstellt, diese mit Werten
füllt, diese dann manipuliert um am Ende alles wieder zu löschen. Als Plattform kommt
MySQL zum Einsatz. MySQL ist ein RDBMS, welches weitgehend den SQL-92 Standard
unterstützt. Zuerst möchte ich die Datentypen von ANSI-SQL vorstellen.
Zeichenstrings:
CHARACTER, CHARACTER VARYING, CHARACTER, STRING, VARCHAR
Numerische Datentypen:
DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INTERVAL, NUMBER, NUMERIC,
REAL, SMALLINT
Binäre Datentypen:
BIT, BIT VARYING
Datum-/Zeitangaben:
DATE, TIME, TIMESTAMP
Erstellen einer Datenbank ist sehr einfach. Der Befehl dafür ist
CREATE DATABASE dbKlasse;
In SQL ist ein Semikolon hinter einer SQL-Anweisung Pflicht, Groß-/Kleinschreibung ist
jedoch nicht von Bedeutung. Jetzt haben wir eine Datenbank namens dbKlasse erzeugt.
Es ist nun an der Zeit ihr eine Tabelle zuzufügen. Doch bevor wir dies tun, müssen wir
MySQL sagen, an welcher Datenbank wir operieren möchten. Dies geschieht in dem man
USE dbKlasse;
Eingibt. Damit wählen wir die Datenbank dbKlasse aus.
Nun erstellen wir eine Tabelle Namens tblPersons. Doch bevor wir dies tun, müssen wir
wissen welche Attribute sie haben soll. Wir beschränken uns auf den Vor- und
Nachnahmen, sowie das Geburtsdatum. Unsere Tabelle enthält demnach die Attribute
Fname, Lname, Birthdate, sowie einem Primärschlüssel zur eindeutigen Identifizierung
der Person (des Datensatzes). Erstellen der Tabelle:
CREATE TABLE tblPersons(
P_ID INTEGER NOT NULL AUTO_INCREMENT, PRIMARY KEY(P_ID),
Fname VARCHAR(24),
Lname VARCHAR(24) NOT NULL,
Birthdate DATE
);
Etwas zur Syntax und Befehlen. CREATE TABLE erklärt sich von selbst, genauso wie
tblPersons (Name der Tabelle). P_ID ist der Name des ersten Attributs. INTEGER ist der
Datentyp, also eine Ganzzahl. NOT NULL bedeutet, dass dieses Feld nicht Leer sein darf.
AUTO_INCREMENT bedeutet, dass dieser Wert sich mit einem neuem Eintrag automatisch
um eins vergrößert. PRIMARY KEY(attr_name) definiert das Feld als Primärschlüssel,
muss von der Definition des Attributs durch ein Komma getrennt werden. Die
Attributdefinitionen werden ebenfalls durch Kommata getrennt. Die komplette
Tabellendefinition muss von klammern umschlossen werden und die Anweisung
schließlich mit einem Semikolon abgeschlossen. Fügen in unsere Tabelle nun einige
Datensätze ein. Dies geschieht mit dem Befehl INSERT.
INSERT INTO tblPersons (Fname, Lname, Birthdate)
VALUES („Waldemar“, „Haffner“, „1981-11-26“)
;
möglich wäre auch
insert into tblPersons (p_id, fname, lname, birthdate)
values (37, ‘Waldemar’, ‘Haffner’, ‘1981-11-26’)
;
Der Unterschied zwischen den beiden Versionen ist sichtbar, abgesehen von der Groß/Kleinschreibung und den doppelten, sowie einfachen Anführungsstrichen, ist der
Hauptunterschied in den Attributnamen. In der ersten Version fügen die Werte lediglich
in die Spalten Fname, Lname und Birthdate ein, während wir in der zweiten, P_ID explizit
angeben. In der ersten Version war es möglich darauf zu verzichten, weil es ein
AUTO_INCREMENT Wert ist, er wird also automatisch generiert, aus dem
vorhergehendem Wert. Zur Syntax und Befehlen: INSERT INTO ist der eigentliche Befehl
zum einfügen von Daten, daraufhin folgt der Tabellenname. In den Klammern hinter dem
Tabellennamen, durch Kommata getrennt, sind Attributnamen angegeben in die wir die
Werte einfügen wollen. Das Schlüsselwort VALUES sagt, dass nun die Werte folgen. Diese
werden ebenfalls von Klammern umfasst und durch Kommata getrennt. Die Reihenfolge
muss derjenigen entsprechen, die wir bei Attributnamen bestimmt haben. Beim Einfügen
der Werte ist zu beachten, dass Zeichenfolgen in Anführungszeichen stehen müssen,
während bei numerischen Werten diese verzichtbar sind. Nach dem Einfügen der Werte,
wollen wir diese abrufen. Zum Abrufen der Werte verwende wir den Befehl SELECT. Eine
komplette Abfrage könnte wie folgt aussehen:
SELECT * FROM tblPersons;
Damit würden wir alle Einträge der Tabelle, in der Eintragsreihenfolge, abrufen.
Wir können die Abfrage einschränken und sortiert ausgeben. Dies geschieht mit Hilfe
einer Bedingung und der Schlüsselwörter ORDER BY. Solche Abfrage würde z.B. so
aussehen:
SELECT Fname, Lname, Birthday from tblPersons
WHERE p_id > 4 AND Lname <> “Haffner” AND Fname LIKE “R%”
ORDER BY Lname
;
SELECT ist wohl der Befehl der meisten verwendet wird. SELECT heißt soviel wie wählen,
in unseren Beispiel wählen wir die Attribute Fname, Lname und Birthday. Nur die Werte
dieser Spalten werden also gewählt (demnach auch ausgegeben). Die Auswahl ist
bedingt. Sie wird durch eine Bedingung eingeschränkt. In unserem Beispiel werden
lediglich Werte der Datensätze ausgegeben, dessen P_ID Wert größer als 4 ist, der
Lname nicht „Haffner“ lautet und Fname mit einem R anfängt. Sortiert wird die Ausgabe
alphabetisch und zwar nach dem Lname, also dem Nachnahmen. Kommen wir nun zum
Aktualisieren der Daten. Angenommen Sie haben einen Fehler beim Eintragen gemacht,
einen Namen falsch geschrieben, und möchten diesen korrigieren. Also aktualisieren Sie
ihn mit UPDATE.
UPDATE tblPersons
SET Fname = „Klassensprecher“
WHERE Lname = “Haffner”
;
Mit UPDATE weisen sie MySQL an, eine Aktualisierung durchzuführen. Hinter UPDATE
folgt der Tabellenname, dahinter der Befehl SET und dann der Attributname. Damit nicht
alle Datensätze betroffen werden, definieren wir eine Einschränkung, wie es bei SELECT
demonstriert wurde. Kommen wir nun zum Löschen von Datensätzen. Wie nicht anders
zu erwarten ist lautet der Befehl DELETE und eine Anweisung sieht dann so aus:
DELETE FROM tblPersons
WHERE p_id < 2
;
DELETE löscht immer ein ganzes Tupel. Es erwartet als Parameter nur den
Tabellennamen. Eine Einschränkung ist, natürlich wie immer, optional. Ohne
Einschränkung jedoch würde DELETE alle Datensätze der Tabelle löschen. Eine Tabelle
entfernt man aus der Datenbank mit dem Befehl DROP:
DROP TABLE tblPersons;
Eine Datenbank löscht man ebenfalls mit DROP:
DROP DATABASE dbKlasse;
(doc.) 2003, Waldemar Haffner
Quellen:
- SQL in 21 Tagen
- MySQL Datenbankhandbuch von Guido Stepken
([email protected])
- etwas Erfahrung
Herunterladen