15.3. Lesson: Gegevens aan het model toevoegen
De modellen die we hebben gemaakt moeten nu worden gevuld met de gegevens die zij geacht worden te bevatten.
Het doel voor deze les: Leren hoe nieuwe gegevens in de modellen van de database in te voeren.
15.3.1. Argument Insert
Hoe voegt u gegevens toe aan een tabel? Het argument voor SQL INSERT verschaft daar de functionaliteit voor:
insert into streets (name) values ('High street');
Een anatal dingen om te onthouden:
Na de naam van de tabel (streets), vermeldt u de kolomnamen die u wilt vullen (in dit geval alleen de kolom name).
Na het sleutelwoord values, plaats de lijst met veldwaarden.
Strings zouden moeten worden omsloten door enkele aanhalingstekens.
Onthoud dat we geen waarde hebben ingevuld voor de kolom id; dat is omdat het een reeks is en automatisch wordt gegenereerd.
Indien u de id handmatig instelt, kunt u ernstige problemen veroorzaken voor de integriteit van uw database.
U zou INSERT 0 1 moeten zien als het met succes is voltooid.
U kunt het resultaat van uw invoeractie zien door alle gegevens in de tabel te selecteren:
select * from streets;
Resultaat:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
Try Yourself
Gebruik de opdracht INSERT om een nieuwe straat in te voeren in de tabel streets.
Antwoord
De opdracht voor SQL die u zou moeten gebruiken ziet er ongeveer zo uit (u mag de straatnaam vervangen door een naam van uw keuze):
insert into streets (name) values ('Low Road');
15.3.2. Toevoegen van gegevens in overeenstemming met beperkingen
15.3.3. Try Yourself
probeer een object persoon toe te voegen aan de tabel people met de volgende details:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
Notitie
Onthoud dat we in dit voorbeeld telefoonnummers hebben gedefinieerd als strings, niet als integers.
Op dit punt zou u een foutbericht moeten krijgen als u dit probeert te doen zonder eerst een record voor Main Street te hebben gemaakt in de tabel streets.
U zou ook moeten hebben opgemerkt dat:
U kunt de straat niet toevoegen met behulp van zijn naam
U kunt geen straat toevoegen met behulp van een id voor de straat zonder eerst het record voor de straat te hebben gemaakt in de tabel streets
Onthoud dat onze twee tabellen zijn gekoppeld via een paar Primaire/Vreemde sleutel. Dit betekent dat geen geldige persoon kan worden gemaakt zonder dat er ook een geldig overeenkomend record is voor de straat.
Voeg, met behulp van bovenstaande kennis, de nieuwe persoon toe aan de database.
Antwoord
Hier is het juiste argument voor SQL:
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');
Als u opnieuw naar de tabel met straten kijkt (met een argument Select zoals eerder), zult u zien dat de id voor het item Main Road
2 is.
Dat is waarom we hierboven alleen het nummer 2
hoefden in te voeren. Zelfs hoewel we Main Road
niet volledig uitgeschreven zagen staan in het item hierboven, zal de database in staat zijn dat te associëren met de waarde 2 voor street_id.
Als u al een nieuw object street had toegevoegd, zou u kunnen merken dat de nieuwe Main Road
eean id van 3 heeft, niet 2.
15.3.4. Gegevens selecteren
We hebben u de syntaxis voor het selecteren van records al laten zien. Laten we eens naar nog een aantal voorbeelden kijken:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
In latere gedeelten zullen we meer in detail ingaan op hoe gegevens te selecteren en te filteren.
15.3.5. Gegevens bijwerken
Wat als u een wijziging wilt maken in enkele bestaande gegevens? Bijvoorbeeld: een straatnaam is gewijzigd:
update streets set name='New Main Road' where name='Main Road';
Wees zeer voorzichtig met het gebruiken van dergelijke argumenten voor bijwerken - als meer dan één record overeenkomt met uw clausule WHERE, zullen zij allemaal worden bijgewerkt!
Een betere oplossing is om de primaire sleutel van de tabel te gebruiken om te verwijzen naar het record dat moet worden gewijzigd:
update streets set name='New Main Road' where id=2;
Het zou terug moeten geven UPDATE 1.
Notitie
de criteria voor het argument WHERE zijn hoofdlettergevoelig Main Road is niet hetzelfde als Main road
15.3.6. Gegevens verwijderen
Gebruik de opdracht DELETE om een object uit een tabel te verwijderen:
delete from people where name = 'Joe Smith';
Laten we nu eens naar onze tabel people kijken:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Try Yourself
Gebruik de vaardigheden die u heeft geleerd om enkele nieuwe vrienden aan uw database toe te voegen:
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
Nu weet u hoe u nieuwe gegevens moet toevoegen aan de bestaande modellen die u eerder heeft gemaakt. Onthoud dat als u nieuwe soorten gegevens wilt toevoegen, u misschien moet aanpassen en/of nieuwe modellen moet maken om die gegevens te kunnen bevatten.
15.3.9. What’s Next?
Nu dat u enkele gegevens heeft toegevoegd, zult u leren hoe u query’s gebruikt om op verschillende manieren toegang te krijgen tot deze gegevens.