Eigene Tabellen anlegen – CREATE TABLE und INSERT Zusatzmodul Z1
Zusatz: Saarland entdecken
Bisher hast du Daten nur abgefragt. Mit SQL kann man aber auch neue Datensätze einfügen und eigene Tabellen anlegen. Dieses Kapitel ist ein Zusatz für Expertinnen und Experten.
Eine Klasse entwickelt die Ausflugs-App „Saarland entdecken“. Zwei Tabellen gibt es schon: die saarländischen Landkreise mit ihren Autokennzeichen und eine erste Liste von Wahrzeichen.
| Kennzeichen | Name | Kreisstadt |
|---|---|---|
| SB | Regionalverband Saarbrücken | Saarbrücken |
| MZG | Landkreis Merzig-Wadern | Merzig |
| NK | Landkreis Neunkirchen | Ottweiler |
| SLS | Landkreis Saarlouis | Saarlouis |
| HOM | Saarpfalz-Kreis | Homburg |
| WND | Landkreis St. Wendel | St. Wendel |
Die Tabelle landkreis
| WID | Name | Ort | Kategorie | Kennzeichen |
|---|---|---|---|---|
| 1 | Saarschleife | Mettlach | Natur | MZG |
| 2 | Völklinger Hütte | Völklingen | Industriekultur | SB |
| 3 | Ludwigskirche | Saarbrücken | Kirche | SB |
| 4 | Saarbrücker Schloss | Saarbrücken | Schloss | SB |
| 5 | Bostalsee | Nohfelden | Natur | WND |
| 6 | Schaumberg | Tholey | Natur | WND |
| 7 | Basilika St. Wendelin | St. Wendel | Kirche | WND |
| 8 | Saarpolygon | Ensdorf | Industriekultur | SLS |
Die Tabelle wahrzeichen
So arbeitest du in diesem Kapitel
- Jede Ausführung beginnt mit der unveränderten Datenbank. Du kannst also nichts kaputt machen.
- Nach einer Änderung zeigt dir die Seite, wie die Tabelle danach aussieht.
- Mehrere Anweisungen trennst du durch ein Semikolon
;.
1 Datensätze einfügen – INSERT INTO
Mit INSERT INTO fügst du einer Tabelle einen neuen Datensatz hinzu. Die Werte stehen in derselben Reihenfolge wie die Attribute im Datenbankschema:
INSERT INTO wahrzeichen VALUES (20, 'Schlossberghöhlen', 'Homburg', 'Natur', 'HOM')
Merke
INSERT INTO tabelle VALUES (wert1, wert2, …)fügt einen Datensatz ein.- Texte stehen in Hochkommata (
'Homburg'), Zahlen ohne (20), Kommazahlen mit Punkt (8.50), ein Datum als Text in der Form'JJJJ-MM-TT'. - Mehrere Datensätze auf einmal:
VALUES (…), (…)
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Manchmal kennt man noch nicht alle Werte. Dann gibt man hinter dem Tabellennamen an, welche Attribute man füllt. Die übrigen bleiben leer (NULL):
INSERT INTO wahrzeichen (WID, Name) VALUES (21, 'Halde Duhamel')
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
2 Tabellen anlegen – CREATE TABLE
Die Tabelle landkreis wurde mit diesem Befehl angelegt:
CREATE TABLE landkreis ( Kennzeichen VARCHAR(3) PRIMARY KEY, Name VARCHAR(40), Kreisstadt VARCHAR(30) )
Für jedes Attribut gibst du einen Namen und einen Datentyp an:
| Datentyp | Bedeutung | Beispiel |
|---|---|---|
INTEGER | ganze Zahl | 180000 |
DECIMAL(5,2) | Kommazahl mit 5 Stellen, davon 2 nach dem Komma | 8.50 |
VARCHAR(30) | Text mit höchstens 30 Zeichen | 'Homburg' |
DATE | Datum | '2027-05-12' |
Merke
CREATE TABLE tabelle (Attribut1 Datentyp, Attribut2 Datentyp, …) legt eine neue, leere Tabelle an. PRIMARY KEY hinter einem Attribut macht es zum Primärschlüssel.
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
3 Gute Tabellen planen
Plane eine Tabelle für die Schülerinnen und Schüler deiner Klasse, z. B. für eine App mit dem Vertretungsplan. Welche Attribute mit welchen Datentypen braucht sie? Was solltest du speichern: das Alter oder das Geburtsdatum? Begründe.
Datenbankschema „Saarland entdecken“ anzeigen
- 🔑 Kennzeichen varchar(3)
- Name varchar(40)
- Kreisstadt varchar(30)
- 🔑 WID integer
- Name varchar(40)
- Ort varchar(30)
- Kategorie varchar(20)
- Kennzeichen varchar(3) → landkreis.Kennzeichen
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Immer wieder parken fremde Autos auf dem Lehrerparkplatz. Das Sekretariat möchte deshalb wissen, welche Autos zu welcher Lehrkraft gehören, und hat die Tabelle der Lehrkräfte ergänzt:
| Kuerzel | Nachname | Autos |
|---|---|---|
| LE | Lenk | SB-GL 12, SB-GL 13 |
| ZU | Zundklein | NK-KZ 404 |
| RE | Retisch | HOM-TR 1, WND-TR 77, SB-TR 3 |
Warum ist diese Tabelle nicht gut gelungen und widerspricht sogar den Regeln einer relationalen Datenbank? Wie könnte man es besser machen?