programmierung
und datenbanken
Joern Ploennigs
Tabellen Anlegen
Ablauf¶
Tabellen mit SQL anlegen¶

Letzter Schritt: Implementierung des ER-Diagrammes¶
Abbilden des ER-Modells auf SQL-Befehle zum Erzeugen der Tabellen
- Erstellen der Tabellen
- Für jedes Attribut jeder Relation einen sinnvollen Datentyp finden
- Festlegen ob Attribute Nullbar oder Nicht Null sind
- Festlegen des Primärschlüssel
- Festlegen von Fremdschlüssel
- Deklarieren zusätzlicher Suchindexe zur Performanceoptimierung
- Definition von Zugriffsrechten
Um die Tabelle zu erstellen, benötigt man den CREATE TABLE SQL
-Befehl.
Dieser fügt noch keine Daten ein, sondern erstellt nur ein leeres Grundgerüst.
DDL - Data Definition Language¶
Erlaubt Operationen auf den Definitionen von Datenstrukturen:
CREATE
– Tabellen erzeugenALTER
– Tabellen verändernDROP
– Tabellen löschenTRUNC
– Daten aber nicht die Tabelle löschen
Die möglichen Datenstrukturen sind dabei:
TABLE
– Tabellen zum speichern von DatenVIEW
– Dynamisch generierte Ansichten auf TabellenMATERIALIZED VIEW
– Tabellen die sich aus anderen Tabellen ableiten
Tabellen erstellen in SQL¶
CREATE TABLE table_name (
attribute1_name attribute1_type attribute1_constraints,
attribute2_name attribute2_type attribute2_constraints,
…,
table_constraints
)
Datentypen in SQLite vs. Python¶
SQLite | Python | Beschreibung |
---|---|---|
Boolean (INTEGER) |
bool |
Wahrheitswerte |
INTEGER |
int |
Ganzzahl |
REAL |
float |
Gleitkommazahl |
NUMERIC |
- | Interpretiert beliebige Dateneingaben als Zahl |
TEXT |
str |
Text-String, gespeichert in UTF-8 oder UTF-16 |
BLOB |
bytes |
Beliebiger Block an Binärdaten |
NULL |
None |
Keine Daten |
Beispiel: Tabellen erstellen in SQLite¶
Für unser Geometriebeispiel ergeben sich folgende CREATE TABLE Statements:
CREATE TABLE Points (
point_id INTEGER,
x REAL,
y REAL
);
CREATE TABLE Lines (
lines_id INTEGER,
start INTEGER,
end INTEGER
);
Schlüssel und Constraints in SQL¶
Primär- und Sekundärschlüssel werden meistens durch INTEGER-Spalten abgebildet.
Der Primärschlüssel jeder Relation muss speziell markiert werden durch den PRIMARY KEY Constraint.
Weitere Constraints die beim Einfügen neuer Daten eingehalten werden:
NOT NULL
– Werte dürfen nicht null seinAUTOINCREMENT
– Numerische Primärschlüssel werden automatisch berechnetUNIQUE
– Werte müssen eindeutig sein, keine Dopplungen erlaubtCHECKED
– Zusätzliche logische Bedingung für neue WerteFOREIGN KEY
– Wert eines existierenden Fremdschlüssels
Beispiel: Primärschlüssel, Fremdschlüssel und Constraints¶
CREATE TABLE Points (
point_id INTEGER PRIMARY KEY AUTOINCREMENT,
x REAL NOT NULL,
y REAL NOT NULL
);
CREATE TABLE Lines (
lines_id INTEGER PRIMARY KEY AUTOINCREMENT,
start INTEGER NOT NULL,
end INTEGER NOT NULL,
FOREIGN KEY(start) REFERENCES Points(point_id),
FOREIGN KEY(end) REFERENCES Points(point_id)
);
CREATE TABLE erweiterte Funktionen¶
Zusätzliche Optionen:
DEFAULT
: Standardwert für neue Elemente festlegenWITHOUT ROWID
: Tabellen die nicht durchnummeriert werdenSTRICT
: Tabelle forciert Datentypen strikt
Daten zu Tabellen hinzufügen¶
Daten werden in Tabellen mit dem SQL-Befehl INSERT
hinzugefügt
Daten hinzufügen in der Reihenfolge der Spaltennamen:
INSERT INTO Points VALUES(1, 54.083336, 12.108811);
INSERT INTO Points VALUES(2, 12.094167, 54.075211);
INSERT INTO Lines VALUES(1, 1, 2);
oder mit expliziten Spaltennamen:
INSERT INTO Points(x, y) VALUES(54.083336, 12.108811);
INSERT INTO Points(x, y) VALUES(12.094167, 54.075211);
INSERT INTO Lines(start, end) VALUES(1, 2);
Tabelle aus bestehenden Daten erstellen¶
CREATE TABLE tablename AS
SELECT … FROM … WHERE …
Hat keinen Primärschlüssel, kann nur nachträglich definiert werden
ALTER TABLE - Statement¶
Ändern von Tabellen und Spaltennamen, Hinzufügen und Löschen von Spalten
ALTER TABLE tablename TO newtablename
Beispiel:
ALTER TABLE Points RENAME TO Punkte
ALTER TABLE - Beispiel¶
Besitzer zu Kunde umbenennen, Spalte für Kontonummer hinzufügen
ALTER TABLE tablename ADD COLUMN column_name column_type
Beispiel:
ALTER TABLE PolygonType ADD COLUMN maxPoints INTEGER
DROP TABLE - Statement¶
Das Löschen von kompletten Tabellen.
DROP TABLE tablename
Beispiel:
DROP TABLE Points
fragen?
und datenbanken