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