Corso
Quando lavori con i database, l'efficienza è fondamentale, e sapere come aggiornare più colonne in una volta sola in SQL è un'ottima competenza. Come data analyst, capire come aggiornare più colonne in SQL può migliorare la tua produttività e prevenire errori. In questo articolo vedremo come aggiornare più colonne usando SQL, coprendo sintassi, tecniche ed esempi per illustrare le best practice.
Imparerai ad aggiornare più colonne con l'istruzione UPDATE e a gestire join, condizioni e considerazioni sulle prestazioni per amministrare i dati in modo efficace. As we get started, I recommend taking DataCamp’s Introduction to SQL and Learn SQL courses to learn the fundamentals of SQL in querying databases.
Nozioni di base sull'aggiornamento di più colonne in SQL
L'istruzione UPDATE in SQL viene utilizzata per modificare i dati all'interno di un database. La sua funzione principale è alterare i record esistenti aggiornando i valori in una o più colonne di una tabella. UPDATE è efficiente perché consente di aggiornare più colonne con un'unica istruzione. Di seguito è riportata la sintassi dell'istruzione UPDATE.
-- Update specific columns in a table
UPDATE table_name
SET column1 = value1,
column2 = value2,
column3 = value3
WHERE condition;
-
table_name: La tabella in cui vuoi aggiornare i dati. -
column1,column2,column3: Le colonne da aggiornare. -
value1,value2,value3: I nuovi valori per le rispettive colonne. -
condition: I criteri che determinano quali righe vengono aggiornate.
Usare l'istruzione UPDATE per aggiornare più colonne è efficiente perché il motore del database elabora l'operazione più rapidamente, consumando meno risorse. Il metodo è anche semplice perché il codice è facile da comprendere e mantenere.
Esempi di aggiornamento di più colonne in SQL
Puoi aggiornare più colonne in SQL per un singolo record o per più righe nella tabella. Vediamo entrambi i casi:
Aggiornamento di una sola riga
Si usa l'aggiornamento su singola riga quando si modificano i valori di più colonne per uno specifico record. Questo metodo è lineare quando bisogna cambiare i valori di una determinata voce della tabella.
La query seguente aggiorna le colonne salary e department nella tabella employees per una riga in cui employee_id = 101.
-- Updating salary and department columns
UPDATE employees
SET salary = 75000,
department = 'HR'
-- Condition to target the specific row
WHERE employee_id = 101;
Aggiornamento di più righe
Gli aggiornamenti in batch sono necessari quando devi aggiornare più colonne su diversi record. Gli aggiornamenti su più righe avvengono quando si modificano i record in base a condizioni specifiche che interessano più di una riga.
Supponiamo tu voglia aggiornare lo salary e la position di più dipendenti promossi nel reparto Sales. Potresti usare la seguente query:
-- Update multiple columns
UPDATE employees
-- Increase the salary by $5000 for each
SET salary = salary + 5000,
position = 'Senior Sales Associate'
WHERE department = 'Sales'
AND years_of_experience > 5;Tecniche avanzate per aggiornare più colonne in SQL
In alcuni casi, aggiornare più colonne in SQL richiede tecniche più avanzate, soprattutto quando si gestiscono valori null, logica condizionale o aggiornamenti basati su dati provenienti da altre tabelle.
Quando il valore di una colonna dipende da un'altra colonna
Potremmo voler aggiornare una colonna in base a un'altra colonna della stessa tabella. Qui useremo della logica di base con espressioni per aggiornare la colonna.
Ad esempio, la seguente query calcola la colonna bonus come percentuale della colonna salary per determinati dipendenti.
-- Update bonus as 10% of the salary
UPDATE employees
SET bonus = salary * 0.10
-- Only apply the update to Sales department
WHERE department = 'Sales';
Aggiornare più colonne usando COALESCE per gestire i NULL
La funzione COALESCE può gestire efficacemente i valori null durante l'aggiornamento di più colonne. Questo assicura che i valori null vengano sostituiti con predefiniti appropriati, mantenendo l'integrità dei dati.
La query seguente aggiorna le colonne salary e department con il valore fornito. Se la colonna contiene NULL, viene sostituito con un valore predefinito.
UPDATE employees
-- If salary is NULL, set it to 50,000
SET salary = COALESCE(salary, 50000),
-- If department is NULL, set it to 'IT'
department = COALESCE(department, 'IT')
-- Apply update to specific employee IDs
WHERE employee_id IN (102, 103, 104);
Aggiornare più colonne e aggiornamenti condizionali con istruzioni CASE
L'istruzione CASE può essere utilizzata per aggiornare condizionalmente le colonne in base a criteri specifici. Questo consente un controllo più granulare su quali valori vengono aggiornati e in quali circostanze, aggiungendo flessibilità agli aggiornamenti SQL.
Per esempio, potresti voler aggiornare il bonus e la position dei dipendenti in base al loro performance_rating, come ti mostro qui:
-- Update bonus and position department
UPDATE employees
SET bonus = CASE
WHEN performance_rating = 'A' THEN salary * 0.15
WHEN performance_rating = 'B' THEN salary * 0.10
ELSE salary * 0.05
END,
position = CASE
WHEN performance_rating = 'A' THEN 'Team Lead'
WHEN performance_rating = 'B' THEN 'Senior'
ELSE position
END
-- Apply update only to employees in the Sales department
WHERE department = 'Sales';
Aggiornare più colonne facendo il join tra tabelle
Puoi anche usare JOIN all'interno dell'istruzione UPDATE per aggiornare più colonne in base a dati provenienti da una tabella correlata.
Supponi di avere due tabelle, employees e departments. Vuoi aggiornare la tabella employees con i nomi dei reparti e le sedi dalla tabella departments.
-- Update department name and location from departments table
UPDATE employees e
JOIN departments d ON e.department_id = d.department_id
SET e.department_name = d.department_name,
e.location = d.location
WHERE e.department_id IN (1, 2, 3);
Ti consiglio di provare il nostro skill track SQL Fundamentals e il nostro corso Database Design per saperne di più sulla progettazione dei database e sui join tra tabelle. Dai anche un'occhiata al tutorial SQL UPDATE with JOIN: How it Works per imparare gli aggiornamenti tra tabelle.
Ottimizzazione delle prestazioni e gestione delle transazioni
L'ottimizzazione delle prestazioni è importante quando si gestiscono aggiornamenti SQL per più colonne, soprattutto con dataset di grandi dimensioni. Considera le seguenti best practice per garantire la coerenza dei dati e l'ottimizzazione del database.
- Efficienza e atomicità: aggiornare più colonne in un'unica query migliora le prestazioni del database riducendo il numero di operazioni che il motore deve elaborare. Questo aumenta l'efficienza e anche l'atomicità, ovvero tutti gli aggiornamenti riescono insieme oppure non viene applicato nulla, preservando la coerenza dei dati.
- Uso delle transazioni per la sicurezza: le transazioni ti permettono di proteggere i dati effettuando il rollback delle modifiche se qualcosa va storto, così gli aggiornamenti parziali non compromettono il database. Le transazioni rendono anche gli aggiornamenti in batch più affidabili in ambienti multi‑utente, riducendo il rischio di conflitti sui dati.
Errori comuni e insidie
Ci sono alcuni errori e insidie comuni che possono portare a problemi quando si gestiscono aggiornamenti su più colonne. Vediamo alcuni esempi e come evitarli.
-
Dimenticare la clausola
WHERE: dimenticare di includere la clausolaWHEREnell'istruzioneUPDATEpuò causare aggiornamenti indesiderati su tutte le righe dei dati. Per evitarlo, assicurati sempre che la clausolaWHEREsia definita correttamente per indirizzare le colonne che intendi aggiornare. -
Incongruenze di tipi di dato: discrepanze tra tipi di dato possono causare errori o portare a un'archiviazione scorretta. Verifica sempre che i tipi di dato dei valori usati nella tua query
UPDATEcorrispondano alle colonne che stai aggiornando.
Se vuoi approfondire i tipi di dato e il filtraggio dei dati usando WHERE, ti consiglio il corso Intermediate SQL di DataCamp.
Conclusione
Capire come aggiornare più colonne in SQL è importante per l'efficienza e l'accuratezza dei database. Spero che dopo questa lettura ti sia chiaro che aggiornare più colonne contemporaneamente è una competenza necessaria e che non conviene cercare scorciatoie, altrimenti potresti causare transazioni parziali o stati incoerenti.
A seconda della direzione che vuoi dare alla tua carriera, ti consiglio di iscriverti al career track di DataCamp Associate Data Analyst in SQL per imparare le competenze a livello industriale necessarie per diventare data analyst, oppure di provare il career track Associate Date Engineer in SQL se vuoi diventare data engineer. In entrambi i casi, cercherei anche di ottenere la SQL Associate Certification, un modo convincente per dimostrare ai datori di lavoro la tua padronanza di SQL nell'affrontare problemi di business.
FAQ su SQL
Posso aggiornare più colonne in SQL in un'unica query?
Sì, puoi aggiornare più colonne in un'unica istruzione UPDATE migliorando efficienza e accuratezza.
Posso aggiornare più colonne con valori diversi per righe diverse?
Sì, puoi aggiornare più righe con valori diversi usando condizioni nella clausola WHERE o applicando logica all'interno dell'istruzione CASE.
Cosa succede se dimentico la clausola WHERE quando aggiorno più colonne?
Se ometti la clausola WHERE, l'aggiornamento verrà applicato a tutte le righe della tabella, con il rischio di modifiche ai dati non intenzionali.
Come gestisco i valori NULL quando aggiorno più colonne?
Puoi usare la funzione COALESCE per gestire i valori NULL fornendo valori predefiniti durante l'aggiornamento.
Posso aggiornare colonne usando dati da un'altra tabella?
Puoi eseguire aggiornamenti facendo il join tra tabelle, così da aggiornare colonne in base a dati correlati provenienti da un'altra tabella.


