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.
You can see the result of your insert action by selecting all the data in the table:
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.
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. 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.
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. Selectarea datelor
We have already shown you the syntax for selecting records. Let’s look at a few more examples:
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
What if you want to make a change to some existing data? For example, a street name is changed:
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ă
In order to delete an object from a table, use the DELETE command:
delete from people where name = 'Joe Smith';
Let’s look at our people table now:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Try Yourself
Use the skills you have learned to add some new friends to your database:
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.