DDL steht für Data Definition Language, das ist der Sprachteil von SQL, der zur Definition der Datenbank gedacht ist. Zur Datenmanipulation benutzt man den zweiten Teil der Befehle von SQL (deshalb DML: Data Manipulation Language), hierzu gehört vor allem die SELECT-Anweisung. Da wir erst mal eine Datenbank benötigen, fangen wir mit dem DDL-Teil an:
<<<
Zuerst müssen wir in gfsqlite eine neue Datenbank ins Leben rufen: Gehe im Menü über Datenbank => Neue Datenbank erstellen
, es öffnet sich folgendes Fenster:
Wurde die Datenbank erfolgreich erstellt, so antwortet gfsqlite:
und öffnet die Datenbank:
gfplus 1.1 -- Interaktive SQL shell Monday November 17, 2003 08:59 PM Benutze Datenbank "prowo.db" pysql>
SQLite-Datenbanken haben die Endung *.db
, im Beispiel oben: prowo.db
Was jetzt noch fehlt sind Relationen (sprich: Tabellen), also vereinbaren wir welche mit CREATE:
pysql> CREATE TABLE sar_lehrer (lehrernr integer primary key, name varchar(20), vorname varchar(20), typ varchar(10), prowonr integer); pysql> CREATE TABLE sar_schueler (schuelernr integer primary key, name varchar(20), vorname varchar(20), Klasse varchar(5), Geschlecht varchar(1));
Allgemein:
CREATE TABLE tabellenname (spalte1 typ, spalte2 typ, spalte3 typ);
Gross- oder Kleinschreibung kümmert gfsqlite nicht, es ist aber üblich, die SQL-Schlüsselwörter GROSS zu schreiben, also CREATE statt create.
Über den Punkt Tabellen zeigen
können wir unsere bisherige Arbeit kontrollieren:
PS: Das Fenster ist kontextsensitiv und liefert auch eine Übersicht der soeben vereinbarten Spalten!
<<<Wähle im Menü Datenbank
den Punkt Struktur einer Tabelle zeigen
und suche dir eine Tabelle aus, z. B. die Tabelle sar_projekt:
pysql> CREATE TABLE sar_projekt (prowonr integer primary key, Thema varchar(30), Stufe varchar(15), Anzahl integer, Raumbedarf varchar(15), SCHULGERAETE varchar(20))
Wichtig ist die Eigenschaft prowonr
, unser Primärschlüssel! Wird jetzt eine Projektnummer doppelt vergeben, so zeigt gfsqlite eine Fehlermeldung im unteren Fenster an:
SQL Fehler bei der Ausführung des Befehls: INSERT INTO sar_projekt . . .<<<
Mit dem Befehl DROP
kann man Tabellen löschen, Beispiel:
pysql> DROP TABLE sar_schueler;
In gfsqlite gibt es KEINE Möglichkeit, die Struktur einer einmal definierten Tabelle im nachhinein zu verändern! Hat man also bei der Vereinbarung der Tabelle einen Väler (?!?) gemacht, so muss die Tabelle leider gelöscht werden.
VORSICHT: Nicht nur die Tabelle ist danach gelöscht, auch sämtliche Daten sind danach weg!!
Deshalb hier mein Ratschlag: speichere deine Sitzung über den Punkt
Datei => Sitzung speichern als . . .
als Textdatei ab (bitte die Endung *.txt
nicht vergessen!)
Was wäre eine Tabelle ohne Daten? Also sorgen wir für etwas Information:
pysql> INSERT INTO sar_lehrer (lehrernr, name,vorname,typ,prowonr) VALUES (1,'Spiegel', 'Walter', 'Lehrer',1); pysql> INSERT INTO sar_lehrer (lehrernr, name,vorname,typ,prowonr) VALUES (2,'Hilbert', 'David', 'Lehrer',2);
Statt der Langform geht es auch kürzer:
pysql> INSERT INTO sar_lehrer VALUES (5,'Hegel', 'G.', 'Lehrer',1);
Aber: Die Reihenfolge der einzelnen Daten eines Datensatzes muss streng eingehalten! Hier also zuerst die lehrernr
, dann der Name
, und so weiter.
PS: Einen ersten Überblick verschafft der Befehl
pysql> SELECT * FROM sar_lehrer;
allgemein:
pysql> SELECT * FROM <tabellen_name>;
Hat man sich bei der Eingabe vertan, oder muss man nachträglich Daten ändern, so benutzt man UPDATE:
pysql> UPDATE sar_lehrer SET vorname = 'Georg' WHERE lehrernr = 5;
Man kann damit in gfsqlite immer nur ein Attribut ändern, der folgende Befehl geht also "schief":
pysql> UPDATE sar_lehrer SET Typ = 'Schueler', SET Prowonr = 3 WHERE lehrernr = 5;
Statt dessen müssen zwei UPDATE-Befehle eingegeben werden!
KORREKT: pysql> UPDATE sar_lehrer SET Typ = 'Schueler' WHERE lehrernr = 5; pysql> UPDATE sar_lehrer SET Prowonr = 3 WHERE lehrernr = 5;
ERGEBNIS: lehrernr | name | vorname | typ | prowonr ====================================================== 1 | Spiegel | Walter | Lehrer | 1 2 | Hilbert | David | Lehrer | 2 5 | Hegel | Georg | Schueler | 3<<<
Mit DELETE kann man einzelne Datensätzte wieder löschen, Beispiel:
pysql> DELETE FROM sar_lehrer WHERE name = 'Hegel';
An dieser Stelle noch einmal der freundliche Hinweis:
Speichert eure Sitzungen ab, ihr spart wirklich Zeit!
<<<Die Beispiel-Datenbank prowo.zip ins eigene Verzeichnis kopieren! Der Datenbanken-Reader ist diesmal leider keine Hilfe, schau dafür mal hier:
http://www.highcroft.com/highcroft/sql_intro.pdf (DER SQL-Tutor, auf Englisch!),
ganz nett ist auch:
http://www.oszhdl.be.schule.de/gymnasium/faecher/informatik/datenbanken/
das Material zu SQL ist aber leider nur auf die SELECT-Anweisung begrenzt (die lernen wir das nächste Mal kennen)
<<<prowo.zip
in dein Verzeichnis (siehe oben)! SELECT * FROM sar_lehrer;
sar_wahl
(DROP). Erstelle dann mit Hilfe von CREATE deine eigene Wahl-Tabelle sar_wahl
und ergänze sie um ein einige Datensätzte. Ausgabe: SELECT * FROM sar_wahl;
<F5>
Vorheriger Befehl, <F6>
Nächster Befehl.