15.3. Lesson: Daten in das Modell einfügen
Das Modell, das wir erstellt haben, soll jetzt mit den vorgesehenen Daten gefüllt werden.
Ziel dieser Lektion: Das Erlernen des Einfügens neuer Daten in ein Datenbankmodell.
15.3.1. Die Einfügeanweisung
Wie fügen Sie Daten zu einer Tabelle hinzu? Das SQL Kommando INSERT stellt die erforderliche Funktionalität dazu bereit:
insert into streets (name) values ('High street');
Einige Sachen müssen beachtet werden:
Nach dem Tabellennamen (streets) werden die zu füllenden Spaltennamen aufgeführt (in diesem Fall nur die Spalte name).
Fügen Sie nach dem Schlüsselwort values die Liste der Feldwerte ein.
Zeichenketten müssen von einfachen Anführungszeichen umgeben werden.
Beachten Sie, dass wir keinen Wert für die Spalte id einfügen, weil die Spalte automatisch mit einer Sequenz gefüllt wird.
Wenn man die id manuell verändert, riskiert man schwerwiegende Probleme bezüglich der Integrität der Datenbank.
Wir sollten nach erfolgreichem Abschluss die Meldung INSERT 0 1 sehen.
Wir können das Ergebnis unserer Einfügeaktion durch Auswahl aller in der Tabelle enthaltenden Daten sehen:
select * from streets;
Ergebnis:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
Try Yourself
Nutzen Sie das Kommando INSERT, um neue Straßen zur Tabelle streets hinzuzufügen.
Answer
The SQL command you should use looks like this (you can replace the street name with a name of your choice):
insert into streets (name) values ('Low Road');
15.3.2. Aneinanderreihen von Einfügeaktionen aufgrund von Beschränkungen
15.3.3. Try Yourself
Versuchen ein Objekt Person zu der Tabelle people mit den folgenden Details hinzuzufügen:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
Bemerkung
Denken Sie daran, dass wir die Telefonnummern als Zeichenketten, nicht als Ganzzahlen definiert haben.
In diesem Fall erhalten wir eine Fehlermeldung, wenn wir vorher noch keinen Datensatz für Main Street in der Tabelle streets erstellt haben.
Wir bemerken auch:
Man kann keine Straße unter Nutzung ihres Namens hinzufügen
Man kann vor dem Anlegen des Datensatzes für die Straße in der Tabelle streets keine Straße mit Hilfe der id hinzufügen
Denken Sie daran, dass unsere zwei Tabellen mit Hilfe eines Erst-/Fremdschlüsselpaars verbunden sind. Das bedeutet, dass keine zulässige Person ohne zulässigen dazugehörenden Datensatz für eine Straße erstellt werden kann.
Fügen Sie unter Nutzung dieses Wissens eine neue Person zur Datenbank hinzu.
Answer
Here is the correct SQL statement:
insert into streets (name) values('Main Road');
insert into people (name,house_no, street_id, phone_no)
values ('Joe Smith',55,2,'072 882 33 21');
If you look at the streets table again (using a select statement as before),
you’ll see that the id for the Main Road
entry is 2.
That’s why we could merely enter the number 2
above. Even though we’re
not seeing Main Road
written out fully in the entry above, the
database will be able to associate that with the street_id value of 2.
If you have already added a new street object, you might find that the
new Main Road
has an id of 3 not 2.
15.3.4. Auswahl von Daten
Wir haben die Syntax zur Selektion von Datensätzen schon demonstriert. Lassen Sie uns einige weitere Beispiele ansehen:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
In späteren Abschnitten gehen wir detaillierter darauf ein, wie man Daten auswählt und filtert.
15.3.5. Aktualisierung von Daten
Was ist, wenn man bereits existierende Daten verändern möchte? Z.B. einen Straßennamen der sich geändert hat:
update streets set name='New Main Road' where name='Main Road';
Seien Sie mit solchen Aktualisierungsanweisungen sehr vorsichtig - wenn mehr als ein Datensatz Ihrer WHERE Bedingung entspricht, werden alle aktualisiert!
Eine bessere Lösung ist die Verwendung des Primärschlüssels der Tabelle um den zu ändernden Datensatz anzusprechen:
update streets set name='New Main Road' where id=2;
Die Ausgabe sollte lauten UPDATE 1.
Bemerkung
Die Kriterien der WHERE Anweisung unterscheidet zwischen Groß- und Kleinschreibung Main Road ist nicht dasselbe wie Main road
15.3.6. Löschen von Daten
Nutzen Sie das DELETE Kommando, um ein Objekt aus einer Tabelle zu löschen:
delete from people where name = 'Joe Smith';
Sehen wir uns nun die Tabelle der Personen an:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Try Yourself
Nutzen Sie das Gelernte, um einige neue Freunde in Ihre Datenbank einzutragen:
name | house_no | street_id | phone_no
-----------------+----------+-----------+--------------
Joe Bloggs | 3 | 2 | 072 887 23 45
Jane Smith | 55 | 3 | 072 837 33 35
Roger Jones | 33 | 1 | 072 832 31 38
Sally Norman | 83 | 1 | 072 932 31 32
15.3.8. In Conclusion
Sie wissen nun, wie man neue Daten zu vorhandenen schon erstellten Modellen hinzufügt. Denken Sie daran, dass wenn Sie neue Datenarten hinzufügen, sie unter Umständen auch neue Datenmodelle erstellen müssen.
15.3.9. What’s Next?
Nachdem wir nun einige Daten hinzugefügt haben, werden wir die Nutzung von Abfragen zum Zugriff auf die Daten lernen.