Datenbank erstellen
CREATE DATABASE
Mit dem Befehl CREATE DATABASE
kann eine neue Datenbank erstellt werden.
CREATE DATABASE ef_reto;
DROP DATABASE
Die Datenbank kann mit dem Befehl DROP DATABASE
auch wieder gelöscht werden:
DROP DATABASE ef_reto;
Bitte löschen Sie nur Datenbanken, die Sie selber erstellt haben!
Der Einfachheit halber haben Sie auf der Kursdatenbank EDU-DBs EF alle Rechte...
Erstellen Sie eine eigene Datenbank mit nach folgendem Schema ef_name
, wobei Sie natürlich Ihren eigenen Namen verwenden. Wenn der Befehl erfolgreich ausgeführt wurde, sollte Ihre Datenbank nach dem Aktualisieren der Verbindungen angezeigt werden.
Tabellen erstellen
CREATE TABLE
Tabellen werden mit dem Befehl CREATE TABLE
erstellt. Die Spalten werden mit dem Namen und dem Datentyp definiert.
CREATE TABLE persons (
id INT,
name TEXT,
alter INT,
beschreibung TEXT
)
Konvention Der Name der Tabelle wird immer im Plural geschrieben.
Datensätze einfügen
INSERT INTO
Mit dem Befehl INSERT INTO
können Datensätze in die Tabelle eingefügt werden.
INSERT INTO persons
(id, name, alter, beschreibung)
VALUES
(1, 'Maria Muster', 42, 'Ein ganz normaler Mensch'),
(2, 'Hans Monster', 55, 'Ein ganz monströser Mensch');
Datenbank
mit der eigenen Datenbank verbinden!
👉 https://db-sql.ch/connections/d68ea3c2-eb9f-4454-aa19-9c00764757b5
Erstellen Sie eine Personen-Tabelle mit einigen selbst gewählten Attributen und fügen Sie einige Datensätze ein. Halten Sie das Query unten fest.
Was passiert, wenn Sie nun nochmals die gleichen Datensätze einfügen?
Tabellen löschen
DROP TABLE
Um eine Tabelle zu löschen, wird der Befehl DROP TABLE
verwendet.
DROP TABLE persons;
Constraints
Constraints sind Regeln, die auf die Daten angewendet werden. Sie können auf die Spalten oder auf die ganze Tabelle angewendet werden. So wird sichergestellt, dass die Daten in der Tabelle immer korrekt sind.
Damit kann bspw. auch verhindert werden, dass wie oben geschehen, die gleichen Datensätze mehrmals eingefügt werden.
PRIMARY KEY
Primärschlüssel - Die Datenbank stellt sicher, dass der verwendete Schlüssel eindeutig ist und nicht
NULL
ist.NOT NULL
Die Spalte darf nicht
NULL
sein.UNIQUE
Der Wert in der Spalte muss eindeutig sein.
DEFAULT
Der Standardwert, der verwendet wird, wenn kein Wert angegeben wird.
SERIAL
Automatisch generierter Wert, der bei jedem neuen Datensatz um 1 erhöht wird. Beim Primärschlüssel muss dadurch beim Erstellen eines Datensatzes kein Wert angegeben werden.
DEFAULT CURRENT_TIMESTAMP
Der aktuelle Zeitstempel wird als Standardwert verwendet.
Obige Tabelle könnte also auch wie folgt definiert werden:
CREATE TABLE persons (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
alter INT,
beschreibung TEXT DEFAULT 'Keine Beschreibung vorhanden',
erstellt_am TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
Die Eingabe wird wegen der automatischen ID's etwas einfacher. Bemerken Sie zudem, dass automatisch von der Datenbank ein Zeitstempel gesetzt wird.
INSERT INTO persons
(name, alter, beschreibung)
VALUES
('Maria Muster', 42, 'Ein ganz normaler Mensch'),
('Hans Monster', 55, 'Ein ganz monströser Mensch');
Datenbank
mit der eigenen Datenbank verbinden!
👉 https://db-sql.ch/connections/d68ea3c2-eb9f-4454-aa19-9c00764757b5
Erstellen Sie Ihre Personen-Tabelle erneut (zuerst Löschen...)
-
verwenden Sie einen seriellen Primärschlüssel
-
stellen Sie sicher, dass benötigte Felder gesetzt werden müssen
-
Fügen Sie für mindestens ein Attribut einen Standardwert
-
Fügen Sie ein
erstellt_am
(odercreated_at
) Feld hinzu, welches automatisch mit dem aktuellen Zeitstempel gefüllt wird. -
Fügen Sie einige Datensätze ein - passen Sie am besten das Query von oben an.
Was passiert nun, wenn Sie die Restriktionen verletzen? Probieren Sie es aus und halten Sie einige Fehlermeldungen fest.
Verknüpfte Tabellen
Beim Erstellen von Tabellen können nebst Primärschlüsseln auch Fremdschlüssel definiert werden. Damit wird sichergestellt, dass die Daten in den verknüpften Tabellen immer konsistent sind. Dies ist mitunter einer der wichtigsten Gründe, eine relationale Datenbank zu verwenden.
CREATE TABLE personen (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
alter INT,
beschreibung TEXT DEFAULT 'Keine Beschreibung vorhanden',
erstellt_am TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE adressen (
id SERIAL PRIMARY KEY,
strasse TEXT NOT NULL,
hausnummer TEXT NOT NULL,
plz TEXT NOT NULL,
ort TEXT NOT NULL,
person_id INT REFERENCES personen(id)
);
REFERENCES <tabelle>(<spalte>)
Mit dem Befehl REFERENCES
wird ein Fremdschlüssel definiert. In diesem Beispiel wird sichergestellt, dass die person_id
in der Tabelle adressen
immer auf einen gültigen Datensatz in der Tabelle personen
verweist.
Es kann auch im Nachhinein ein Fremdschlüssel hinzugefügt werden:
ALTER TABLE adressen
ADD FOREIGN KEY (person_id) REFERENCES personen(id);
-- ^ Spalte fkey ^ Tabelle(Spalte pkey)
Entfernen von Constraints
ALTER TABLE adressen
DROP CONSTRAINT fkey_adresse_personen_id;
Tabellen Erstellen