Benvenuti alla lezione nove ‘Manipolare i dati’ del SQL Tutorial, che fa parte del corso di formazione SQL. In questa lezione parleremo delle istruzioni INSERT, UPDATE e DELETE di SQL.
Obiettivi
Alla fine di questa lezione, sarai in grado di:
-
spiegare l’istruzione INSERT e come può essere usata
-
Descrivere la query UPDATE con esempi
-
Spiegare l’istruzione DELETE con esempi
L’istruzione INSERT
L’istruzione INSERT è una delle tre istruzioni appartenenti al cosiddettochiamato “linguaggio di manipolazione dei dati” parte dell’SQL – cioè INSERT, UPDATE e DELETE.
Tutti e tre gli statement permettono di cambiare i dati nel database, non cambiando la struttura ma cambiando il contenuto. Sono diversi dall’istruzione SELECT, che ti permette solo di leggere i dati dal database.
Quindi l’istruzione INSERT ti permette di aggiungere nuovi record alla tua tabella del database. Generalmente, è usata per aggiungere record alla fine della tabella. Una cosa che è importante ogni volta che fai INSERT è che i tuoi dati devono soddisfare tutte le regole del tuo database.
Considera l’immagine mostrata qui sotto:
Primo, guardiamo la tabella Person come esempio. Qui abbiamo la chiave primaria. Le chiavi primarie in quel database sono precedentemente impostate su incrementi automatici nel nostro SQL.
Non inseriamo mai la chiave primaria da soli, la lasciamo al database. Poi abbiamo un firstname e un lastname, che hanno il flag NOT NULL. Il diamante solido indica che questi campi sono obbligatori, non possiamo saltarli.
L’ultimo è il timestamp, che è NOT NULL, ma allo stesso tempo, il valore predefinito è il timestamp corrente. Quindi di nuovo, questo imposterà automaticamente un timestamp corrente se non mettiamo nessuna data lì.
Se abbiamo bisogno di inserire record in un’altra tabella, dobbiamo assicurarci che i dati esistano effettivamente. Quindi in questo tipo di tabelle end to end o in qualsiasi tipo di situazione di chiave esterna, dovete sempre assicurarvi che i dati che inserite lì rappresentino effettivamente valori validi nelle tabelle di riferimento.
Utilizziamo ancora la nostra tabella Persona come punto di partenza.
La tabella Persona all’inizio è come mostrato.
Considera un esempio mostrato qui sotto:
select * from person
insert into person
values (7, ‘Martin’, ‘Holzke’, ‘1980-05-05’, ‘xxx’, now());
Si può inserire solo in una tabella alla volta. Si possono unire i dati usando la funzione SELECT, ma tradizionalmente parlando, si può fare la manipolazione dei dati su una tabella alla volta.
Quello che abbiamo considerato nell’esempio precedente è l'”inserimento implicito”. Significa che non stiamo menzionando le colonne che vogliamo popolare, dobbiamo metterle tutte esattamente nell’ordine in cui esiste la tabella.
L’insert farà corrispondere automaticamente i nuovi valori alle colonne della tabella.
Nota: Per l’istruzione insert, update e delete, dobbiamo tenere a mente che i database non hanno un pulsante undo. Quindi, una volta che avete inviato qualsiasi valore, esso viene memorizzato nel database.
Siccome stiamo imparando l’inserimento implicito, dobbiamo specificare i valori per ogni colonna. Quindi vedere la tabella del database nella stessa schermata aiuta immensamente.
Ora, se eseguiamo il codice di cui sopra, potete vedere che la tabella è stata aggiornata e il record inserito può essere visto nella posizione 7.
Inoltre, l’istruzione insert non restituisce nulla, in contrasto con l’istruzione SELECT. Questo è il motivo per cui lo schermo si svuota in seguito.
Prossimo. vediamo la versione esplicita, che è altamente raccomandata da usare.
select * from person
insert into person (firstname, lastname, managerid, dob)
values (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’);
Nell’esempio precedente, abbiamo menzionato solo 4 valori della tabella. Il resto viene popolato di default. Quando eseguiamo la query, vediamo che i nuovi valori sono stati aggiunti alla tabella.
Il valore della chiave primaria è 9 e non 8 perché quel valore è già stato usato ad un certo punto nel database.
Questo è vantaggioso per la sicurezza poiché la chiave primaria non può essere riutilizzata e gli errori possono essere identificati.
Vediamo anche che il valore della colonna ‘created’ è impostato con il timestamp corrente quando non lo menzioniamo esplicitamente.
Poi, per fare inserzioni multiple, possiamo eseguire la query di cui sopra, ancora e ancora, usando valori diversi.
Le inserzioni multiple possono essere eseguite usando una sola istruzione insert. Aggiungiamo il nuovo set di valori separati da virgola.
select * from person
insert into person (firstname, lastname, managerid, dob)
values (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’),
(‘Fred’, ‘Flintstone’, 5, ‘1987-06-02’);
L’immagine seguente mostra la tabella aggiornata quando vengono fatti inserimenti multipli.
In seguito, vogliamo fare un inserimento selezionando i dati dalla stessa tabella, in modo da poter copiare i dati, il che si rivela abbastanza utile per popolare un database. Per esempio, nella migrazione dei dati, in realtà volete copiare i dati all’interno di un database o tra diversi database/tabelle.
Il seguente codice mostra come copiare i dati.
select * from person
insert into person (firstname, lastname, managerid, dob)
select concat(‘copy of’, firstname), lastname, managerid, dob
da person
dove id>=10
L’immagine seguente mostra i valori della tabella quando eseguiamo solo la frase select.
Ora, eseguiamo la query insieme all’istruzione insert. Questo può essere fatto semplicemente selezionando le dichiarazioni che vogliamo eseguire ed eseguendo quella query.
L’immagine seguente mostra come la tabella è stata modificata dopo l’esecuzione della query di cui sopra.
Quindi, abbiamo visto come copiare i valori usando la dichiarazione insert può popolare il database. Generalmente popoliamo il database quando eseguiamo le query in un ambiente di prova.
SQL – Update Query
La query o dichiarazione di aggiornamento è la seconda delle tre dichiarazioni del linguaggio di manipolazione dei dati, che sono INSERT, UPDATE e DELETE. Quindi la query UPDATE ti permette di modificare i record esistenti in una tabella.
Siccome stiamo parlando dell’SQL come di un linguaggio basato sugli insiemi, la query UPDATE lavorerà su un insieme di record e non su un record (a seconda di come esegui l’UPDATE).
Come facciamo i nostri aggiornamenti?
Considera la query data qui sotto:
select * from person
where id = 10
update person
set dob = ‘1990-01-01’
where id = 10
Nella query sopra, selezioniamo prima i record dalla tabella Person il cui id è uguale a 10. L’immagine seguente mostra il valore che viene selezionato.
Poi usiamo la query Update per impostare il DOB per il record il cui id è 10. Se non usiamo l’istruzione where, aggiornerà ogni singolo record della nostra tabella al valore impostato.
Eseguendo la query di cui sopra, vediamo che il valore dob per la decima voce della tabella è stato aggiornato.
Ora, per aggiornare più cose in un record, possiamo usare la lista separata da virgole.
Considera la query mostrata qui sotto:
select * from person
where id = 10
update person
set dob = ‘1990-01-01’, firstname = ‘Mike’
where id = 10
Eseguendo la query precedente, otteniamo la tabella aggiornata come mostrato:
Poi, se vogliamo cambiare più di un record, possiamo fare quanto segue:
select * from person
where firstname = ‘Martin’
update person
set firstname = ‘Mike’
where firstname = ‘Martin’
Nella query precedente, abbiamo cambiato il valore firstname da Martin a Mike, ovunque esistesse precedentemente nella tabella Person.
Consideriamo un altro esempio:
La tabella Persona non aveva spazio per fare un po’ più di roba numerica, quindi consideriamo la tabella Progetto.
Qui, proviamo a prendere uno scenario in cui una gestione sull’intera tabella potrebbe essere desiderabile.
La tabella progetto ha tre record al momento, come mostrato.
Ogni record ha un valore di budget. Diciamo che vogliamo aggiornarli tutti di circa il 20%. Possiamo farlo usando la query mostrata qui sotto:
select * from project
update project
set budget = budget*1.2
Quindi la query di cui sopra ora aumenterebbe tutti i record nella tabella dei progetti del venti per cento.
I record aggiornati sono come mostrato qui sotto:
Quindi, molte operazioni matematiche possono essere eseguite sui valori come nell’esempio mostrato sopra.
Una cosa da ricordare quando si usa l’istruzione UPDATE è di usare la clausola ‘where’ ovunque sia applicabile. Altrimenti, aggiornerà i valori di tutte le voci della tabella.
SQL DELETE Statement
Studiamo ora l’istruzione DELETE, che è l’ultima delle tre istruzioni del linguaggio di manipolazione dei dati. L’istruzione DELETE ha la capacità di cancellare uno o più record per intero. Non stiamo parlando di cancellare il contenuto delle singole colonne perché non possiamo farlo.
Se volete farlo, dovete usare l’istruzione UPDATE per cambiare il contenuto delle singole colonne. Quindi DELETE è la cancellazione di un record completo o di più record completi.
Come per l’istruzione INSERT e UPDATE, una volta che cancelli una serie di record, sono andati e non c’è modo di recuperarli.
Dobbiamo anche assicurarci che quando cancelliamo un record dalla tabella, quella voce (o il suo valore) non sia usata da un’altra tabella.
La tabella person ha le seguenti voci iniziali.
L’istruzione DELETE può essere usata come mostrato nella seguente query:
select * from person
where id = 10
delete from person
where id = 10
Nella query mostrata sopra, abbiamo cancellato il record il cui valore id era 10.
Nota: Ricordatevi di usare la clausola ‘where’ con l’istruzione DELETE. Altrimenti, l’istruzione svuoterà rapidamente la vostra tabella delle persone senza la clausola ‘where’
Quando eseguiamo la query di cui sopra, troviamo che la voce con valore id 10 è stata cancellata e la tabella aggiornata è come mostrato. Tutto il resto rimane, tranne quello con chiave primaria dieci.
Ci sono situazioni in cui vogliamo sbarazzarci di un intero blocco. Per esempio, vogliamo eliminare tutte le voci di copia dalla tabella delle persone come mostrato.
La query per eliminare tutti i record di copia dalla tabella persona è mostrata qui sotto:
select * from person
where firstname like ‘copy%’
delete from person
where firstname like ‘copy%’
Nella query precedente, ‘copy%’ indica le dichiarazioni che iniziano con copy e continuano con qualsiasi parola ulteriore.
Eseguendo la query di cui sopra, possiamo vedere che tutti i record che iniziavano con ‘Copy’ sono stati cancellati dalla tabella person.
Nota: Si raccomanda sempre di usare l’istruzione DELETE per una tabella alla volta. Non è consigliabile usare l’istruzione nel caso di tabelle congiunte.
Conclusione
Con questo, siamo giunti alla fine di questa lezione sulla ‘Manipolazione dei dati in SQL’. La prossima lezione si concentra sul Controllo delle Transazioni.
{{lectureCoursePreviewTitle}} View Transcript Watch Video
Per saperne di più, segui il Corso
SQL Training Certification Training
Vai al Corso
Per saperne di più, segui il corso
Formazione di certificazione SQL Vai al corso