Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
15.3. Lektion: Lägga till data i modellen
De modeller som vi har skapat måste nu fyllas med de data som de är avsedda att innehålla.
Målet för den här lektionen: Att lära sig hur man lägger in nya data i databasmodellerna.
15.3.1. Infoga uttalande
Hur lägger man till data i en tabell? Sql INSERT-uttalandet tillhandahåller funktionaliteten för detta:
insert into streets (name) values ('High street');
Ett par saker att notera:
Efter tabellnamnet (streets) listar du de kolumnnamn som du ska fylla i (i det här fallet endast kolumnen name).
Efter nyckelordet values placeras listan med fältvärden.
Strängar ska citeras med enkla citattecken.
Observera att vi inte har angett något värde för kolumnen id, eftersom den är en sekvens och kommer att genereras automatiskt.
Om du manuellt ställer in id kan du orsaka allvarliga problem med integriteten i din databas.
Du bör se INSERT 0 1 om det lyckas.
Du kan se resultatet av din insert-åtgärd genom att markera alla data i tabellen:
select * from streets;
Resultat:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
Prova själv: ★☆☆☆
Använd kommandot INSERT för att lägga till en ny gata i tabellen streets.
Svar
SQL-kommandot som du ska använda ser ut så här (du kan ersätta gatunamnet med ett namn som du själv väljer):
insert into streets (name) values ('Low Road');
15.3.2. Sekvensering av datatillägg enligt begränsningar
15.3.3. Prova själv: ★★☆
Försök att lägga till ett personobjekt i tabellen people med följande uppgifter:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
Observera
Kom ihåg att vi i det här exemplet definierade telefonnummer som strängar, inte heltal.
Nu bör du få en felrapport om du försöker göra det här utan att först skapa en post för Main Street i tabellen streets.
Det borde du också ha märkt:
Du kan inte lägga till gatan genom att använda dess namn
Du kan inte lägga till en gata med hjälp av en gata id innan du först skapar gatuposten i tabellen streets
Kom ihåg att våra två tabeller är länkade via ett Primary/Foreign Key-par. Detta innebär att ingen giltig person kan skapas utan att det också finns en giltig motsvarande gatupost.
Lägg till den nya personen i databasen med hjälp av ovanstående kunskaper.
Svar
Här är den korrekta SQL-satsen:
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');
Om du tittar på gatutabellen igen (med en select-sats som tidigare) ser du att id för posten Main Road
är 2.
Det är därför vi bara kan ange numret 2
ovan. Även om vi inte ser Main Road
helt utskriven i posten ovan, kommer databasen att kunna associera det med street_id-värdet 2.
Om du redan har lagt till ett nytt gatuobjekt kan du upptäcka att den nya Main Road
har ett id på 3 inte 2.
15.3.4. Välj data
Vi har redan visat dig syntaxen för att välja poster. Låt oss titta på några fler exempel:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
I senare sessioner kommer vi att gå in mer i detalj på hur man väljer och filtrerar data.
15.3.5. Uppdatera data
Vad händer om du vill göra en ändring i befintliga data? Till exempel om ett gatunamn ändras:
update streets set name='New Main Road' where name='Main Road';
Var mycket försiktig när du använder sådana uppdateringssatser - om mer än en post matchar din WHERE-klausul kommer de alla att uppdateras!
En bättre lösning är att använda tabellens primärnyckel för att referera till den post som ska ändras:
update streets set name='New Main Road' where id=2;
Den bör returnera UPDATE 1.
Observera
kriterierna för WHERE är skiftlägeskänsliga Main Road är inte samma sak som Main road
15.3.6. Radera data
För att ta bort ett objekt från en tabell använder du kommandot DELETE:
delete from people where name = 'Joe Smith';
Låt oss titta på vårt folkbord nu:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Prova själv: ★★★★
Använd de färdigheter du har lärt dig för att lägga till några nya vänner i din databas:
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. Sammanfattningsvis
Nu vet du hur du lägger till nya data i de befintliga modeller som du skapade tidigare. Kom ihåg att om du vill lägga till nya typer av data kan du behöva ändra och/eller skapa nya modeller som innehåller dessa data.
15.3.9. Vad händer härnäst?
Nu när du har lagt till några data ska du lära dig hur du använder frågor för att komma åt dessa data på olika sätt.