5 Best Practices per la scrittura di join SQL

Ecco le 5 Best Practices per la scrittura di join SQL
Schermata 2022-03-02 alle 16.31.59

SQL (Structured Query Language) ci consente di selezionare, aggiornare, creare o eliminare record su una singola tabella in un database relazionale. Ma cosa accadrebbe se avessimo due tabelle con informazioni diverse sulla stessa persona e volessimo utilizzare tutte quelle informazioni per visualizzarle su un’unica tabella? Avremmo bisogno di usare una clausola JOIN in quel caso. La clausola SQL JOIN ci consente di prendere record da due o più tabelle contemporaneamente e recuperare i dati in base a un campo comune. Aiuta anche a mantenere il nostro database normalizzato.

I professionisti del database utilizzano le normalizzazioni per migliorare l’integrità dei dati e per mantenere bassa la ridondanza dei dati in modo da poter ridurre il numero di anomalie dei dati nell’applicazione durante l’eliminazione o l’aggiornamento di un record.

Secondo ANSI standard SQL, esistono cinque diversi tipi di SQL JOIN:

  1. INNER JOIN: questo join restituisce record che hanno valori comuni in entrambe le tabelle.
  2. LEFT (OUTER) JOIN: restituisce tutti i record della tabella di sinistra combinati con i record corrispondenti della tabella di destra. Nel caso in cui non ci siano record corrispondenti nella tabella di destra, restituirà valori NULL.
  3. RIGHT (OUTER) JOIN: restituisce tutti i record dalla tabella di destra e i record corrispondenti dalla tabella di sinistra. Nel caso in cui non ci siano record corrispondenti nella tabella di sinistra, restituirà valori NULL.
  4. FULL (OUTER) JOIN: restituisce i record combinati di entrambi i join esterni sinistro e destro e restituisce tutte le righe da entrambe le tabelle. Per i record per i quali non c’è corrispondenza, il tavolo finale conterrà valori NULL.
  5. CROSS JOIN: un cross join restituisce un prodotto cartesiano di righe di entrambe le tabelle, unendo ogni riga della prima tabella con ogni riga della seconda tabella.

Ora sappiamo che il metodo più comune per unire e recuperare dati da più tabelle è l’utilizzo dell’operatore JOIN. Ma padroneggiare il JOIN per scrivere la query perfetta richiede molto duro lavoro e pratica per risolvere le sfide del mondo reale e anche avere una solida base tecnica. Tuttavia, ricordare alcuni suggerimenti importanti potrebbe aiutarti a scrivere query SQL Join migliori. Eccone alcuni:

1) Utilizzo dei table alias

Un alias è un nome personalizzato temporaneo o una scorciatoia per il nome di una tabella o di una colonna. Gli alias sono molto utili, in quanto migliorano la leggibilità e la manutenibilità della query riducendo la quantità di digitazione richiesta. Esistono due tipi di alias, alias di tabella e alias di colonna, la cui sintassi è fornita di seguito:

Sintassi per un alias di colonna:

SELECT nome_colonna AS nome_alias

FROM nome_tabella

WHERE condizione

Sintassi per un alias di tabella:

SELECT nomi_colonna

FROM nome_tabella alias_name

WHERE condizione

L’uso di alias di tabella/colonna con join nelle query è sempre una buona pratica perché con le query che diventano complesse, anche i nomi possono diventare lunghi e complessi. Quindi, per creare query ordinate, l’utilizzo di alias è sempre una buona pratica.

2) Conoscere i diversi tipi di join prima di usarli

È sempre buona norma conoscere i diversi JOINS prima di iniziare a scrivere una query. Gli output previsti da una particolare query dovrebbero essere chiari prima di applicare un JOIN. Ad esempio, la clausola INNER JOIN restituirà solo i record corrispondenti che sono gli stessi in entrambe le tabelle, mentre il LEFT JOIN restituirà tutti i record della tabella di sinistra e solo i record corrispondenti della rispettiva tabella di destra. Il RIGHT JOIN, d’altra parte, restituirà tutti i record dalla tabella di destra e i record corrispondenti dalla rispettiva tabella di sinistra. Nel caso in cui non ci siano record corrispondenti, restituirà valori NULL. Se ricordare i JOINS e la sintassi sembra un compito difficile, è sempre bene tenere a portata di mano un cheat sheet SQL mentre si scrivono query complesse.

3) Progettazione accurata della condizione JOIN

Prima di scrivere una query SQL, è sempre importante sapere quale output dovrebbe fornire la query. Una colonna comune potrebbe non identificare in modo univoco i record, in quale scenario potrebbe essere necessario utilizzare due o più condizioni JOIN oppure potrebbe essere necessario applicare join non equi con operatori condizionali. Pertanto, è necessario definire una corretta condizione di JOIN prima di aspettarsi e ottenere l’output corretto dalle tabelle unite.

4) Utilizzo della sintassi JOIN esplicita

Ora che sai, la clausola JOIN viene utilizzata per combinare o unire dati da due o più tabelle; si consiglia vivamente di utilizzare JOINS espliciti utilizzando la clausola JOIN e ON.

La sintassi esplicita di JOIN ha diversi vantaggi. È possibile riscontrare molte query SQL in cui le tabelle vengono unite utilizzando JOINS impliciti elencando i nomi delle tabelle nella clausola FROM e utilizzando la clausola WHERE per specificare la condizione di join. Questo crea molta confusione. Quindi, per vedere la differenza tra le condizioni JOIN e le condizioni di filtraggio, viene utilizzato JOIN esplicito. Quando il tipo di join è dichiarato in modo esplicito in una query, diventa più facile capire e aspettarsi quale output potrebbe portare la query. Quindi, è meglio usare “JOIN” per specificare le tabelle da unire e “ON” per specificare la condizione di join.

5) Conoscere i multiple JOIN

Dopo aver acquisito familiarità con la scrittura di query JOIN, è ora di conoscere più join. In SQL, oltre a unire due tabelle puoi anche unire tre o più tabelle che vengono eseguite con l’aiuto di più JOIN. Ti permette di unire più di due tavoli.

Questa è un’operazione abbastanza comune ma ci sono alcune regole di cui devi fare attenzione prima di scrivere le query: ogni JOIN ha le sue condizioni scritte dopo la clausola “ON”; e per aumentare la leggibilità della query, inserire ogni JOIN su una nuova riga è un buon approccio. Tuttavia, dovresti utilizzare gli ordini logici delle tabelle mentre utilizzi più JOINS in modo che soddisfi i tuoi requisiti di dati e riduca al minimo il flusso di dati tra i vari operatori del piano di esecuzione.

Post Correlati