15.3. Lesson: Adăugarea de date în Model
Modelele pe care le-am creat vor trebui să fie populate de acum cu datele pe care trebuie să le conțină.
Scopul acestei lecții: De a afla cum se pot insera noi date în baza de date a modelelor.
15.3.1. Inserarea instrucțiunilor
Cum adăugați date într-o tabelă? Instrucțiunea SQL INSERT oferă funcționalitatea necesară:
insert into streets (name) values ('High street');
Mai multe lucruri de reținut:
După numele tabelului (streets), veți lista numele coloanelor pe care le veți popula (în acest caz, doar coloana name).
După cuvântul cheie values, plasați lista valorilor de câmp.
Șirurile de caractere ar trebui să fie citate cu ajutorul ghilimelelor simple.
Rețineți că nu vom introduce o valoare pentru coloana id; acest lucru se datorează faptului că este o secvență, ea fiind generată în mod automat.
Dacă setați manual id-ul, pot apărea probleme grave cu integritatea bazei de date.
Ar trebui să vedeți INSERT 0 1 dacă a avut succes.
Puteți vedea rezultatul acțiunii dvs. de inserare selectând toate datele din tabelă:
select * from streets;
Rezultat:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
Try Yourself
Folosiți comanda INSERT pentru a adăuga o nouă stradă în tabelul streets.
Răspuns
Comanda SQL pe care ar trebui să o utilizați arată astfel (puteți înlocui numele străzii cu un nume la alegere):
insert into streets (name) values ('Low Road');
15.3.2. Secvențierea Adăugării Datelor, Conform Constrângerilor
15.3.3. Try Yourself
Încercați să adăugați un obiect persoană în tabela people cu următoarele detalii:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
Notă
Reamintim că, în acest exemplu, am definit numerele de telefon ca șiruri de caractere, și nu ca numere întregi.
În acest moment, ar trebui să întâmpinați un raport de eroare, dacă încercați să faceți acest lucru fără a crea mai întâi o înregistrare pentru Main Street din tabela streets.
Ar trebui să rețneți, de asemenea, că:
Nu puteți adăuga strada folosind-ui numele
Nu puteți adăuga o stradă folosind un id, fără a crea mai întâi o înregistrare a străzii în tabela străzilor
Amintiți-vă că cele două tabele sunt legate printr-o pereche de chei: primară/externă. Aceasta înseamnă că nici o persoană validă nu pot fi creată fără a exista, de asemenea, o înregistrare de stradă validă, corespunzătoare.
Folosind cunoștințele de mai sus, adăugați noua persoană în baza de date.
Răspuns
Iată instrucțiunea SQL corectă:
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');
Dacă vă uitați din nou la tabela străzilor (folosind o instrucțiune select ca cea de dinainte), veți vedea că id-ul intrării Drum principal
este 2.
De aceea am putea introduce pur și simplu numărul 2
mai sus. Chiar dacă nu vedem Main Road
scris complet în intrarea de mai sus, baza de date va putea să-l asocieze cu valoarea street_id de 2.
Dacă ați adăugat deja un nou obiect stradal, s-ar putea să descoperiți că noul Drum Principal
are un id de 3 nu de 2.
15.3.4. Selectarea datelor
V-am arătat deja sintaxa pentru selectarea înregistrărilor. Să ne uităm la câteva exemple suplimentare:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
În sesiunile ulterioare vom intra în mai multe detalii cu privire la modul de selectare și de filtrare a datelor.
15.3.5. Actualizarea datelor
Ce se întâmplă dacă doriți să faceți o modificare a unor date existente? De exemplu, un nume de stradă este schimbat:
update streets set name='New Main Road' where name='Main Road';
Fiți foarte atenți la folosirea acestor declarații de actualizare - în cazul în care mai mult de o înregistrare se potrivește clauzei WHERE, toate vor fi actualizate!
O soluție mai bună este de a folosi cheia primară a tabelului, pentru a referenția înregistrarea care trebuie schimbată:
update streets set name='New Main Road' where id=2;
Ar trebui să returneze UPDATE 1.
Notă
Criteriile instrucțiunii WHERE sunt sensibile la majuscule, astfel Main Road nu este similar cu Main road
15.3.6. Ştergere Dată
Pentru a șterge un obiect dintr-o tabelă, utilizați comanda DELETE:
delete from people where name = 'Joe Smith';
Să ne uităm acum la tabela noastră de personal:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Try Yourself
Folosiți abilitățile pe care le-ați învățat pentru a adăuga câțiva prieteni noi în baza de date:
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
Acum știți cum să adăugați date noi modelelor existente, pe care le-ați creat anterior. Amintiți-vă că, dacă doriți să adăugați noi tipuri de date, poate doriți să modificați și/sau să creați noi modele, care să conțină aceste date.
15.3.9. What’s Next?
Acum, că ați adăugat câteva date, veți învăța cum să folosiți interogările, pentru a accesa aceste date în diferite moduri.