<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ SQL - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ SQL - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 18 May 2026 19:57:49 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/sql/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Tutorial Outer Join in SQL – Sintassi con Esempio ]]>
                </title>
                <description>
                    <![CDATA[ Cos'è JOIN in SQL? In SQL, JOIN viene usato per unire le righe di due o più tabelle, sulla base di una colonna condivisa tra loro.  Ci sono quattro diversi tipi di JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN, e FULL OUTER JOIN. In questo articolo, parleremo di FULL ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/tutorial-outer-join-in-sql-sintassi-con-esempio/</link>
                <guid isPermaLink="false">65e8742db3a63503f19b5818</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Giuseppe Soriano ]]>
                </dc:creator>
                <pubDate>Mon, 11 Mar 2024 08:39:14 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/03/60651b659618b008528aadab.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/sql-outer-join-tutorial-with-example-syntax/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SQL Outer Join Tutorial – With Example Syntax</a>
      </p><h2 id="cos-join-in-sql"><strong>Cos'è JOIN in SQL?</strong></h2><p>In SQL, JOIN viene usato per unire le righe di due o più tabelle, sulla base di una colonna condivisa tra loro. </p><p>Ci sono quattro diversi tipi di JOIN: <code>INNER JOIN</code>, <code>LEFT JOIN</code>, <code>RIGHT JOIN</code>, e <code>FULL OUTER JOIN</code>. In questo articolo, parleremo di <code>FULL OUTER JOIN</code>.</p><h2 id="cos-un-full-outer-join-in-sql"><strong>Cos'è un Full Outer Join in SQL?</strong></h2><p>Il <code>FULL OUTER JOIN</code> (anche noto come <code>OUTER JOIN</code>) è usato per ritornare tutti i record che presentano valori in una delle due tabelle, quella di sinistra <em>o</em> di destra.</p><p>Ad esempio, un full outer join tra una tabella di clienti e una tabella di ordini potrebbe restituire tutti i clienti, inclusi quella senza alcun ordine, così come tutti gli ordini. I clienti che hanno effettuato ordini sarebbero uniti ai loro ordini utilizzando il loro numero identificativo di cliente (id). </p><p>Un full outer join può restituire molti dati, quindi prima di utilizzarlo, considera se un metodo più conservativo potrebbe soddisfare le tue esigenze. </p><h2 id="dataset-di-esempio"><strong>Dataset di Esempio</strong></h2><p>Immagina di insegnare ad un corso di Letteratura Americana. Hai dieci studenti, e vuoi che ognuno di loro legga un libro diverso da una lista di romanzi classici americani pre-approvati. Alcuni studenti hanno già scelto il libro che leggeranno, mentre altri non lo hanno ancora fatto.</p><p>Hai creato una tabella che elenca gli studenti insieme ai loro numeri di ID studente, e un'altra tabella che elenca i libri con il loro titolo, autore, ISBN, e l'ID dello studente che leggerà il libro, se qualcuno lo ha scelto.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/students-1.png" class="kg-image" alt="Table with names of students and ID numbers" width="600" height="400" loading="lazy"><figcaption>Tabella degli studenti</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/books.png" class="kg-image" alt="Table of books with isbn, id of student who will read it, title, and author" width="600" height="400" loading="lazy"><figcaption>Tabella dei libri</figcaption></figure><h2 id="come-fare-un-outer-join-in-sql"><strong>Come fare un Outer Join in SQL</strong></h2><p>Per fare un outer join con il nostro dataset di esempio, potremmo utilizzare la seguente query:</p><pre><code class="language-sql">SELECT students.name, books.title
FROM students
FULL OUTER JOIN books ON students.student_id=books.student_id;</code></pre><p>In questo esempio, stiamo selezionando i nomi dalla tabella <code>students</code> e i titoli dei libri dalla tabella <code>books</code>. I record sono abbinati utilizzando la colonna <code>student_id</code> in entrambe le tabelle.</p><p>Ed ecco il risultato:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/04/result.png" class="kg-image" alt="student names matched with books they are reading. " width="600" height="400" loading="lazy"><figcaption>Nomi degli studenti abbinati ai libri che stanno leggendo</figcaption></figure><p>Con il full outer join, siamo in grado di vedere tutti gli studenti, inclusi quelli che non hanno ancora scelto un libro. Possiamo anche vedere tutti i libri, inclusi quelli che non sono ancora stati scelti.</p><p>Nel nostro esempio, potresti utilizzare questi dati per vedere chi deve ancora scegliere un libro e quali libri sono ancora disponibili per loro da scegliere.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Utilizzare un full outer join in SQL può aiutarti ad ottenere una visione completa dei dati da più tabelle correlate.</p><p>Ma tieni presente che con un grande set di dati, questa query può restituire una quantità di informazioni difficile da gestire, quindi usa questo potere con saggezza!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tipologie di Join in SQL - Inner Join VS Outer Join con Esempi ]]>
                </title>
                <description>
                    <![CDATA[ In un database relazionale, tutte le informazioni dovrebbero essere presenti una sola volta. Tuttavia, potresti avere delle informazioni correlate tra loro separate in tabelle differenti. E potresti voler mettere insieme queste informazioni correlate per analizzarne i dati, ovvero potresti voler unire tutti i dati (o parte di essi). In questo ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/tipologie-di-join-in-sql-inner-join-vs/</link>
                <guid isPermaLink="false">65d0933bcf5e750492351d0d</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Giuseppe Soriano ]]>
                </dc:creator>
                <pubDate>Tue, 20 Feb 2024 09:29:13 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2024/02/pexels-pixabay-269399-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/sql-join-types-inner-join-vs-outer-join-example/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SQL Join Types – Inner Join VS Outer Join Example</a>
      </p><p>In un database relazionale, tutte le informazioni dovrebbero essere presenti una sola volta. Tuttavia, potresti avere delle informazioni correlate tra loro separate in tabelle differenti.</p><p>E potresti voler mettere insieme queste informazioni correlate per analizzarne i dati, ovvero potresti voler unire tutti i dati (o parte di essi). In questo caso, avrai bisogno di utilizzare l'istruzione <code>JOIN</code> di SQL. Impariamo come funziona.</p><h2 id="cos-join-in-sql"><strong>Cos'è JOIN in SQL?</strong></h2><p>L'operatore JOIN ti permette di combinare informazioni correlate in modi diversi, come spiegato precedentemente in breve. Ci sono diversi tipi di join, divisi in due categorie principali - INNER join e OUTER join. </p><p>La differenza principale tra un INNER JOIN e un OUTER JOIN è che l'inner join manterrà (nella tabella risultante) solo le informazioni derivanti da entrambe le tabelle che sono correlate tra loro. Un Outer Join, invece, manterrà anche le informazioni che non sono correlate all'altra tabella nella tabella risultante.</p><p>Cerchiamo di capire meglio INNER JOIN e OUTER JOIN vedendo come funzionano nel dettaglio.</p><h2 id="come-usare-inner-join-in-sql"><strong>Come usare INNER JOIN in SQL</strong></h2><p>L'inner join manterrà solo le informazioni correlate presenti nelle due tabelle unite. Se immagini le due tabelle come un <a href="https://it.wikipedia.org/wiki/Diagramma_di_Venn">diagramma di Venn</a>, la tabella risultante dall'INNER JOIN corrisponderà alla sezione colorata in verde qui sotto, dove si verifica l'intersezione tra di esse:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/08/i-1.PNG" class="kg-image" alt="Two circles, one labelled table 1 and one labelled table 2, with a section in common. The section in common is colored in green." width="600" height="400" loading="lazy"><figcaption>Inner Join - Rappresentazione mediante diagramma di Venn</figcaption></figure><p>Questa è la sintassi per un inner join:</p><figure class="kg-card kg-code-card"><pre><code class="language-sql">SELECT * FROM tabella1
    JOIN tabella2
    ON relazione;</code></pre><figcaption>sintassi INNER JOIN</figcaption></figure><p>Vedremo di seguito come funziona con un esempio.</p><h2 id="come-usare-outer-join-in-sql"><strong>Come usare OUTER JOIN in SQL</strong></h2><p>Se vuoi mantenere tutti i dati, e non solo dati correlati tra loro, puoi usare un OUTER JOIN.</p><p>Ci sono tre tipi di Outer Join: <code>LEFT JOIN</code>, <code>RIGHT JOIN</code> e <code>FULL JOIN</code>. Le differenze tra loro riguardano quali dati non correlati mantengono - possono provenire dalla prima tabella, dalla seconda, o da entrambe. Le celle senza dati da riempire avranno valore <code>NULL</code>.</p><p>Nota: <code>LEFT JOIN</code> è quello universalmente più implementato in tutte le versioni di SQL. Non vale lo stesso per <code>RIGHT JOIN</code> e <code>FULL JOIN</code>, che non sono implementati in diverse versioni di SQL.</p><p>Vediamo individualmente il funzionamento di ciascuno di essi. Successivamente, vedremo come funzionano tutti con degli esempi riportati di seguito.</p><h3 id="left-outer-join-in-sql"><strong>LEFT OUTER JOIN in SQL</strong></h3><p>Il LEFT OUTER JOIN, o semplicemente Left Join, manterrà i dati non correlati della tabella di sinistra (la prima).</p><p>Puoi immaginarlo come un diagramma di Venn con due insiemi, con la tabella risultante data dalla parte evidenziata in verde che include la parte in comune tra i due insiemi (l'intersezione), e la parte rimanente dell'insieme sulla sinistra.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/08/t1-1.PNG" class="kg-image" alt="Two circles with a superimposed part. The left circle is labelled as table 1, the right circle is tabelled as table 2. The superimposed part and the rest of the table 1 cirlcle are colored in green." width="600" height="400" loading="lazy"><figcaption>Left Outer Join - Rappresentazione mediante diagramma di Venn</figcaption></figure><p>La sintassi è la seguente. Puoi notare che è simile alla sintassi dell'Inner Join, ma con l'aggiunta della parola chiave <code>LEFT</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-sql">SELECT colonne
  FROM tabella1
  LEFT JOIN tabella2
  ON relazione;</code></pre><figcaption>sintassi LEFT OUTER JOIN</figcaption></figure><h3 id="right-outer-join-in-sql"><strong>RIGHT OUTER JOIN in SQL</strong></h3><p>Il RIGHT OUTER JOIN, o semplicemente Right Join, manterrà i dati della seconda tabella che non sono correlati con la prima.</p><p>Lo puoi immaginare come un diagramma di Venn con due insiemi, con la tabella risultante corrispondente alla parte evidenziata in verde che include l'intersezione dei due insiemi e il resto dell'insieme sulla destra.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/08/t2-1.PNG" class="kg-image" alt="Two circles with a superimposed part. The left circle is labelled as table 1, the right circle is tabelled as table 2. The superimposed part and the rest of the table 2 cirlcle are colored in green." width="600" height="400" loading="lazy"><figcaption>Right Outer Join - Rappresentazione mediante diagramma di Venn</figcaption></figure><p>La sintassi è la seguente, l'unica differenza è la parola chiave <code>RIGHT</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-sql">SELECT colonne
  FROM tabella1
  RIGHT JOIN tabella2
  ON relazione;</code></pre><figcaption>sintassi RIGHT OUTER JOIN</figcaption></figure><h3 id="full-outer-join-in-sql"><strong>FULL OUTER JOIN in SQL</strong></h3><p>Puoi pensare al FULL OUTER JOIN come la combinazione di Left Join e Right Join. Manterrà dati da entrambe le tabelle, e i dati mancanti saranno riempiti con <code>NULL</code>.</p><p>Puoi immaginarlo con un diagramma di Venn con due insiemi, con la tabella risultante corrispondente alla parte evidenziata in verde che include tutto: l'intersezione dei due insiemi, l'insieme a sinistra e quello a destra.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/08/t1t2-1.PNG" class="kg-image" alt="Two circles with a superimposed part. The left circle is labelled as table 1, the right circle is tabelled as table 2. Everything is colored in green." width="600" height="400" loading="lazy"><figcaption>Full Outer Join - Rappresentazione mediante diagramma di Venn</figcaption></figure><p>La sintassi è la seguente, usando la parola chiave <code>FULL</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-sql">SELECT colonne
  FROM tabella1
  FULL JOIN tabella2
  ON relazione;</code></pre><figcaption>sintassi FULL OUTER JOIN</figcaption></figure><h2 id="esempi-dell-operatore-join-in-sql"><strong>Esempi dell'operatore JOIN in SQL</strong></h2><p>Un possibile database per una clinica veterinaria potrebbe avere una tabella per gli animali domestici (<code>pets</code>) e uno per i proprietari (<code>owners</code>). Dato che un proprietario potrebbe avere più animali domestici, la tabella degli animali domestici (<code>pets</code>) avrà una colonna <code>owner_id</code> che punta alla tabella dei proprietari (<code>owners</code>).</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">OWNER_ID</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Fido</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">7</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">1</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Missy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">1</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Sissy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">10</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">2</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">4</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Copper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">3</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">5</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Hopper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">0</td></tr></tbody></table><!--kg-card-end: html--><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">PHONE_NUMBER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Johnny</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">4567823</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Olly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">7486513</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Ilenia</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">3481365</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">4</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Luise</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">1685364</td></tr></tbody></table><!--kg-card-end: html--><p>Potresti usare una semplice query per ottenere una tabella con il nome dell'animale domestico e il nome del proprietario uno accanto all'altro. Facciamolo usando tutti i diversi tipi di JOIN.</p><h3 id="esempio-inner-join-in-sql"><strong>Esempio INNER JOIN in SQL</strong></h3><p>Iniziamo utillizzando <code>JOIN</code>.</p><p>In questo caso, occorre selezionare (<code>SELECT</code>) la colonna <code>name</code> dalla tabella <code>pets</code> (rinominandola <code>pet_name</code>). E, successivamente, selezionare la colonna <code>name</code> dalla tabella <code>owners</code>, rinomandola <code>owner</code>. Il codice si presenta così: <code>SELECT pets.name AS pet_name, owners.name AS owner</code>.</p><p>Si utilizza <code>FROM</code> per indicare che le colonne provengono dalla tabella degli animali domestici, e <code>JOIN</code> per dire che vuoi unirla con la tabella dei proprietari, usando questa sintassi: <code>FROM pets JOIN owners</code>. </p><p>Infine, occorre indicare che vuoi unire due righe insieme quando la colonna <code>owner_id</code> nella tabella degli animali domestici (<code>pets</code>) è uguale alla colonna <code>id</code> nella tabella dei proprietari (<code>owners</code>), con <code>ON pets.owner_id = owners.id</code>.</p><p>Questo è il codice tutto assieme:</p><pre><code class="language-sql">SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  JOIN owners
  ON pets.owner_id = owners.id;</code></pre><p>Si ottiene una tabella come la seguente, in cui solo gli animali domestici collegati ad un proprietario e i proprietari collegati ad un animale domestico sono inclusi. </p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">PET_NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">OWNER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Fido</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Missy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Sissy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Olly</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Copper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Ilenia</td></tr></tbody></table><!--kg-card-end: html--><h3 id="esempio-left-join-in-sql"><strong>Esempio LEFT JOIN in SQL</strong></h3><p>Facciamo la stessa query usando <code>LEFT JOIN</code> in modo che tu possa vedere le differenze. La query è uguale alla precedente aggiungendo la parola chiave <code>LEFT</code>.</p><pre><code class="language-sql">SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  LEFT JOIN owners
  ON pets.owner_id = owners.id;</code></pre><p>In questo caso, le righe dalla tabella a sinistra, <code>pets</code>, sono tutte mantenute, e i valori mancati provenienti dalla tabella <code>owners</code> sono riempiti con il valore <code>NULL</code>.</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">PET_NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">OWNER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Fido</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Missy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Sissy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Olly</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Copper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Ilenia</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Hopper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">NULL</td></tr></tbody></table><!--kg-card-end: html--><p>Sembra che ci sia un animale domestico che non è registrato con un proprietario.</p><h3 id="esempio-right-join-in-sql"><strong>Esempio RIGHT JOIN in SQL</strong></h3><p>Se realizzi la stessa query usando <code>RIGHT JOIN</code> ottieni un risultato differente.</p><pre><code class="language-sql">SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  RIGHT JOIN owners
  ON pets.owner_id = owners.id;</code></pre><p>In questo caso tutte le righe dalla tabella a destra, <code>owners</code>, sono mantenute, e se c'è un valore mancante è riempito con il valore <code>NULL</code>.</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">PET_NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">OWNER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Fido</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Missy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Sissy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Olly</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Copper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Ilenia</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Louise</td></tr></tbody></table><!--kg-card-end: html--><p>Sembra ci sia un proprietario che non ha animali domestici registrati.</p><h3 id="esempio-full-join-in-sql"><strong>Esempio FULL JOIN in SQL</strong></h3><p>Puoi realizzare la stessa query nuovamente, usando <code>FULL JOIN</code>.</p><pre><code class="language-sql">SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  FULL JOIN owners
  ON pets.owner_id = owners.id;</code></pre><p>La tabella risultante è ancora diversa – in questo caso tutte le righe dalle due tabelle sono mantenute.</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">PET_NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">OWNER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Fido</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Missy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Johnny</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Sissy</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Olly</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Copper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Ilenia</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">Hopper</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">NULL</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">Louise</td></tr></tbody></table><!--kg-card-end: html--><p>Sembra che nel nostro database ci sia un animale domestico senza proprietario e un proprietario senza animali domestici.</p><h1 id="conclusione"><strong>Conclusione</strong></h1><p>In un database relazionale, tutti i dati dovrebbero essere scritti solo una volta. Per poter analizzare questi dati, hai bisogno di qualcosa per unire i dati correlati insieme.</p><p>In questo articolo hai imparato come utilizzare l'operatore JOIN per farlo. Spero che ti sarà utile, divertiti!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Alter Table in SQL – Come Aggiungere una Colonna o Rinominare una Colonna in SQL ]]>
                </title>
                <description>
                    <![CDATA[ Hai creato il tuo database e le tue tabelle e dopo tutto questo lavoro ti accorgi che hai bisogno  di aggiungere o rinominare una colonna. Bene, per farlo puoi usare l'istruzione ALTER TABLE. Ma tieni a mente che nel farlo devi essere molto prudente. Se la tua tabella ha molte ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/alter-table-in-sql-come-aggiungere-una-colonna-o-rinominare-una-colonna-in-sql/</link>
                <guid isPermaLink="false">648c1960e33e9b0675789826</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Roberta Garavaglia ]]>
                </dc:creator>
                <pubDate>Tue, 20 Jun 2023 07:21:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/06/pexels-quang-nguyen-vinh-2138126.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/alter-table-in-sql-how-to-add-a-column-or-rename-a-column-in-sql/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Alter Table in SQL – How to Add a Column or Rename a Column in SQL</a>
      </p><p>Hai creato il tuo database e le tue tabelle e dopo tutto questo lavoro ti accorgi che hai bisogno &nbsp;di aggiungere o rinominare una colonna. Bene, per farlo puoi usare l'istruzione <code>ALTER TABLE</code>.</p><p>Ma tieni a mente che nel farlo devi essere molto prudente. Se la tua tabella ha molte righe, può causare problemi di prestazioni al database. </p><p>Nota: se la sintassi presentata qui non funziona, controlla nella documentazione relativa all'implementazione di SQL che stai usando. Le cose funzionano per lo più allo stesso modo, ma ci sono delle differenze. &nbsp;</p><h2 id="come-aggiungere-una-nuova-colonna-con-alter-table">Come aggiungere una nuova colonna con <code>ALTER TABLE</code></h2><p>Per aggiungere una nuova colonna, devi prima selezionare la tabella, con <code>ALTER TABLE nome_tabella</code>, poi scrivere il nome della nuova colonna e il tipo di dato che deve aspettarsi, con <code>ADD nome_colonna tipo_dato</code>. Il codice, messo insieme, è così: </p><pre><code class="language-sql">ALTER TABLE nome_tabella
ADD nome_colonna tipo_dato;
</code></pre><h3 id="esempio-alter-table-per-aggiungere-una-colonna">Esempio: <code>ALTER TABLE</code> per aggiungere una colonna</h3><p>Abbiamo un database di utenti come segue: </p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">STATE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">EMAIL</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Paul</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">24</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Michigan</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><a href="mailto:paul@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">paul@example.com</a></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Molly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">22</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New Jersey</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><a href="mailto:molly@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">molly@example.com</a></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Robert</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">19</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New York</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><a href="mailto:robert@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">robert@example.com</a></td></tr></tbody></table><!--kg-card-end: html--><p>Abbiamo raggiunto un punto in cui occorre conservare il numero del documento d'identità dei nostri utenti, quindi abbiamo bisogno di aggiungere una nuova colonna. </p><p>Per aggiungere una nuova colonna alla nostra tabella <code>users</code>, dobbiamo selezionare la tabella con <code>ALTER TABLE users</code> e specificare il nome della nuova colonna e il suo tipo di dato con <code>ADD id_number TEXT</code>. Tutto insieme risulta così:</p><pre><code class="language-sql">ALTER TABLE users
ADD id_number TEXT;</code></pre><p>La tabella con la nuova colonna sarà come quella qui sotto:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">STATE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">EMAIL</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID_NUMBER</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Paul</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">24</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Michigan</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:paul@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">paul@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">NULL</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Molly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">22</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New Jersey</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:molly@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">molly@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">NULL</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Robert</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">19</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New York</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:robert@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">robert@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">NULL</td></tr></tbody></table><!--kg-card-end: html--><p>Dovrai usare un'<a href="https://www.freecodecamp.org/news/sql-update-statement-update-query-in-sql/">istruzione <code>UPDATE</code></a> per aggiungere l'informazione mancante relativa all'utente esistente, una volta che verrà fornita. </p><h3 id="come-creare-una-nuova-colonna-con-un-valore-predefinito-invece-di-null"><strong>Come creare una nuova colonna con un valore predefinito invece di NULL </strong></h3><p>Puoi anche creare una colonna con un valore predefinito usando la parola chiave <code>default</code> seguita dal valore che vuoi assegnare. Gli utenti vedranno allora il valore di default invece di un valore mancante compilato con NULL. </p><p>Diciamo che avremo presto utenti internazionali e che vogliamo aggiungere una colonna <code>country</code>. Tutti i nostri utenti già inseriti vengono dagli Stati Uniti, allora potremmo usare questo valore come valore predefinito. </p><pre><code class="language-sql">ALTER TABLE users
ADD country TEXT default "United States";</code></pre><p>La tabella poi risulterà così: </p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">STATE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">EMAIL</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID_NUMBER</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">COUNTRY</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Paul</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">24</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Michigan</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:paul@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">paul@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Molly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">22</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New Jersey</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:molly@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">molly@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Robert</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">19</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New York</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:robert@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">robert@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr></tbody></table><!--kg-card-end: html--><h3 id="sii-prudente-quando-aggiungi-nuove-colonne-alle-tabelle"><strong>Sii prudente quando aggiungi nuove colonne alle tabelle </strong></h3><p>Se la tua tabella ha già molte righe - come quando hai molti utenti o molti dati in memoria - aggiungere una nuova colonna può essere dispendioso in termini di risorse. Quindi assicurati di svolgere questa operazione con attenzione. </p><h2 id="come-rinominare-una-colonna-con-alter-table">Come rinominare una colonna con <code>ALTER TABLE</code></h2><p>Puoi rinominare una colonna con il codice qui sotto. Seleziona la tabella con <code>ALTER TABLE nome_tabella</code> e poi scrivi la colonna da rinominare e con quale nome: <code>RENAME COLUMN vecchio_nome TO nuovo_nome</code>.</p><pre><code class="language-sql">ALTER TABLE nome_tabella
RENAME COLUMN vecchio_nome TO nuovo_nome;</code></pre><h3 id="esempio-di-come-rinominare-una-colonna">Esempio di come rinominare una colonna </h3><p>Consideriamo la stessa tabella che abbiamo usato nell'esempio precedente:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">STATE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">EMAIL</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID_NUMBER</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">COUNTRY</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Paul</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">24</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Michigan</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:paul@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">paul@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Molly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">22</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New Jersey</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:molly@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">molly@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Robert</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">19</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New York</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:robert@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">robert@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr></tbody></table><!--kg-card-end: html--><p>Per evitare confusione tra le colonne <code>id</code> e <code>id_number</code>, rinominiamo la prima in <code>user_id</code>.</p><p>Prima selezioniamo la tabella con <code>ALTER TABLE users</code> e poi dichiariamo il nome della colonna in modo che venga modificato come vogliamo con <code>RENAME COLUMN id TO user_id</code>.</p><pre><code class="language-sql">ALTER TABLE users
RENAME COLUMN id TO user_id;</code></pre><p>Dopo questa query, la tabella apparirà così:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">USER_ID</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">NAME</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">AGE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">STATE</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">EMAIL</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">ID_NUMBER</th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);">COUNTRY</th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">1</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Paul</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">24</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Michigan</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:paul@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">paul@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">2</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Molly</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">22</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New Jersey</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:molly@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">molly@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;">3</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">Robert</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">19</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">New York</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;"><a href="mailto:robert@example.com" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;">robert@example.com</a></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline;">NULL</td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;">United States</td></tr></tbody></table><!--kg-card-end: html--><h3 id="sii-prudente-quando-rinomini-una-colonna-in-una-tabella"><strong>Sii prudente quando rinomini una colonna in una tabella </strong></h3><p>Quando rinomini delle colonne usando <code>ALTER TABLE</code>, rischi di rompere delle dipendenze all'interno del database.</p><p>Se invece di usare <code>ALTER TABLE</code>, per modificare il nome della colonna, utilizzi uno strumento di refactoring, questo aggiornerà il nome e saprà anche gestire tutte le dipendenze. </p><p>Se hai un piccolo database non hai bisogno di preoccuparti, ma è importante tenerlo a mente. </p><h2 id="conclusione">Conclusione</h2><p>In questo articolo hai imparato a usare <code>ALTER TABLE</code> per aggiungere una colonna e rinominare una colonna in una tabella. </p><p>Ricorda solo che entrambe le operazioni comportano dei rischi che è importante conoscere. Come ha detto qualcuno, <em>da un grande potere deriva una grande responsabilità – </em>e <code>ALTER TABLE</code> è un grande potere, perciò usalo con cautela!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ordinamento Ascendente con la Clausola di SQL Order By ]]>
                </title>
                <description>
                    <![CDATA[ In questo articolo, ti mostrerò alcuni esempi di codice su come ordinare i tuoi dati in ordine ascendente usando la clausola SQL ORDER BY. Sintassi di ORDER BY Questa è la sintassi base per ordinare i tuoi dati in ordine ascendente: SELECT colonne FROM tabella ORDER BY colonna; Se vuoi ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/ordine-ascendente-con-la-clausola-di-sql-order-by/</link>
                <guid isPermaLink="false">63ce61120fb58706fd715f5e</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Roberto Pauletto ]]>
                </dc:creator>
                <pubDate>Tue, 07 Feb 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/01/brett-jordan-M3cxjDNiLlQ-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/ascending-order-with-sql-order-by/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Ascending Order with SQL Order By</a>
      </p><p>In questo articolo, ti mostrerò alcuni esempi di codice su come ordinare i tuoi dati in ordine ascendente usando la clausola SQL <code>ORDER BY</code>.</p><h2 id="sintassi-di-order-by"><strong>Sintassi di ORDER BY</strong></h2><p>Questa è la sintassi base per ordinare i tuoi dati in ordine ascendente:</p><pre><code class="language-sql">SELECT colonne FROM tabella
ORDER BY colonna;</code></pre><p>Se vuoi un ordinamento discendente, devi usare la parola chiave <code>DESC</code>.</p><pre><code class="language-sql">SELECT colonne FROM tabella
ORDER BY colonna DESC;</code></pre><p>L'istruzione <code>SELECT</code> in SQL consente di ottenere dati da una tabella.</p><p>La clausola <code>FROM</code> specifica da quale tabella vogliamo ottenere i dati da elencare.</p><p>In questo esempio, abbiamo una tabella di dati su dei musicisti con le colonne: <code>id</code> (identificativo), <code>name</code> (nome), <code>age</code> (età), <code>instrument</code> (strumento) e <code>city</code> (città):</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-20-at-2.57.23-AM.png" class="kg-image" alt="Screen-Shot-2021-09-20-at-2.57.23-AM" width="600" height="400" loading="lazy"></figure><p>Attualmente la tabella viene ordinata automaticamente in ordine di <code>id</code> ascendente.</p><p>Se volessimo ordinare i dati in modo ascendente per la colonna <code>name</code>, dovremmo usare questa sintassi:</p><pre><code class="language-sql">SELECT * FROM musicians
ORDER BY name;</code></pre><p>Il carattere <code>*</code> consente di selezionare tutte le colonne della tabella.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-20-at-3.03.11-AM.png" class="kg-image" alt="Screen-Shot-2021-09-20-at-3.03.11-AM" width="600" height="400" loading="lazy"></figure><p>Puoi vedere che ora i nomi sono ordinati alfabeticamente e l'<code>id</code> non è più nel corretto ordine ascendente.</p><p>Se volessimo ordinare i dati per città (<code>city</code>), dovremo utilizzare questa sintassi.</p><pre><code class="language-sql">SELECT * FROM musicians
ORDER BY city;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-20-at-3.22.34-AM.png" class="kg-image" alt="Screen-Shot-2021-09-20-at-3.22.34-AM" width="600" height="400" loading="lazy"></figure><p>Puoi anche ordinare più colonne in ordine ascendente con lo stesso comando.</p><p>In questo nuovo esempio, otteniamo un ordinamento ascendente per età (<code>age</code>) e città (<code>city</code>).</p><pre><code class="language-sql">SELECT * FROM musicians
ORDER BY age, city;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-20-at-3.13.46-AM.png" class="kg-image" alt="Screen-Shot-2021-09-20-at-3.13.46-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo vedere che nella tabella ci sono tre musicisti diciannovenni con le loro rispettive città ordinate alfabeticamente. Anche i musicisti che hanno 38 anni hanno le loro città correttamente ordinate alfabeticamente.</p><p>Se avessimo voluto visualizzare una parte dei dati con ordinamento ascendente e un'altra parte con ordinamento discendente, avremmo dovuto usare le parole chiave <code>ASC</code> e <code>DESC</code>.</p><p>In questo nuovo esempio, vogliamo elencare i dati in ordine discendente per età (<code>age</code> ) e in ordine ascendente per strumento (<code>instrument</code>).</p><p>Ecco la sintassi:</p><pre><code class="language-sql">SELECT * FROM musicians
ORDER BY age DESC, instrument ASC;</code></pre><p>Dobbiamo usare entrambe le parole chiave <code>ASC</code> e <code>DESC</code> accanto ai nomi di colonna per specificare come vogliamo ordinare i dati.</p><p>Il risultato è il seguente:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-20-at-3.33.26-AM.png" class="kg-image" alt="Screen-Shot-2021-09-20-at-3.33.26-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo vedere nella nostra tabella che sia Oscar che Jenny sono i più anziani. Oscar è il primo risultato in quanto il nome del suo strumento (drums) alfabeticamente viene prima del nome dello strumento di Jenny (trombone).</p><p>Osserviamo la stessa situazione con Jess e Dave. Anche se sono di pari età, Jess compare più in alto nella tabella in quanto flute precede alfabeticamente trumpet.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Puoi ordinare i dati di una tabella in ordine ascendente usando la clausola di SQL <code>ORDER BY</code> .</p><pre><code class="language-sql">SELECT colonne FROM tabella
ORDER BY colonna;</code></pre><p>Se vuoi un ordinamento discendente dovrai usare la parola chiave <code>DESC</code>.</p><pre><code class="language-sql">SELECT colonne FROM tabella
ORDER BY colonna DESC;</code></pre><p>Il carattere <code>*</code> indica che si vogliono selezionare tutte le colonne nella tabella.</p><pre><code class="language-sql">SELECT * FROM tabella
ORDER BY colonna;</code></pre><p>Se vuoi un ordinamento discendente su colonne multiple dovrai elencare le colonne oggetto di ordinamento dopo la clausola <code>ORDER BY</code>.</p><pre><code class="language-sql">SELECT * FROM tabella
ORDER BY colonna1, colonna2;</code></pre><p>Se vuoi una parte di dati in ordine ascendente e un'altra parte in ordine discendente dovrai usare le parole chiave <code>ASC</code> e <code>DESC</code>.</p><pre><code class="language-sql">SELECT * FROM tabella
ORDER BY colonna1 ASC, colonna2 DESC;</code></pre><p>Ecco come usare la clausola <code>ORDER BY</code> in SQL per ordinare i dati.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ SQL Count – Come Usare Select, Sum e Avg in SQL ]]>
                </title>
                <description>
                    <![CDATA[ In SQL, esistono due funzioni integrate per sommare o calcolare la media dei dati in una tabella. In questo articolo ti mostrerò come usare le funzioni SUM e AVG in SQL usando degli esempi di codice. Come usare la funzione SUM in SQL Se devi aggiungere un gruppo di numeri ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/sql-count-come-usare-select-sum-e-avg-in-sql/</link>
                <guid isPermaLink="false">63d0fe8b0fb58706fd7165d6</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Mon, 30 Jan 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/01/safar-safarov-koOdUvfGr4c-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/sql-count-how-to-select-sum-and-average-rows-in-sql/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SQL Count – How to Select, Sum, and Average Rows in SQL</a>
      </p><p>In SQL, esistono due funzioni integrate per sommare o calcolare la media dei dati in una tabella.</p><p>In questo articolo ti mostrerò come usare le funzioni <strong><strong><code>SUM</code> </strong></strong>e <strong><strong><code>AVG</code> </strong></strong>in SQL usando degli esempi di codice.</p><h2 id="come-usare-la-funzione-sum-in-sql"><strong>Come usare la funzione SUM in SQL</strong></h2><p>Se devi aggiungere un gruppo di numeri a una tabella, puoi usare la funzione <code>SUM</code> in SQL.</p><p>Questa è la sintassi di base:</p><pre><code class="language-sql">SELECT SUM(nome_colonna) FROM nome_tabella;</code></pre><p>L'istruzione <code>SELECT</code> in SQL dice al computer di prendere i dati da una tabella.</p><p>La clausola <code>FROM</code> in SQL specifica da quale tabella vuoi prendere i dati.</p><p>In questo esempio, abbiamo una tabella chiamata <code>studenti</code> con le colonne <code>id</code>, <code>nome</code>, <code>data</code> e <code>totale</code>. Vogliamo aggiungere il numero totale di caramelle vendute da tutti gli studenti.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-5.42.26-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-5.42.26-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo usare questa sintassi per ottenere il numero totale di barrette vendute:</p><pre><code class="language-sql">SELECT SUM(totale) FROM studenti;
</code></pre><p>Il risultato sarà 41.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-5.44.54-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-5.44.54-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo anche ottenere la somma per ogni studente usando la clausola <code>GROUP BY</code>.</p><p>La prima parte è per selezionare il nome e sommare &nbsp;il numero totale di caramelle vendute, così:</p><pre><code class="language-sql">SELECT nome, SUM(totale)</code></pre><p>La seconda parte è per raggruppare la somma rispetto al nome:</p><pre><code class="language-sql">FROM studenti GROUP BY nome;</code></pre><p>Ecco il codice completo per raggruppare il numero totale di caramelle vendute da ogni studente.</p><pre><code class="language-sql">SELECT nome, SUM(totale) FROM studenti GROUP BY nome;
</code></pre><p>Ecco come apparirà il risultato:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-5.54.14-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-5.54.14-AM" width="600" height="400" loading="lazy"></figure><p>Al momento i risultati sono raggruppati alfabeticamente in base al nome dello studente.</p><p>Possiamo modificare il codice per ordinare la lista di risultati dal più grande al più piccolo usando la clausola <code>ORDER BY</code>.</p><pre><code class="language-sql">SELECT nome, SUM(totale) FROM studenti GROUP BY nome ORDER BY totale DESC;</code></pre><p>La parola chiave <code>DESC</code> dice al computer di ordinare il totale dal più grande al più piccolo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-6.05.02-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-6.05.02-AM" width="600" height="400" loading="lazy"></figure><p>Se vogliamo ordinare il totale dal più piccolo al più grande, basta omettere la parola chiave <code>DESC</code>.</p><pre><code class="language-sql">SELECT nome, SUM(totale) FROM studenti GROUP BY nome ORDER BY totale;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-6.07.10-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-6.07.10-AM" width="600" height="400" loading="lazy"></figure><h2 id="come-usare-la-funzione-avg-in-sql"><strong>Come usare la funzione AVG in SQL</strong></h2><p>La funzione <code>AVG</code> trova la media aritmetica per un gruppo di entrate in una tabella SQL. La media è la somma di un insieme di numeri divisa per il numero di elementi sommati.</p><p>Ad esempio, 2+4+4+6+6+8 fa 30, diviso 6 restituisce una media di 5.</p><p>Questa è la sintassi di base della funzione <code>AVG</code>:</p><pre><code class="language-sql">SELECT AVG(nome_colonna) FROM nome_tabella;
   </code></pre><p>In questo esempio, abbiamo una tabella chiamata <code>studenti</code>, con le colonne <code>id</code> , <code>nome</code>, <code>data</code> e <code>voti</code>. Vogliamo trovare la media dei voti di tutti gli studenti nella tabella.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-4.10.47-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-4.10.47-AM" width="600" height="400" loading="lazy"></figure><p>Dobbiamo usare questa sintassi per ottenere la media dei voti:</p><pre><code class="language-sql">SELECT AVG(voti) FROM studenti; </code></pre><p>La media è 85.333.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-4.21.21-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-4.21.21-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo anche usare la funzione <code>ROUND</code> per arrotondare il risultato all'intero più vicino.</p><pre><code class="language-sql">SELECT ROUND(AVG(voti)) FROM studenti; </code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-4.32.05-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-4.32.05-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo ottenere anche la media di ogni studente usando la clausola <code>GROUP BY</code>.</p><p>La prima parte è per selezionare il nome e la media dei voti, in questo modo:</p><pre><code class="language-sql">SELECT nome, ROUND(AVG(voti))</code></pre><p>La seconda parte è per raggruppare le medie in base al nome:</p><pre><code class="language-sql">FROM studenti GROUP BY nome;</code></pre><p>Ecco il codice completo:</p><pre><code class="language-sql">SELECT nome, ROUND(AVG(voti)) FROM studenti GROUP BY nome;</code></pre><p>E questo sarà il risultato finale:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-29-at-5.17.28-AM.png" class="kg-image" alt="Screen-Shot-2021-09-29-at-5.17.28-AM" width="600" height="400" loading="lazy"></figure><h2 id="conclusione"><strong>Conclusione</strong></h2><p>A volte potresti aver bisogno di trovare la somma o la media delle entrate di una tabella.</p><p>Se devi aggiungere un gruppo di numeri a una tabella in SQL puoi usare la funzione <code>SUM</code>.</p><p>Questa è la sintassi di base:</p><pre><code class="language-sql">SELECT SUM(nome_colonna) FROM nome_tabella;</code></pre><p>Se devi disporre i dati in gruppi, puoi usare la clausola <code>GROUP BY</code>.</p><p>La funzione <code>AVG</code> trova la media aritmetica di un gruppo di entrate di una tabella SQL. La media è la somma di un insieme di numeri divisa per il numero di elementi sommati.</p><p>Questa è la sintassi di base:</p><pre><code class="language-sql">SELECT AVG(nome_colonna) FROM nome_tabella;
</code></pre><p>Spero che questo tutorial ti sia piaciuto e buona fortuna con il tuo viaggio in SQL.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Istruzione SQL Distinct – Come Eseguire Query, Selezionare e Contare ]]>
                </title>
                <description>
                    <![CDATA[ In SQL, puoi effettuare una interrogazione sul database e usare la funzione  COUNT per ottenere il numero di righe per un particolare gruppo in una tabella. In questo articolo, ti mostrerò come usare la funzione COUNT con alcuni esempi di codice. Cos'è la funzione COUNT in SQL? Questa funzione ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/istruzione-sql-distinct-come-eseguire-query-selezionare-e-contare/</link>
                <guid isPermaLink="false">6391a0a7f2fe0506fb9b7560</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Database ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Roberto Pauletto ]]>
                </dc:creator>
                <pubDate>Thu, 15 Dec 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/12/anthony-riera-kylWNDQFd5A-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/sql-distinct-statement-how-to-query-select-and-count/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SQL Distinct Statement – How to Query, Select, and Count</a>
      </p><p>In SQL, puoi effettuare una interrogazione sul database e usare la funzione <code>COUNT</code> per ottenere il numero di righe per un particolare gruppo in una tabella.</p><p>In questo articolo, ti mostrerò come usare la funzione <code>COUNT</code> con alcuni esempi di codice.</p><h2 id="cos-la-funzione-count-in-sql"><strong>Cos'è la funzione<strong> COUNT in SQL?</strong></strong></h2><p>Questa funzione SQL restituirà il conteggio del numero di righe per un dato gruppo.</p><p>Ecco la sintassi di base:</p><pre><code class="language-sql">SELECT COUNT(nome_colonna) FROM nome_tabella;</code></pre><p>L'istruzione <code>SELECT</code> &nbsp;in SQL serve per ottenere dati da una tabella nel database.</p><p><code>COUNT(nome_colonna)</code> non includerà i valori <code>NULL</code> nel conteggio.</p><p>Un valore <code>NULL</code> in SQL fa riferimento a un campo di una tabella in cui non è stata immessa una voce.</p><p>Talvolta puoi usare un asterisco <code>*</code> come argomento della funzione <code>COUNT</code>.</p><pre><code class="language-sql">SELECT COUNT(*) FROM nome_tabella;</code></pre><p>In questo caso, la funzione <code>COUNT(*)</code> restituirà il numero totale di elementi nel gruppo compresi i valori <code>NULL</code>.</p><p>La clausola <code>FROM</code> in SQL specifica da quale tabella vuoi ottenere i dati.</p><p>Puoi anche usare la parola chiave <code>ALL</code> nella funzione <code>COUNT</code> .</p><pre><code class="language-sql">SELECT COUNT(ALL nome_colonna) FROM nome_tabella;</code></pre><p>La parola chiave <code>ALL</code> conterà tutti i valori nella tabella, duplicati inclusi. Puoi omettere questa parola chiave, in quanto <code>COUNT</code> usa <code>ALL</code> nella modalità predefinita, che tu la scriva o no.</p><p>Talvolta vedrai la parola chiave <code>DISTINCT</code> usata con la funzione <code>COUNT</code>.</p><pre><code class="language-sql">SELECT COUNT(DISTINCT nome_colona) FROM nome_tabella;</code></pre><p>La parola chiave <code>DISTINCT</code> serve per contare solo i valori univoci che non sono <code>NULL</code>. I valori duplicati verranno ignorati.</p><h2 id="come-usare-la-funzione-count-in-sql"><strong>Come usare la funzione <strong>COUNT </strong>in <strong>SQL</strong></strong></h2><p>In questo esempio, abbiamo una tabella <code>campers</code> (che contiene un elenco di campeggiatori), con le colonne <code>id</code>, <code>name</code>, <code>age</code> e <code>counselor</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-1.35.37-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-1.35.37-AM" width="600" height="400" loading="lazy"></figure><p>Se vogliamo selezionare tutte le righe nella nostra tabella possiamo usare la seguente sintassi:</p><pre><code class="language-sql">SELECT COUNT(*) FROM campers;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-1.37.18-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-1.37.18-AM" width="600" height="400" loading="lazy"></figure><p>Come puoi vedere, l'interrogazione ha restituito il numero 12 che rappresenta il numero totale di righe nella tabella <code>campers</code>.</p><h3 id="usare-la-clausola-where"><strong><strong>Us</strong>are la clausola<strong> <code>WHERE</code> </strong></strong></h3><p>Possiamo usare la clausola <code>WHERE</code> per ottenere il numero di righe nelle quali un particolare nominativo si trova nel campo <code>counselor</code>.</p><p>In questo esempio, vogliamo contare il numero di righe che contengono il nome "Ashley" nel campo <code>counselor</code>.</p><p>Per la clausola <code>WHERE</code> dobbiamo specificare <code>counselor</code> con il valore <code>"Ashley"</code>.</p><pre><code class="language-sql"> WHERE counselor="Ashley";</code></pre><p>Ecco l'istruzione completa:</p><pre><code class="language-sql">SELECT COUNT(*) FROM campers WHERE counselor="Ashley";</code></pre><p>Questo è il risultato restituito:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-1.47.03-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-1.47.03-AM" width="600" height="400" loading="lazy"></figure><p>Se diamo un'occhiata alla nostra tabella possiamo vedere che <code>"Ashley"</code> appare 4 volte.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-1.35.37-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-1.35.37-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo modificare l'interrogazione per contare quanti campeggiatori hanno 11 anni.</p><p>Nella clausola <code>WHERE</code> dobbiamo specificare la colonna <code>age</code> (età) con un valore di <code>11</code>.</p><pre><code class="language-sql">WHERE age=11;</code></pre><p>Ecco l'istruzione completa:</p><pre><code class="language-sql">SELECT COUNT(*) FROM campers WHERE age=11;</code></pre><p>Ecco il risultato:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-1.50.46-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-1.50.46-AM" width="600" height="400" loading="lazy"></figure><p>Se verifichiamo il contenuto della tabella qui sopra, possiamo vedere che ci sono 3 campeggiatori che hanno 11 anni di età.</p><h3 id="come-usare-la-clausola-group-by"><strong>Come usare la clausola<strong> </strong></strong><code>GROUP BY</code><strong><strong> </strong></strong></h3><p>Possiamo usare la clausola <code>GROUP BY</code> con la funzione <code>COUNT</code> per ottenere il conteggio dei campeggiatori raggruppati per età.</p><p>Prima selezioniamo la colonna <code>age</code> e usiamo la funzione <code>COUNT</code>:</p><pre><code class="language-sql">SELECT age, COUNT(*)</code></pre><p>Poi specifichiamo il nome della tabella (<code>campers</code> ) e il raggruppamento per il campo <code>age</code>:</p><pre><code class="language-sql">FROM campers GROUP BY age;</code></pre><p>Di seguito l'istruzione completa:</p><pre><code class="language-sql">SELECT age, COUNT(*) FROM campers GROUP BY age;</code></pre><p>Ecco il risultato:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-2.23.35-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-2.23.35-AM" width="600" height="400" loading="lazy"></figure><h3 id="come-usare-la-clausola-order-by"><strong>Come usare la clausola<strong> <code>ORDER BY</code></strong></strong></h3><p>Possiamo modificare il nostro esempio precedente usando la clausola <code>ORDER BY</code> per elencare il risultato in ordine ascendente rispetto al numero di campeggiatori per gruppo di età.</p><p>Ecco il codice per la clausola <code>ORDER BY</code>:</p><pre><code class="language-sql">ORDER BY COUNT(*);</code></pre><p>Aggiungiamo questa clausola alla fine dell'istruzione <code>SELECT</code> in questo modo:</p><pre><code class="language-sql">SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*);</code></pre><p>Ecco il risultato dell'istruzione qui sopra:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-2.28.18-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-2.28.18-AM" width="600" height="400" loading="lazy"></figure><p>Se avessimo voluto presentare i dati in ordine discendente, avremmo dovuto usare la parola chiave <code>DESC</code> .</p><p>Ecco il codice per la clausola <code>ORDER BY</code> usando la parola chiave <code>DESC</code> :	</p><pre><code class="language-sql">ORDER BY COUNT(*) DESC;</code></pre><p>Questo è il codice completo:</p><pre><code class="language-sql">SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*) DESC;</code></pre><p>Il nuovo risultato è questo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-2.31.52-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-2.31.52-AM" width="600" height="400" loading="lazy"></figure><h3 id="come-usare-la-clausola-having"><strong>Come usare la clausola<strong> <code>HAVING</code></strong></strong></h3><p>Possiamo usare la clausola <code>HAVING</code> per specificare una condizione per la funzione <code>COUNT</code>.</p><p>Possiamo modificare il codice per mostrare solo il risultato del raggruppamento per età quando il valore è minore di 5.</p><p>Il codice per la clausola <code>HAVING</code> è questo:</p><pre><code class="language-sql">HAVING COUNT(*)&lt;5;
</code></pre><p>L'istruzione completa è questa:</p><pre><code class="language-sql">SELECT age, COUNT(*) FROM campers GROUP BY age HAVING COUNT(*)&lt;5;
</code></pre><p>Otteniamo il seguente risultato:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-30-at-2.48.28-AM.png" class="kg-image" alt="Screen-Shot-2021-09-30-at-2.48.28-AM" width="600" height="400" loading="lazy"></figure><p>Possiamo vedere che la riga contenente il conteggio dei campeggiatori di 12 anni non compare più, in quanto il valore del conteggio è maggiore di 5.</p><h2 id="conclusione"><strong><strong>Conclusion</strong>e</strong></h2><p>In SQL puoi interrogare un database usando la funzione <code>COUNT</code> per ottenere il numero di righe per un particolare gruppo in una tabella.</p><p>La sintassi base è:</p><pre><code class="language-sql">SELECT COUNT(nome_colonna) FROM nome_tabella;</code></pre><p><code>COUNT(column_name)</code> non comprende valori <code>NULL</code> nel conteggio.</p><p>Un valore <code>NULL</code> &nbsp;in SQL si riferisce a un campo di una tabella in cui non è stato immessa una voce.</p><p>Talvolta puoi usare un asterisco <code>*</code> come argomento della funzione <code>COUNT</code> .</p><pre><code class="language-sql">SELECT COUNT(*) FROM nome_tabella;</code></pre><p>La funzione <code>COUNT(*)</code> restituirà il conteggio del numero totale di elementi in un dato gruppo compresi i valori <code>NULL</code>.</p><p>Spero che tu abbia apprezzato questo articolo, ti auguro buona fortuna per il tuo viaggio all'interno di SQL.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Come creare e manipolare un database SQL con Python ]]>
                </title>
                <description>
                    <![CDATA[ Python [https://www.python.org/] e SQL [https://it.wikipedia.org/wiki/Structured_Query_Language] [https://en.wikipedia.org/wiki/SQL] sono due dei linguaggi più importanti per l'analisi di dati. In questo articolo, ti mostrerò tutto ciò di cui hai bisogno per collegare Python e SQL. Imparerai come prendere i dati da un database relazionale, memorizzare dati da un'applicazione Python in un database che ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/come-creare-e-manipolare-un-database-sql-con-python/</link>
                <guid isPermaLink="false">62f136065cda1d06d40dd182</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Thu, 01 Sep 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/08/Untitled-design-1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/connect-python-with-sql/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Create and Manipulate SQL Databases with Python</a>
      </p><p><a href="https://www.python.org/">Python</a> e <a href="https://en.wikipedia.org/wiki/SQL"></a><a href="https://it.wikipedia.org/wiki/Structured_Query_Language">SQL</a> sono due dei linguaggi più importanti per l'analisi di dati.</p><p>In questo articolo, ti mostrerò tutto ciò di cui hai bisogno per collegare Python e SQL.</p><p>Imparerai come prendere i dati da un database relazionale, memorizzare dati da un'applicazione Python in un database che possiedi e altri casi di utilizzo pratico in cui potresti imbatterti.</p><p>Parleremo di:</p><ul><li>Come imparare a usare Python e SQL insieme</li><li>Come configurare il tuo ambiente Python e il Server MySQL</li><li>Connettere il Server MySQL in Python</li><li>Creare un nuovo database</li><li>Creare tabelle e relazioni</li><li>Inserire dati nelle tabelle</li><li>Leggeri i dati</li><li>Aggiornare i dati</li><li>Cancellare i dati</li><li>Creare dati da liste in Python</li><li>Creare funzioni riutilizzabili per svolgere tutte queste operazioni</li></ul><p>C'è un bel po' di materiale utile e interessante. Iniziamo!</p><p>Una breve nota prima di partire: su <a href="https://github.com/thecraigd/Python_SQL">questo repository GitHub</a>, c'è un Jupiter Notebook con tutto il codice usato in questo tutorial. Seguire scrivendo il codice passo passo è altamente consigliato.</p><p>Se non hai familiarità con SQL e i concetti dietro i database relazionali, c'è una grande quantità di risorse disponibile qui su <a href="https://www.freecodecamp.org/news/search/?query=sql">freeCodeCamp</a>!</p><h2 id="perch-python-con-sql"><strong>Perché<strong> Python </strong>con <strong>SQL?</strong></strong></h2><p>Per gli analisti e gli scienziati dei dati, Python ha molti vantaggi. Un enorme numero di librerie open source lo rendono uno strumento incredibilmente utile per chi maneggia dei dati.</p><p>Ci sono <a href="https://pandas.pydata.org/">pandas</a>, <a href="https://numpy.org/">NumPy </a>e <a href="https://vaex.readthedocs.io/en/latest/">Vaex</a> per l'analisi dei dati, <a href="https://matplotlib.org/">Matplotlib</a>, s<a href="https://seaborn.pydata.org/">eaborn</a> e <a href="https://bokeh.org/">Bokeh</a> per la visualizzazione, <a href="https://www.freecodecamp.org/news/p/5fe3a414-f0df-488b-9402-44d8edc12652/www.tensorflow.org">TensorFlow</a>, <a href="https://scikit-learn.org/stable/">scikit-learn</a> e <a href="https://pytorch.org/">PyTorch</a> per le applicazioni del machine learning (e tanti altri ancora).</p><p>Con una curva di apprendimento (relativamente) buona e una certa versatilità, non è una sorpresa che Python sia uno dei linguaggi di programmazione più rapidi da apprendere.</p><p>Quindi se stiamo usando Python per l'analisi di dati, vale la pena chiedersi da dove provengono i dati.</p><p>Mentre c'è un'ampia varietà di risorse di set di dati, in molti casi – particolarmente nelle attività imprenditoriali – i dati sono conservati in un database relazionale. I database relazionali sono estremamente efficienti, hanno grandi potenzialità e vengono ampiamente usati per <a href="https://it.wikipedia.org/wiki/CRUD">creare, leggere, aggiornare e cancellare</a> dati di ogni tipo.</p><p>I sistemi di gestione di database relazionali (RDBMS) utilizzati più di frequente – <a href="https://www.oracle.com/database/">Oracle</a>, <a href="https://www.mysql.com/">MySQL</a>, <a href="https://en.wikipedia.org/wiki/Microsoft_SQL_Server"></a><a href="https://it.wikipedia.org/wiki/Microsoft_SQL_Server">Microsoft SQL Server</a>, <a href="https://www.oracle.com/database/what-is-a-relational-database/">PostgreSQL</a>, <a href="https://en.wikipedia.org/wiki/IBM_DB2"></a><a href="https://it.wikipedia.org/wiki/IBM_DB2">IBM DB2</a> – usano tutti SQL (<a href="https://en.wikipedia.org/wiki/SQL"></a><a href="https://it.wikipedia.org/wiki/Structured_Query_Language">Structured Query Language</a>) per consultare e apportare modifiche ai dati.</p><p>Nota che ogni RDBMS utilizza implementazioni leggermente diverse di SQL, quindi il codice SQL scritto per uno non funziona per gli altri senza qualche modifica (di solito piccola). I concetti, le strutture e le operazioni però, sono sostanzialmente uguali.</p><p>Ciò vuol dire che per un analista dei dati, una profonda comprensione di SQL è di fondamentale importanza. E conoscere come usare Python e SQL insieme, conferisce dei vantaggi ancora più consistenti quando si tratta di lavorare con dei dati.</p><p>Il resto di questo articolo sarà dedicato a mostrarti esattamente come possiamo farlo.</p><h2 id="per-iniziare"><strong>Per iniziare</strong></h2><h3 id="requisiti-installazione"><strong><strong>Requi</strong>siti<strong> &amp; Installa</strong>z<strong>ion</strong>e</strong></h3><p>Per seguire passo passo questo tutorial, avrai bisogno di un <a href="https://www.python.org/downloads/">ambiente Python</a> configurato.</p><p>Io utilizzo <a href="https://www.anaconda.com/">Anaconda</a>, ma ci sono molte altre opzioni. Puoi semplicemente cercare su google "come installare Python" se hai bisogno di un aiuto extra. Puoi anche usare <a href="https://mybinder.org/">Binder</a> per programmare con il <a href="https://github.com/thecraigd/Python_SQL">Jupyter Notebook</a> associato.</p><p>Utilizzeremo <a href="https://dev.mysql.com/downloads/mysql/">MySQL Community Server</a> dato che è gratuito e ampiamente utilizzato nell'industria. Se stai usando Windows, <a href="https://www.youtube.com/watch?v=2HQC94la6go" rel="noopener nofollow">questa guida</a> ti aiuterà a fare la configurazione, mentre qui puoi trovare le guide per gli utenti <a href="https://www.youtube.com/watch?v=5BQ5GvjiAR4" rel="noopener nofollow">Mac</a> e <a href="https://www.youtube.com/watch?v=0o0tSaVQfV4" rel="noopener nofollow">Linux</a>.</p><p>Una volta terminata la configurazione avremo bisogno di metterli in comunicazione tra loro.</p><p>Per questo, dovremo installare la libreria Python MySQL Connector, usando pip:</p><pre><code class="language-terminal">pip install mysql-connector-python</code></pre><p>Utilizzeremo anche <a href="https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html">pandas</a>, quindi assicurati di averlo installato.</p><pre><code class="language-terminal">pip install pandas</code></pre><h3 id="importare-le-librerie"><strong>Importare le librerie</strong></h3><p>Come per ogni progetto in Python, la prima cosa da fare è importare le librerie che ci servono.</p><p>È una buona pratica importare tutte le librerie che andremo a utilizzare all'inizio del progetto, così che chi legge o revisiona il nostro codice sa grossomodo cosa aspettarsi senza troppe sorprese.</p><p>Per questo tutorial, utilizzeremo due librerie – <a href="https://dev.mysql.com/doc/connector-python/en/">MySQL Connector</a> e <a href="https://pandas.pydata.org/">pandas</a>.</p><pre><code class="language-python">import mysql.connector
from mysql.connector import Error
import pandas as pd</code></pre><p>Importiamo la funzione di errore separatamente in modo da potervi accedere facilmente per le nostre funzioni.</p><h2 id="connettersi-al-server-mysql"><strong><strong>Conne</strong>ttersi al Server<strong> MySQL</strong></strong></h2><p>A questo punto dovremmo avere <a href="https://dev.mysql.com/downloads/mysql/">MySQL Community Server</a> configurato sul nostro sistema. Adesso dobbiamo scrivere del codice Python che ci permetta di stabilire un collegamento al server.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">def create_server_connection(host_name, user_name, user_password):
    connection = None
    try:
        connection = mysql.connector.connect(
            host=host_name,
            user=user_name,
            passwd=user_password
        )
        print("MySQL Database connection successful")
    except Error as err:
        print(f"Error: '{err}'")

    return connection</code></pre><figcaption>Una funzione per collegarsi al server MySQL</figcaption></figure><p>Creare funzioni riutilizzabili come questa è una buona pratica. In questo modo possiamo riusarla ancora e ancora senza sforzo. Una volta che una funzione è stata scritta, puoi riutilizzarla in tutti i tuoi progetti. Il futuro te ti sarà grato per questo!</p><p>Analizziamo il codice di questa funzione riga per riga per capire cosa sta succedendo:</p><p>Nella prima riga diamo il nome alla funzione (<code>create_server_connection</code>) e agli argomenti che la funzione accetterà (<code>host_name</code>, <code>user_name</code> e <code>user_password</code>).</p><p>La riga successiva chiude ogni connessione esistente così che il server non possa confondersi con connessioni multiple aperte.</p><p>In seguito, usiamo un blocco <code>try</code>-<code>except</code> per gestire dei potenziali errori. La prima parte tenta di creare una connessione con il server usando il metodo <a href="https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysql-connector-connect.html"><code>mysql.connector.connect()</code></a> in base ai dettagli specificati dall'utente negli argomenti. In caso di successo, la funzione stampa un messaggio che comunica che la connessione è avvenuta.</p><p>La parte <code>except</code> del blocco stampa l'errore restituito dal server MySQL nel caso in cui si verifichi un errore durante la connessione. </p><p>Infine, se la connessione avviene con successo, la funzione restituisce un oggetto connection.</p><p>In pratica, lo utilizziamo assegnando l'output della funzione a una variabile, che poi diventa il nostro oggetto connection, a cui possiamo applicare altri metodi per creare altri oggetti utili.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">connection = create_server_connection("localhost", "root", pw)</code></pre><figcaption>Qui, pw è una variabile che contiene la password root per il server MySQL come una stringa.</figcaption></figure><p>Dovremmo ottenere il messaggio che ci dice che la connessione è andata a buon fine:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-146.png" class="kg-image" alt="image-146" width="600" height="400" loading="lazy"></figure><h3 id="creare-un-nuovo-database"><strong><strong>Crea</strong>re un nuovo database</strong></h3><p>Ora che abbiamo stabilito una connessione, il prossimo passo è creare un nuovo database sul server.</p><p>In questo tutorial, lo faremo solo una volta, ma anche in questo caso scriveremo tutto come una funzione riutilizzabile in modo da poterla riusare per progetti futuri.</p><pre><code class="language-python">def create_database(connection, query):
    cursor = connection.cursor()
    try:
        cursor.execute(query)
        print("Database created successfully")
    except Error as err:
        print(f"Error: '{err}'")</code></pre><p>Questa funzione accetta due argomenti, <code>connection</code> (il nostro oggetto connection) e <code>query</code> (una query SQL che scriveremo nel prossimo passaggio), ed esegue la query nel server attraverso la connessione.</p><p>Utilizziamo il metodo cursor sull'oggetto connection per creare un oggetto cursor (MySQL Connector utilizza un <a href="https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/"></a><a href="https://www.freecodecamp.org/italian/news/come-spiegare-concetti-di-programmazione-orientata-agli-oggetti-a-un-bambino-di-6-anni/">paradigma di programmazione orientata agli oggetti</a>, quindi ci sono molti oggetti che ereditano le proprietà dagli oggetti genitori).</p><p>L'oggetto cursor possiede metodi come execute, executemany (che useremo in questo tutorial) insieme ad altri metodi utili.</p><p>Possiamo pensare all'oggetto cursor come a un modo per accedere al cursore lampeggiante in una finestra del terminale del server MySQL.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-148.png" class="kg-image" alt="image-148" width="600" height="400" loading="lazy"></figure><p>Definiamo una query per creare il database e chiamare la funzione:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-149.png" class="kg-image" alt="image-149" width="600" height="400" loading="lazy"></figure><p>Probabilmente questa è la query SQL più semplice.</p><p>Eseguire la funzione <code>create_database</code> con questi argomenti determina la creazione nel server del database chiamato <code>school</code>.</p><p>Perché il nostro database ha questo nome? Questo potrebbe essere un buon momento per guardare più nel dettaglio ciò che andremo a implementare in questo tutorial.</p><h3 id="il-nostro-database"><strong>Il nostro database</strong></h3><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/08/ERD.png" class="kg-image" alt="ERD" width="600" height="400" loading="lazy"><figcaption>Il modello entità-relazione per il nostro database.</figcaption></figure><p>Stiamo per implementare il database per la scuola internazionale di lingua – una scuola di lingua fittizia che offre lezioni di lingua professionali a clienti aziendali.</p><p>Questo <a href="https://it.wikipedia.org/wiki/Modello_E-R">diagramma entità-relazione</a> stabilisce le entità (Teacher, Client, Course e Participant) e definisce le relazioni tra di loro.</p><p>Il codice SQL grezzo, i requisiti del database e i dati per entrare nel database sono contenuti in questo <a href="https://github.com/thecraigd/SQL_School_Tutorial">repository GitHub</a>, ma li vedrai anche proseguendo con questo tutorial.</p><h3 id="connettersi-al-database"><strong>Connettersi al database</strong></h3><p>Ora che abbiamo creato un database nel server MySQL, possiamo modificare la funzione <code>create_server_connection</code> per connetterci direttamente a questo database.</p><p>Nota che è possibile – comune, in realtà – avere più database su un solo server MySQL, così da connetterci sempre e automaticamente al database al quale siamo interessati.</p><p>Possiamo farlo in questo modo:</p><pre><code class="language-python">def create_db_connection(host_name, user_name, user_password, db_name):
    connection = None
    try:
        connection = mysql.connector.connect(
            host=host_name,
            user=user_name,
            passwd=user_password,
            database=db_name
        )
        print("MySQL Database connection successful")
    except Error as err:
        print(f"Error: '{err}'")

    return connection</code></pre><p>Questa è esattamente la stessa funzione, ma ora prendiamo un argomento in più – il nome del database (<code>db_name</code>) – e lo passiamo come argomento del metodo <code>connect()</code>.</p><h3 id="creare-una-funzione-per-eseguire-una-query"><strong><strong>Crea</strong>re una funzione per eseguire una query</strong></h3><p>La funzione finale che creeremo è di fondamentale importanza – una funzione per eseguire una query, che prenderà le nostre query SQL, conservate in Python come stringhe, e le passerà al metodo <code>cursor.execute()</code> per eseguirle sul server.</p><pre><code class="language-python">def execute_query(connection, query):
    cursor = connection.cursor()
    try:
        cursor.execute(query)
        connection.commit()
        print("Query successful")
    except Error as err:
        print(f"Error: '{err}'")</code></pre><p>Questa funzione è esattamente la stessa funzione <code>create_database</code> creata precedentemente, tranne che per l'utilizzo del metodo <code>connection.commit()</code> per assicurare che i comandi definiti nelle query SQL siano implementati.</p><p>Questa funzione sarà il nostro cavallo di battaglia, che useremo (insieme a <code>create_db_connection</code>) per creare tabelle, stabilire relazioni tra tabelle e inserirvi dei dati, aggiornare e cancellare i dati nel nostro database.</p><p>Se sei un esperto di SQL, questa funzione ti permetterà di eseguire tutti i comandi complessi e le query che possono servirti, direttamente da uno script Python. È uno strumento estremamente utile per la gestione dei dati.</p><h2 id="creare-tabelle"><strong><strong>Crea</strong>re tabelle</strong></h2><p>Ora, abbiamo tutto pronto per iniziare a eseguire dei comandi SQL sul nostro server e costruire un database. La prima cosa che vogliamo fare è creare le tabelle necessarie.</p><p>Partiamo con la tabella <code>teacher</code>:</p><pre><code class="language-python">create_teacher_table = """
CREATE TABLE teacher (
  teacher_id INT PRIMARY KEY,
  first_name VARCHAR(40) NOT NULL,
  last_name VARCHAR(40) NOT NULL,
  language_1 VARCHAR(3) NOT NULL,
  language_2 VARCHAR(3),
  dob DATE,
  tax_id INT UNIQUE,
  phone_no VARCHAR(20)
  );
 """

connection = create_db_connection("localhost", "root", pw, db) # Connettiti al database
execute_query(connection, create_teacher_table) # Esegui la query definita</code></pre><p>Prima di tutto, assegniamo il nostro comando SQL a una variabile con un nome appropriato.</p><p>In questo caso, usiamo le virgolette triple per le stringhe multi-riga in Python per memorizzare la query SQL, che poi usiamo come argomento della funzione <code>execute_query</code> per implementarla.</p><p>Nota che la formattazione multi-riga è esclusivamente per migliorare la leggibilità del codice. A SQL o Python non interessa che il comando sia disposto in questo modo. Finché la sintassi è corretta, entrambi i linguaggi la accetteranno.</p><p>Tuttavia, a beneficio di chi legge il codice (anche se sarà soltanto il futuro te!), è molto utile fare questa operazione per rendere il codice più leggibile e comprensibile.</p><p>Ciò è vero anche per la scrittura degli operatori SQL in maiuscolo, una convenzione ampiamente utilizzata e fortemente raccomandata, anche se il software che esegue il codice non è case-sentive e tratterà <code>CREATE TABLE teacher</code> e <code>create table teacher</code> come comandi identici.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-151.png" class="kg-image" alt="image-151" width="600" height="400" loading="lazy"></figure><p>L'esecuzione del codice qui sopra ci dà questi messaggi, che possiamo anche verificare nella linea di comando client del server MySQL:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-152.png" class="kg-image" alt="image-152" width="600" height="400" loading="lazy"></figure><p>Ottimo! E ora creiamo le altre tabelle.</p><pre><code class="language-python">create_client_table = """
CREATE TABLE client (
  client_id INT PRIMARY KEY,
  client_name VARCHAR(40) NOT NULL,
  address VARCHAR(60) NOT NULL,
  industry VARCHAR(20)
);
 """

create_participant_table = """
CREATE TABLE participant (
  participant_id INT PRIMARY KEY,
  first_name VARCHAR(40) NOT NULL,
  last_name VARCHAR(40) NOT NULL,
  phone_no VARCHAR(20),
  client INT
);
"""

create_course_table = """
CREATE TABLE course (
  course_id INT PRIMARY KEY,
  course_name VARCHAR(40) NOT NULL,
  language VARCHAR(3) NOT NULL,
  level VARCHAR(2),
  course_length_weeks INT,
  start_date DATE,
  in_school BOOLEAN,
  teacher INT,
  client INT
);
"""


connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, create_client_table)
execute_query(connection, create_participant_table)
execute_query(connection, create_course_table)</code></pre><p>In questo modo, abbiamo creato le quattro tabelle necessarie per le nostre quattro entità.</p><p>Adesso dobbiamo definire le relazioni tra di loro e creare una o più tabelle per gestire la relazione many-to-many tra le tabelle <code>partecipant</code> e <code>course</code>.</p><p>E lo facciamo esattamente in questo modo:</p><pre><code class="language-python">alter_participant = """
ALTER TABLE participant
ADD FOREIGN KEY(client)
REFERENCES client(client_id)
ON DELETE SET NULL;
"""

alter_course = """
ALTER TABLE course
ADD FOREIGN KEY(teacher)
REFERENCES teacher(teacher_id)
ON DELETE SET NULL;
"""

alter_course_again = """
ALTER TABLE course
ADD FOREIGN KEY(client)
REFERENCES client(client_id)
ON DELETE SET NULL;
"""

create_takescourse_table = """
CREATE TABLE takes_course (
  participant_id INT,
  course_id INT,
  PRIMARY KEY(participant_id, course_id),
  FOREIGN KEY(participant_id) REFERENCES participant(participant_id) ON DELETE CASCADE,
  FOREIGN KEY(course_id) REFERENCES course(course_id) ON DELETE CASCADE
);
"""

connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, alter_participant)
execute_query(connection, alter_course)
execute_query(connection, alter_course_again)
execute_query(connection, create_takescourse_table)</code></pre><p>A questo punto, le tabelle sono state create con i vincoli appropriati, le chiavi primarie, e le relazioni di chiave esterna.</p><h3 id="aggiungere-dati-alle-tabelle"><strong>Aggiungere dati alle tabelle</strong></h3><p>Il prossimo passo è aggiungere dei dati alle tabelle. Usiamo ancora <code>execute_query</code> per eseguire i comandi SQL sul server, partendo di nuovo dalla tabella <code>teacher</code>.</p><pre><code class="language-python">pop_teacher = """
INSERT INTO teacher VALUES
(1,  'James', 'Smith', 'ENG', NULL, '1985-04-20', 12345, '+491774553676'),
(2, 'Stefanie',  'Martin',  'FRA', NULL,  '1970-02-17', 23456, '+491234567890'), 
(3, 'Steve', 'Wang',  'MAN', 'ENG', '1990-11-12', 34567, '+447840921333'),
(4, 'Friederike',  'Müller-Rossi', 'DEU', 'ITA', '1987-07-07',  45678, '+492345678901'),
(5, 'Isobel', 'Ivanova', 'RUS', 'ENG', '1963-05-30',  56789, '+491772635467'),
(6, 'Niamh', 'Murphy', 'ENG', 'IRI', '1995-09-08',  67890, '+491231231232');
"""

connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, pop_teacher)</code></pre><p>Funziona tutto correttamente? Possiamo verificarlo dalla riga di comando del client di MySQL:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-153.png" class="kg-image" alt="image-153" width="600" height="400" loading="lazy"><figcaption>Sembra tutto a posto!</figcaption></figure><p>E adesso riempiamo le tabelle restanti.</p><pre><code class="language-python">pop_client = """
INSERT INTO client VALUES
(101, 'Big Business Federation', '123 Falschungstraße, 10999 Berlin', 'NGO'),
(102, 'eCommerce GmbH', '27 Ersatz Allee, 10317 Berlin', 'Retail'),
(103, 'AutoMaker AG',  '20 Künstlichstraße, 10023 Berlin', 'Auto'),
(104, 'Banko Bank',  '12 Betrugstraße, 12345 Berlin', 'Banking'),
(105, 'WeMoveIt GmbH', '138 Arglistweg, 10065 Berlin', 'Logistics');
"""

pop_participant = """
INSERT INTO participant VALUES
(101, 'Marina', 'Berg','491635558182', 101),
(102, 'Andrea', 'Duerr', '49159555740', 101),
(103, 'Philipp', 'Probst',  '49155555692', 102),
(104, 'René',  'Brandt',  '4916355546',  102),
(105, 'Susanne', 'Shuster', '49155555779', 102),
(106, 'Christian', 'Schreiner', '49162555375', 101),
(107, 'Harry', 'Kim', '49177555633', 101),
(108, 'Jan', 'Nowak', '49151555824', 101),
(109, 'Pablo', 'Garcia',  '49162555176', 101),
(110, 'Melanie', 'Dreschler', '49151555527', 103),
(111, 'Dieter', 'Durr',  '49178555311', 103),
(112, 'Max', 'Mustermann', '49152555195', 104),
(113, 'Maxine', 'Mustermann', '49177555355', 104),
(114, 'Heiko', 'Fleischer', '49155555581', 105);
"""

pop_course = """
INSERT INTO course VALUES
(12, 'English for Logistics', 'ENG', 'A1', 10, '2020-02-01', TRUE,  1, 105),
(13, 'Beginner English', 'ENG', 'A2', 40, '2019-11-12',  FALSE, 6, 101),
(14, 'Intermediate English', 'ENG', 'B2', 40, '2019-11-12', FALSE, 6, 101),
(15, 'Advanced English', 'ENG', 'C1', 40, '2019-11-12', FALSE, 6, 101),
(16, 'Mandarin für Autoindustrie', 'MAN', 'B1', 15, '2020-01-15', TRUE, 3, 103),
(17, 'Français intermédiaire', 'FRA', 'B1',  18, '2020-04-03', FALSE, 2, 101),
(18, 'Deutsch für Anfänger', 'DEU', 'A2', 8, '2020-02-14', TRUE, 4, 102),
(19, 'Intermediate English', 'ENG', 'B2', 10, '2020-03-29', FALSE, 1, 104),
(20, 'Fortgeschrittenes Russisch', 'RUS', 'C1',  4, '2020-04-08',  FALSE, 5, 103);
"""

pop_takescourse = """
INSERT INTO takes_course VALUES
(101, 15),
(101, 17),
(102, 17),
(103, 18),
(104, 18),
(105, 18),
(106, 13),
(107, 13),
(108, 13),
(109, 14),
(109, 15),
(110, 16),
(110, 20),
(111, 16),
(114, 12),
(112, 19),
(113, 19);
"""

connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, pop_client)
execute_query(connection, pop_participant)
execute_query(connection, pop_course)
execute_query(connection, pop_takescourse)</code></pre><p>Molto bene! Abbiamo creato un database completo con relazioni, vincoli e dati in MySQL usando soltanto dei comando Python.</p><p>Abbiamo fatto tutto ciò gradualmente per rendere il procedimento comprensibile. Ma a questo punto puoi ben capire che è possibile inserire facilmente queste operazioni in uno script Python da eseguire con un comando sul terminale. </p><h2 id="leggere-i-dati"><strong>Leggere i dati</strong></h2><p>Adesso abbiamo un database funzionante su cui lavorare. Come analista, è probabile che tu ti trovi a lavorare su database esistenti. Sapere come estrarre i dati da un database per poterli usare in Python è di fondamentale importanza, ed è esattamente ciò che andremo ad affrontare come step successivo.</p><p>Avremo bisogno di un'altra funzione. Invece di <code>cursor.commit()</code>, questa volta useremo <code>cursor.fetchall()</code>, per leggere i dati dal database senza apportare alcun cambiamento. </p><pre><code class="language-python">def read_query(connection, query):
    cursor = connection.cursor()
    result = None
    try:
        cursor.execute(query)
        result = cursor.fetchall()
        return result
    except Error as err:
        print(f"Error: '{err}'")</code></pre><p>Di nuovo, implementeremo la query in modo molto simile usando <code>execute_query</code>. Proviamo con una query semplice per vedere come funziona.</p><pre><code class="language-python">q1 = """
SELECT *
FROM teacher;
"""

connection = create_db_connection("localhost", "root", pw, db)
results = read_query(connection, q1)

for result in results:
  print(result)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-154.png" class="kg-image" alt="image-154" width="600" height="400" loading="lazy"></figure><p>Esattamente ciò che ci aspettavamo. La funzione può operare anche su query più complesse, come questa che contiene un'istruzione <code>JOIN</code> sulle tabelle <code>course</code> e <code>client</code>.</p><pre><code class="language-python">q5 = """
SELECT course.course_id, course.course_name, course.language, client.client_name, client.address
FROM course
JOIN client
ON course.client = client.client_id
WHERE course.in_school = FALSE;
"""

connection = create_db_connection("localhost", "root", pw, db)
results = read_query(connection, q5)

for result in results:
  print(result)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-155.png" class="kg-image" alt="image-155" width="600" height="400" loading="lazy"></figure><p>Per far sì che questi dati siano più utili e pronti da manipolare, possiamo visualizzarli con una formattazione differente.</p><p>Facciamo un paio di esempi per vedere come fare.</p><h3 id="formattare-l-output-in-una-lista"><strong><strong>Formatt</strong>are l'output in una lista</strong></h3><pre><code class="language-python">#Inizializza una lista vuota
from_db = []

# Itera sui risultati e aggiungili alla fine della lista

# Restituisci una lista di tuple
for result in results:
  result = result
  from_db.append(result)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-156.png" class="kg-image" alt="image-156" width="600" height="400" loading="lazy"></figure><h3 id="formattare-l-output-in-una-lista-di-liste"><strong><strong>Formatt</strong>are l'output in una lista di liste</strong></h3><pre><code class="language-python"># Restituisci una lista di liste
from_db = []

for result in results:
  result = list(result)
  from_db.append(result)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-157.png" class="kg-image" alt="image-157" width="600" height="400" loading="lazy"></figure><h3 id="formattare-l-output-in-un-dataframe-pandas">Formattare l'output in un dataframe pandas</h3><p>Quando si tratta di analizzare dati con Python, pandas è il nostro vecchio e fidato amico. È molto semplice convertire l'output del database in un dataframe, e da qui le possibilità sono infinite!</p><pre><code class="language-python"># Restituisci una lista di lista e poi crea un dataframe pandas
from_db = []

for result in results:
  result = list(result)
  from_db.append(result)


columns = ["course_id", "course_name", "language", "client_name", "address"]
df = pd.DataFrame(from_db, columns=columns)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-158.png" class="kg-image" alt="image-158" width="600" height="400" loading="lazy"></figure><p>Auspicabilmente, potrai vedere un gran numero di possibilità dispiegarsi davanti ai tuoi occhi. Con poche righe di codice, possiamo estrarre facilmente tutti i dati che possiamo maneggiare dal database relazionale e convogliarli in un apparato analitico d'avanguardia. Molto utile.</p><h2 id="aggiornare-i-dati"><strong>Aggiornare i dati</strong></h2><p>Durante la manutenzione di un database, potrebbe essere necessario apportare delle modifiche ai dati esistenti. In questa sezione vedremo come fare.</p><p>Ipotizziamo che alla scuola venga notificato che uno dei suoi clienti, Big Business Federation, sta trasferendo la propria sede all'indirizzo 23 Fingiertweg, 14534 Berlin. In questo caso, l'amministratore del database (cioè noi!) dovrà fare una modifica.</p><p>Fortunatamente, possiamo operare tramite la funzione <code>execute_query</code> con l'istruzione SQL <code>UPDATE</code>.</p><pre><code class="language-python">update = """
UPDATE client 
SET address = '23 Fingiertweg, 14534 Berlin' 
WHERE client_id = 101;
"""

connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, update)</code></pre><p>Nota che la clausola <code>WHERE</code> è molto importante. Se eseguiamo questa query senza la clausola <code>WHERE</code>, tutti gli indirizzi della tabella <code>client</code> saranno aggiornati in 23 Fingiertweg. Non esattamente quello che volevamo fare.</p><p>Osserva anche che abbiamo usato <code>WHERE client_id = 101</code> nella query <code>UPDATE</code>. Sarebbe stato possibile anche usare <code>WHERE client_name = 'Big Business Federation'</code> oppure <code>WHERE address = '123 Falschungstraße, 10999 Berlin'</code>, o anche <code>WHERE address LIKE '%Falschung%'</code>.</p><p>La cosa importante è che la clausola <code>WHERE</code> ci permette di identificare in modo unico il dato (o i dati) che vogliamo aggiornare.</p><h2 id="cancellare-i-dati"><strong>Cancellare i dati</strong></h2><p>È possibile eseguire la funzione <code>execute_query</code> per cancellare dei dati, usando l'istruzione <code>DELETE</code>.</p><p>Quando usiamo SQL con i database relazionali, dobbiamo stare attenti a utilizzare il comando <code>DELETE</code>. Questo non è Windows e non c'è nessun pop up di avvertimento "Sei sicuro di voler eliminare questa cosa?" e non c'è un cestino. Una volta eliminato un dato, è andato per sempre.</p><p>Detto ciò, a volte dobbiamo eliminare davvero delle cose. Vediamo come svolgere questa operazione eliminando un corso dalla tabella <code>course</code>.</p><p>Prima di tutto, vediamo quali corsi abbiamo:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-174.png" class="kg-image" alt="image-174" width="600" height="400" loading="lazy"></figure><p>Diciamo che il corso 20, <code>Fortgeschrittenes Russisch</code> (ovvero 'russo avanzato' per noi), sta terminando e vogliamo rimuoverlo dal database.</p><p>A questo punto, non sarai sorpreso di sapere come fare – salviamo il comando SQL come una stringa e poi lo usiamo nel nostro cavallo di battaglia, la funzione <code>execute_query</code>.</p><pre><code class="language-python">delete_course = """
DELETE FROM course 
WHERE course_id = 20;
"""

connection = create_db_connection("localhost", "root", pw, db)
execute_query(connection, delete_course)</code></pre><p>Controlliamo che abbia avuto l'effetto desiderato:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-175.png" class="kg-image" alt="image-175" width="600" height="400" loading="lazy"></figure><p>'Russo avanzato' non c'è più, proprio come volevamo.</p><p>Possiamo eliminare intere colonne usando il comando <code>DROP COLUMN</code> e intere tabelle con <code>DROP TABLE</code>, ma non approfondiremo queste operazioni in questo tutorial.</p><p>Procedi pure e fai le tue prove – non ha importanza se cancelli una colonna o una tabella del database di una scuola immaginaria ed è una buona idea acquisire sicurezza con questi comandi prima di passare a un ambiente di produzione.</p><h3 id="crud">CRUD</h3><p>Adesso siamo in grado di completare le quattro operazioni principali per l'archiviazione permanente di dati.</p><p>Abbiamo imparato come:</p><ul><li>Creare - un nuovo database con tabelle e dati</li><li>Leggere - estrarre dati dal database e memorizzarli in vari formati</li><li>Aggiornare - apportare cambiamenti ai dati esistenti nel database</li><li>Cancellare - eliminare dati che non sono più necessari</li></ul><p>Queste sono delle operazioni incredibilmente utili.</p><p>Prima di terminare, c'è un'ultima abilità piuttosto utile da conoscere.</p><h2 id="creare-dei-dati-da-liste"><strong><strong>Crea</strong>re dei dati da liste</strong></h2><p>Quando abbiamo riempito le nostre tabelle abbiamo visto che possiamo usare il comando SQL <code>INSERT</code> nella funzione <code>execute_query</code> per inserire dati nel database.</p><p>Dato che stiamo usando Python per manipolare il database SQL, sarebbe utile prendere una struttura di dati di Python (come una lista) e inserirla direttamente nel nostro database.</p><p>Potrebbe essere comodo se vogliamo salvare dei log di attività utente sull'app di un social media che abbiamo scritto in Python, o degli input da utenti in un Wiki che abbiamo realizzato, ad esempio. Ci sono molti possibili utilizzi a cui possiamo pensare.</p><p>Questo metodo è anche più sicuro se il database è aperto agli utenti in ogni punto, dato che aiuta a evitare attacchi <a href="https://it.wikipedia.org/wiki/SQL_injection">SQL injection</a> che possono danneggiare o addirittura distruggere un'intero database.</p><p>Per fare ciò, scriveremo una funzione usando il metodo <code>executemany()</code> al posto del più semplice metodo <code>execute()</code> che abbiamo usato finora.</p><pre><code class="language-python">def execute_list_query(connection, sql, val):
    cursor = connection.cursor()
    try:
        cursor.executemany(sql, val)
        connection.commit()
        print("Query successful")
    except Error as err:
        print(f"Error: '{err}'")</code></pre><p>Adesso che abbiamo la funzione, dobbiamo definire un comando SQL (<code>sql</code>) e una lista contenente i valori che vorremmo inserire nel database (<code>val</code>). I valori devono essere salvati come una lista di tuple, un modo piuttosto comune di archiviare dati in Python.</p><p>Per aggiungere due nuovi insegnanti al database, possiamo scrivere del codice come il seguente:</p><pre><code class="language-python">sql = '''
    INSERT INTO teacher (teacher_id, first_name, last_name, language_1, language_2, dob, tax_id, phone_no) 
    VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
    '''
    
val = [
    (7, 'Hank', 'Dodson', 'ENG', None, '1991-12-23', 11111, '+491772345678'), 
    (8, 'Sue', 'Perkins', 'MAN', 'ENG', '1976-02-02', 22222, '+491443456432')
]</code></pre><p>Osserva che all'interno del codice <code>sql</code> usiamo <code>%s</code> come segnaposto per il nostro valore. La somiglianza con il segnaposto <code>%s</code> per una stringa in Python è solo casuale (e francamente, molto fuorviante). In MySQL Connector/Python usiamo <code>%s</code> per tutti i tipi di dati (stringhe, int, date, ecc.).</p><p>Puoi trovare un gran numero di domande su Stackoverflow in cui qualcuno si è confuso e ha provato a usare il segnaposto <code>%d</code> per degli interi, perché lo aveva usato in Python. Qui non funzionerà – dobbiamo usare <code>%s</code> per ogni colonna a cui vogliamo aggiungere un valore. </p><p>La funzione <code>executemany()</code> prende ogni tupla nella lista <code>val</code> e sostituisce al segnaposto i valori rilevanti per la colonna ed esegue il comando SQL per ogni tupla contenuta nella lista.</p><p>Questo può essere effettuato su più righe di dati, purché siano formattate correttamente. Nel nostro esempio, Aggiungeremo due nuovi insegnanti, a scopo illustrativo, ma in principio possiamo aggiungerne quanti ne desideriamo.</p><p>Proseguiamo eseguendo questa query per aggiungere gli insegnanti al database.</p><pre><code class="language-python">connection = create_db_connection("localhost", "root", pw, db)
execute_list_query(connection, sql, val)</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/image-177.png" class="kg-image" alt="image-177" width="600" height="400" loading="lazy"></figure><p>Benvenuti alla scuola internazionale di lingue, Hank e Sue!</p><p>Questa è un'altra funzione estremamente utile, che ci permette di prendere i dati generati all'interno di script e applicazioni Python e di inserirli direttamente nel nostro database.</p><h2 id="conclusione"><strong><strong>Conclusion</strong>e</strong></h2><p>Abbiamo fatto parecchia strada in questo tutorial.</p><p>Abbiamo imparato come usare Python e MySQL Connector per creare un nuovo database sul server MySQL, creare tabelle nel database, definire le relazioni tra di loro e inserire dati.</p><p>Abbiamo parlato di come creare, leggere, aggiornare ed eliminare dati dal database.</p><p>Abbiamo visto come estrarre dati da un database esistente e caricarli in un dataframe pandas, pronti per analisi e ulteriori elaborazioni traendo vantaggio da tutte le possibilità offerte dal PyData stack.</p><p>Andando nella direzione opposta, abbiamo anche imparato come prendere dati generati da script e applicazioni Python, e aggiungerli in un database dove possono essere archiviati in modo sicuro per poi essere recuperati e manipolati in un secondo momento.</p><p>Spero che questo tutorial ti abbia aiutato a vedere come possiamo usare Python e SQL insieme per manipolare i dati al meglio!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ GROUP BY in SQL: un tutorial con esempi di clausole Count, Sum, Average e Having ]]>
                </title>
                <description>
                    <![CDATA[ La clausola GROUP BY è molto utile ma a volte può essere un po' fuorviante. Anche dopo otto anni, ogni volta che uso GROUP BY devo fermarmi e pensare a cosa sta facendo realmente. In questo articolo, vedremo come costruire una clausola GROUP BY, cosa fa alla tua query e ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/group-by-in-sql-un-tutorial-con-esempi-di-clausole-count-sum-average-e-having/</link>
                <guid isPermaLink="false">62eb75e35cda1d06d40dc46f</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Fri, 12 Aug 2022 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/08/sql.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/sql-group-by-clauses-explained/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SQL Group By Tutorial: Count, Sum, Average, and Having Clauses Explained</a>
      </p><p>La clausola <code>GROUP BY</code> è molto utile ma a volte può essere un po' fuorviante.</p><p>Anche dopo otto anni, ogni volta che uso <code>GROUP BY</code> devo fermarmi e pensare a cosa sta facendo realmente.</p><p>In questo articolo, vedremo come costruire una clausola <code>GROUP BY</code>, cosa fa alla tua query e come puoi usarla per eseguire raggruppamenti e raccogliere informazioni sui tuoi dati.</p><p>Parleremo di:</p><ul><li><a href="#creare-il-database">Creare il database</a></li><li><a href="#aggiungere-i-dati">Aggiungere i dati</a></li><li><a href="#come-funziona-group-by">Come funziona <code>GROUP BY</code>?</a></li><li><a href="#scrivere-clausole-group-by">Scrivere clausole <code>GROUP BY</code></a></li><li><a href="#aggregazioni-count-sum-avg-">Aggregazioni (<code>COUNT</code>, <code>SUM</code>, <code>AVG</code>)</a></li><li><a href="#lavorare-con-gruppi-multipli">Lavorare con gruppi multipli</a></li><li><a href="#usare-delle-funzioni-in-group-by">Usare delle funzioni in <code>GROUP BY</code></a></li><li><a href="#filtrare-i-gruppi-con-having">Filtrare i gruppi con <code>HAVING</code></a></li><li><a href="#aggregazioni-con-raggruppamento-implicito">Aggregazioni con raggruppamento implicito</a></li></ul><h2 id="creare-il-database"><strong>Creare il database</strong></h2><p>Prima di poter iniziare a scrivere le nostre query dobbiamo creare un database.</p><p>Per questi esempi, useremo PostgreSQL, ma le query e i concetti mostrati qui possono essere trasferiti facilmente in tutti i sistemi di database moderni (come MySQL, SQL Server e così via).</p><p>Per lavorare con il nostro database PostgreSQL, possiamo usare <a href="https://www.postgresql.org/docs/current/app-psql.html">psql</a> — il programma interattivo a riga di comando di PostgreSQL. Se hai un altro client di database con cui preferisci lavorare andrà bene lo stesso.</p><p>Per iniziare, creiamo il database. Con <a href="https://www.postgresql.org/download/">PostgreSQL</a> già installato, possiamo eseguire sul terminale il comando <code>createdb &lt;nome-database&gt;</code> per creare un nuovo database. Ho chiamato il mio <code>fcc</code>:</p><pre><code>$ createdb fcc
</code></pre><p>Poi, avviamo la console interattiva usando il comando <code>psql</code> e connettiamola al database appena creato con <code>\c &lt;nome-database&gt;</code>:</p><pre><code>$ psql
psql (11.5)
Type "help" for help.

john=# \c fcc
You are now connected to database "fcc" as user "john".
fcc=#
</code></pre><blockquote><strong><strong>Note:</strong> </strong>in questi esempi, ho ripulito l'output <code>psql</code> per migliorare la leggibilità, quindi non preoccuparti se l'output mostrato qui non è esattamente lo stesso che vedi nel tuo terminale.</blockquote><p>Ti suggerisco di seguire questi esempi e di eseguire anche tu le query. Imparerai e ricorderai molto di più lavorando con questi esempi che leggendoli solamente.</p><h2 id="aggiungere-i-dati"><strong>Aggiungere i dati</strong></h2><p>Per i nostri esempi, useremo una tabella che contiene dei dati di vendite di vari prodotti in vari negozi.</p><p>Chiameremo questa tabella <code>vendite</code> e sarà una semplice rappresentazione del registro delle vendite di un negozio, contenente: nome del <code>luogo</code>, nome del <code>prodotto</code>, <code>prezzo</code> e momento della vendita (<code>venduto_il</code>).</p><p>Se stessimo costruendo questa tabella in una applicazione reale, imposteremo delle chiavi esterne ad altre tabelle, ma per illustrare il concetto alla base di <code>GROUP BY</code> useremo semplicemente delle colonne di testo.</p><p>Creiamo la tabella e inseriamo alcuni dati di vendita:</p><pre><code class="language-sql">CREATE TABLE vendite(
  luogo TEXT,
  prodotto TEXT,
  prezzo DECIMAL,
  venduto_il TIMESTAMP
);

INSERT INTO vendite(luogo, prodotto, prezzo, venduto_il) VALUES
('HQ', 'Coffee', 2, NOW()),
('HQ', 'Coffee', 2, NOW() - INTERVAL '1 hour'),
('Downtown', 'Bagel', 3, NOW() - INTERVAL '2 hour'),
('Downtown', 'Coffee', 2, NOW() - INTERVAL '1 day'),
('HQ', 'Bagel', 2, NOW() - INTERVAL '2 day'),
('1st Street', 'Bagel', 3, NOW() - INTERVAL '2 day' - INTERVAL '1 hour'),
('1st Street', 'Coffee', 2, NOW() - INTERVAL '3 day'),
('HQ', 'Bagel', 3, NOW() - INTERVAL '3 day' - INTERVAL '1 hour');
</code></pre><p>Abbiamo tre luoghi: <em><em>HQ</em></em>, <em><em>Downtown</em></em> e <em><em>1st Street.</em></em></p><p>Abbiamo due prodotti, <em><em>Coffee</em></em> e <em><em>Bagel</em></em>, e inseriamo le vendite con diversi valori <code>venduto_il</code> per rappresentare le diverse volte in cui un prodotto è stato venduto.</p><p>Alcune vendite sono di oggi, alcuni di ieri e altre dall'altro ieri.</p><h2 id="come-funziona-group-by"><strong>Come funziona <code>GROUP BY</code>?</strong></h2><p>Per illustrare come funziona la clausola <code>GROUP BY</code>, partiamo da un esempio.</p><p>Immagina una stanza piena di persone nate in diverse nazioni.</p><p>Se vogliamo trovare l'<strong>altezza media per nazione </strong>delle persone nella stanza, dovremmo prima chiedere alle persone di dividersi in gruppi in base al loro Paese di nascita.</p><p>Una volta separate nei vari gruppi, possiamo calcolare l'altezza media in ogni gruppo.</p><p>La clausola <code>GROUP BY</code> funziona in questo modo: prima definiamo come vogliamo raggruppare insieme le righe — poi possiamo svolgere dei calcoli o raggruppamenti sui gruppi.</p><h3 id="gruppi-multipli"><strong>Gruppi multipli</strong></h3><p>Possiamo raggruppare i dati in tanti gruppi o sotto-gruppi quanti ne desideriamo.</p><p>Ad esempio, dopo aver chiesto alle persone di dividersi in gruppi in base alla loro nazione di nascita, potremmo chiedere ai membri di ogni gruppo di suddividersi <em>ulteriormente</em> in altri gruppi <em>in base al colore degli occhi</em>.</p><p>Facendo questo, ci ritroveremo con persone divise in base alla combinazione di nazione di nascita <em>e</em> colore degli occhi. </p><p>Adesso possiamo trovare l'altezza media in ognuno dei gruppi più piccoli e avremo dei risultati più specifici: altezza media <em>per nazione per colore degli occhi</em>.</p><p>Le clausole <code>GROUP BY</code> sono spesso usate in situazioni in cui puoi usare la frase <em><em><strong><strong>per</strong></strong> </em>qualcosa </em>o <em><strong>per ogni</strong><em> </em>qualcosa</em>:</p><ul><li>altezza media <em><em>per</em></em> nazione di nascita</li><li>numero totale di persone <em>per ogni</em> combinazione di colore di occhi e capelli</li><li>vendite totali <em><em>per</em></em> prodotto</li></ul><h2 id="scrivere-clausole-group-by"><strong>Scrivere clausole <code>GROUP BY</code></strong></h2><p>Una clausola <code>GROUP BY</code> è molto semplice da scrivere — usiamo semplicemente le parole chiave <code>GROUP BY</code> e poi specifichiamo il campo (o i campi) che vogliamo raggruppare:</p><pre><code class="language-sql">SELECT ...
FROM vendite
GROUP BY luogo;</code></pre><p>Questa semplice query raggruppa i dati di <code>vendite</code> secondo la colonna <code>luogo</code>.</p><p>Abbiamo fatto il raggruppamento — ma cosa mettiamo in <code>SELECT</code>?</p><p>La cosa ovvia da selezionare è la colonna <code>luogo</code> — la stiamo usando per raggruppare, quindi vogliamo vedere almeno i nomi dei gruppi che abbiamo realizzato:</p><pre><code class="language-sql">SELECT luogo
FROM vendite
GROUP BY luogo;
</code></pre><p>Il risultato è:</p><pre><code>  luogo
------------
 1st Street
 HQ
 Downtown
(3 rows)
</code></pre><p>Se diamo un'occhiata alla tabella con i dati grezzi (<code>SELECT * FROM vendite;</code>), vedremo che abbiamo quattro righe per &nbsp;<em><em>HQ</em></em>, due righe per <em><em>Downtown</em></em> e due righe per <em><em>1st Street:</em></em></p><pre><code> prodotto |    luogo   | prezzo |          venduto_il
---------+------------+-------+----------------------------
 Coffee   | HQ         |    2   | 2020-09-01 09:42:33.085995
 Coffee   | HQ         |    2   | 2020-09-01 08:42:33.085995
 Bagel    | Downtown   |    3   | 2020-09-01 07:42:33.085995
 Coffee   | Downtown   |    2   | 2020-08-31 09:42:33.085995
 Bagel    | HQ         |    2   | 2020-08-30 09:42:33.085995
 Bagel    | 1st Street |    3   | 2020-08-30 08:42:33.085995
 Coffee   | 1st Street |    2   | 2020-08-29 09:42:33.085995
 Bagel    | HQ         |    3   | 2020-08-29 08:42:33.085995
(8 rows)
</code></pre><p>Raggruppando sulla colonna <code>luogo</code>, il database prende queste righe di input e identifica i luoghi unici tra essi — questi luoghi unici saranno i nostri "gruppi"<em>.</em></p><p>E le altre colonne nella tabella?</p><p>Se proviamo a selezionare una colonna come <code>prodotto</code>, che non abbiamo raggruppato...</p><pre><code class="language-sql">SELECT
  luogo,
  prodotto
FROM vendite
GROUP BY luogo;
</code></pre><p>...incapperemo in questo errore:</p><pre><code>ERROR:  column "vendite.prodotto" must appear in the GROUP BY clause or be used in an aggregate function
</code></pre><p>Il problema è che abbiamo <em>otto</em> righe che abbiamo compresso in <em>tre </em>righe.</p><p>Non possiamo ottenere le altre colonne in modo normale — avevamo otto righe e ora ne abbiamo tre.</p><p>Cosa facciamo con le rimanenti cinque righe di dati? Quali delle otto righe di dati dovrebbero essere visualizzate nelle tre righe distinte con i luoghi?</p><p>Non c'è una risposta chiara e definitiva.</p><p>Per utilizzare il resto della tabella di dati, dobbiamo scegliere anche i dati dalle colonne restanti per ottenere tre gruppi di luoghi.</p><p>Questo significa che dobbiamo aggregare o svolgere un calcolo per produrre qualche tipo di informazione di riepilogo per i dati restanti.</p><h2 id="aggregazioni-count-sum-avg-"><strong>Aggregazioni (<code>COUNT</code>, <code>SUM</code>, <code>AVG</code>)</strong></h2><p>Una volta che abbiamo deciso come raggruppare i dati, possiamo svolgere delle aggregazioni sulle altre colonne.</p><p>Stiamo parlando di operazioni come contare il numero di righe per gruppo, sommare un valore specifico all'interno del gruppo oppure mediare un'informazione nel gruppo.</p><p>Per iniziare, troviamo il numero di vendite per luogo.</p><p>Dato che ogni dato nella nostra tabella <code>vendite</code> è una vendita, il numero di vendite per luogo sarà <strong>il numero di righe di ogni gruppo</strong>, per ognuno di essi.</p><p>Per fare questa operazione useremo la funzione di aggregazione <code>COUNT()</code> per contare il numero di righe in ogni gruppo:</p><pre><code class="language-sql">SELECT
  luogo,
  COUNT(*) AS numero_di_vendite
FROM vendite
GROUP BY luogo;
</code></pre><p>Utilizziamo <code>COUNT(*)</code> che conta tutte le righe di input per un gruppo (<code>COUNT()</code> funziona anche con delle espressioni, ma ha un comportamento leggermente diverso).</p><p>Ecco come il database esegue questa query:</p><ul><li><code>FROM vendite</code> — prima di tutto, recupera tutti i dati dalla tabella <code>vendite</code></li><li><code>GROUP BY luogo</code> — poi, determina i gruppi di <code>luogo</code> unici</li><li><code>SELECT ...</code> — infine, seleziona il nome dei luoghi e il conteggio del numero di righe nel gruppo</li></ul><p>Abbiamo dato al conteggio delle righe un alias usando <code>AS numero_di_vendite</code> per rendere l'output più leggibile. Ed ecco quello che otteniamo:</p><pre><code>  luogo     | numero_di_vendite
------------+-------------------
 1st Street |                2
 HQ         |                4
 Downtown   |                2
(3 rows)
</code></pre><p>Il luogo <em><em>1st Street</em></em> ha due vendite, <em><em>HQ</em></em> ne ha quattro e <em><em>Downtown</em></em> ne ha due.</p><p>Qui possiamo vedere come abbiamo preso le colonne di dati rimanenti dalle otto righe indipendenti, condensandole in un'informazione riepilogativa utile per ogni luogo: il numero delle vendite.</p><h3 id="sum"><strong><code>SUM</code></strong></h3><p>Analogamente, invece di contare il numero delle righe in un gruppo, potremmo sommare le informazioni all'interno di ogni gruppo — ad esempio per ottenere il totale incassato dalle vendite di ogni luogo.</p><p>Per farlo possiamo usare la funzione <code>SUM()</code>:</p><pre><code class="language-sql">SELECT
  luogo,
  SUM(prezzo) AS incasso_totale
FROM vendite
GROUP BY luogo;
</code></pre><p>Invece di contare il numero di righe di ogni gruppo, sommiamo le entrate di ogni vendita per ottenere il totale delle vendite per luogo:</p><pre><code>  luogo     | incasso_totale
------------+----------------
 1st Street |             5
 HQ         |             9
 Downtown   |             5
(3 rows)
</code></pre><h3 id="average-avg-"><strong>Average (<code>AVG</code>)</strong></h3><p>Per trovare il prezzo medio delle vendite per luogo dobbiamo semplicemente sostituire la funzione &nbsp;<code>SUM()</code> con la funzione <code>AVG()</code>:</p><pre><code class="language-sql">SELECT
  luogo,
  AVG(prezzo) AS incasso_medio_per_vendita
FROM vendite
GROUP BY luogo;
</code></pre><h2 id="lavorare-con-gruppi-multipli"><strong>Lavorare con gruppi multipli</strong></h2><p>Finora abbiamo lavorato con un singolo gruppo: luogo.</p><p>E se volessimo dividere ulteriormente questo gruppo?</p><p>In modo simile al caso della "<em>nazione di nascita e colore degli occhi</em>" con cui abbiamo iniziato, come potremmo fare se volessimo trovare il numero di vendite <strong>per prodotto per luogo</strong>?</p><p>Tutto ciò di cui abbiamo bisogno è di una seconda condizione di raggruppamento nell'istruzione <code>GROUP BY</code>:</p><pre><code class="language-sql">SELECT ...
FROM vendite
GROUP BY luogo, prodotto;</code></pre><p>Aggiungendo una seconda colonna in <code>GROUP BY</code> dividiamo ulteriormente i gruppi luogo <em>per prodotto<em>.</em></em></p><p>Visto che ora stiamo raggruppando anche secondo la colonna <code>proodotto</code>, possiamo aggiungerla a <code>SELECT</code>!</p><pre><code class="language-sql">SELECT
  luogo,
  prodotto
FROM vendite
GROUP BY luogo, prodotto
ORDER BY luogo, prodotto;
</code></pre><blockquote><em>Nota: sto aggiungendo a queste query delle clausole <code>ORDER BY</code> per rendere l'output più leggibile.</em></blockquote><p>Osservando il risultato del nuovo raggruppamento, possiamo vedere le combinazioni uniche luogo/prodotto:</p><pre><code>   luogo    | prodotto
------------+-----------
 1st Street | Bagel
 1st Street | Coffee
 Downtown   | Bagel
 Downtown   | Coffee
 HQ         | Bagel
 HQ         | Coffee
(6 rows)
</code></pre><p>Ora che abbiamo i nostri gruppi, cosa vogliamo fare con il resto delle colonne di dati?</p><p>Bene, possiamo trovare il numero di vendite per prodotto per luogo usando le stesse funzioni di aggregazione di prima:</p><pre><code class="language-sql">SELECT
  luogo,
  prodotto,
  COUNT(*) AS numero_di_vendite
FROM vendite
GROUP BY luogo, prodotto
ORDER BY luogo, prodotto;
</code></pre><pre><code>   luogo    | prodotto | numero_di_vendite
------------+---------+-------------------
 1st Street |  Bagel   |               1
 1st Street |  Coffee  |               1
 Downtown   |  Bagel   |               1
 Downtown   |  Coffee  |               1
 HQ         |  Bagel   |               2
 HQ         |  Coffee  |               2
(6 rows)
</code></pre><blockquote>Esercizio per il lettore<em><em>:</em></em> trova l'incasso totale per prodotto per luogo.</blockquote><h2 id="usare-delle-funzioni-in-group-by"><strong>Usare delle funzioni in <code>GROUP BY</code></strong></h2><p>Adesso, proviamo a trovare il numero totale di vendite <strong>per giorno</strong>.</p><p>Se seguiamo uno schema simile a quello usato per i luoghi e raggruppiamo la colonna <code>venduto_il</code>...</p><pre><code class="language-sql">SELECT
  venduto_il,
  COUNT(*) AS vendite_per_giorno
FROM vendite
GROUP BY venduto_il
ORDER BY venduto_il;
</code></pre><p>...potremmo aspettarci di avere un gruppo per ogni giorno — invece otteniamo:</p><pre><code>       venduto_il           | vendite_per_giorno
----------------------------+-------------------
 2020-08-29 08:42:33.085995 |               1
 2020-08-29 09:42:33.085995 |               1
 2020-08-30 08:42:33.085995 |               1
 2020-08-30 09:42:33.085995 |               1
 2020-08-31 09:42:33.085995 |               1
 2020-09-01 07:42:33.085995 |               1
 2020-09-01 08:42:33.085995 |               1
 2020-09-01 09:42:33.085995 |               1
(8 rows)
</code></pre><p>Sembra che i nostri dati non siano stati raggruppati affatto — otteniamo ogni riga singolarmente.</p><p>Ma i dati sono stati effettivamente raggruppati! Il problema è che ogni riga <code>venduto_il</code> è un valore unico — quindi ogni riga determina un gruppo!</p><p><code>GROUP BY</code> sta funzionando correttamente, ma questo non è l'output che desideriamo.</p><p>Il responsabile è l'informazione unica ore/minuti/secondi della marca temporale.</p><p>Ogni marca temporale differisce per ore, minuti o secondi — così ogni vendita viene inserita in un nuovo gruppo.</p><p>Dobbiamo convertire ogni valore di data e ora in una data:</p><ul><li><code>2020-09-01 08:42:33.085995</code> =&gt; <code>2020-09-01</code></li><li><code>2020-09-01 09:42:33.085995</code> =&gt; <code>2020-09-01</code></li></ul><p>Una volta convertite in una data, tutte le marche temporali dello stesso giorno restituiranno la stessa data — e i dati delle vendite relative verranno inseriti nello stesso gruppo.</p><p>Per svolgere questa operazione, dobbiamo cambiare la marca temporale di <code>venduto_il</code> in una data:</p><pre><code class="language-sql">SELECT
  venduto_il::DATE AS data,
  COUNT(*) AS vendite_per_giorno
FROM vendite
GROUP BY venduto_il::DATE
ORDER BY venduto_il::DATE;
</code></pre><p>Nella clausola <code>GROUP BY</code> utilizziamo <code>::DATE</code> per troncare la marca temporale in corrispondenza del giorno. Questa espressione taglia effettivamente l'informazione ore/minuti/secondi della marca temporale restituendo solo il giorno.</p><p>In <code>SELECT</code>, possiamo includere la stessa espressione e darle un alias per avere un output più grazioso.</p><p>Per la stessa ragione per cui non potevamo restituire la colonna <code>prodotto</code> senza raggrupparla o eseguire qualche tipo di aggregazione, il database non ci permetterà di restituire <code>venduto_il</code> — tutto quello che si trova in <code>SELECT</code> deve essere in <code>GROUP BY</code> o in qualche tipo di aggregazione sui gruppi risultanti.</p><p>Il risultato è il numero di vendite per giorno che volevamo ottenere in origine:</p><pre><code class="language-sql">    data    | vendite_per_giorno
------------+-------------------
 2020-08-29 |             2
 2020-08-30 |             2
 2020-08-31 |             1
 2020-09-01 |             3
(4 rows)
</code></pre><h2 id="filtrare-i-gruppi-con-having"><strong>Filtrare i gruppi con <code>HAVING</code></strong></h2><p>E ora vediamo come filtrare le righe raggruppate.</p><p>Per farlo, proviamo a trovare i giorni in cui c'è stata più di una vendita<em><em>.</em></em></p><p>Di norma, senza raggruppare, avremmo filtrato le righe usando una clausola <code>WHERE</code>. Ad esempio:</p><pre><code class="language-sql">SELECT *
FROM vendite
WHERE prodotto = 'Coffee';
</code></pre><p>Potremmo fare qualcosa simile a filtrare i gruppi in base al conteggio delle righe...</p><pre><code class="language-sql">SELECT
  venduto_il::DATE AS data,
  COUNT(*) AS vendite_per_giorno
FROM vendite
WHERE COUNT(*) &gt; 1      -- filtrare i gruppi?
GROUP BY venduto_il::DATE;
</code></pre><p>Sfortunatamente, questo approccio non funziona e otteniamo il seguente errore:</p><p><code>ERROR: &nbsp;aggregate functions are not allowed in WHERE</code></p><p>Le funzioni di aggregazione non sono ammesse nelle clausole <code>WHERE</code> perché la clausola <code>WHERE</code> viene valutata <strong>prima </strong>della clausola <code>GROUP BY</code> — non ci sono ancora gruppi su cui effettuare delle operazioni.</p><p>Ma c'è un tipo di clausola che ci permette di filtrare, svolgere aggregazioni ed è valutata <strong>dopo </strong>la clausola <code>GROUP BY</code>: la clausola <code>HAVING</code>.</p><p><strong>La clausola <strong><code>HAVING</code> </strong>è come una clausola<strong> <code>WHERE</code> </strong>ma per i gruppi<strong>.</strong></strong></p><p>Per trovare i giorni in cui abbiamo più di una vendita, possiamo aggiungere una clausola <code>HAVING</code> che verifica il conteggio delle righe del gruppo:</p><pre><code class="language-sql">SELECT
  venduto_il::DATE AS data,
  COUNT(*) AS vendite_per_giorno
FROM vendite
GROUP BY venduto_il::DATE
HAVING COUNT(*) &gt; 1;
</code></pre><p>Questa clausola <code>HAVING</code> esclude ogni riga in cui il conteggio delle righe del gruppo non è maggiore di uno, e il risultato è:</p><pre><code>    data    | vendite_per_giorno
------------+-------------------
 2020-09-01 |             3
 2020-08-29 |             2
 2020-08-30 |             2
(3 rows)
</code></pre><p>Per completezza, ecco l'ordine di esecuzione di tutte le parti di un'istruzione SQL:</p><ul><li><code>FROM</code> — recupera tutte le righe da una tabella</li><li><code>JOIN</code> — esegue un collegamento</li><li><code>WHERE</code> — filtra delle righe</li><li><code>GROUP BY</code> - forma dei gruppi</li><li><code>HAVING</code> - filtra dei gruppi</li><li><code>SELECT</code> - seleziona i dati da restituire</li><li><code>ORDER BY</code> - ordina le righe di output</li><li><code>LIMIT</code> - restituisce un certo numero di righe</li></ul><h2 id="aggregazioni-con-raggruppamento-implicito"><strong>Aggregazioni con raggruppamento implicito</strong></h2><p>L'ultimo argomento che affronterò riguarda le aggregazioni che possono essere eseguite con <code>GROUP BY</code> — o più precisamente le aggregazioni con <em>raggruppamento implicito<em>.</em></em></p><p>Queste aggregazioni sono utili in casi in cui vuoi trovare una particolare aggregazione in una tabella — come l'ammontare totale delle entrate o il valore più grande o più piccolo di una colonna.</p><p>Ad esempio, potremmo trovare il totale delle entrate di tutte le location selezionando la somma dall'intera tabella:</p><pre><code class="language-sql">SELECT SUM(prezzo)
FROM vendite;
</code></pre><pre><code> sum
-----
  19
(1 row)
</code></pre><p>Finora abbiamo incassato €19 dalle vendite in tutti i luoghi.</p><p>Un'altra cosa utile potrebbe essere ottenere il <em>primo </em>o l'<em>ultimo</em> dato di un qualche tipo.</p><p>Ad esempio, qual è la data della prima vendita?</p><p>Per trovarla usiamo la funzione <code>MIN()</code>:</p><pre><code class="language-sql">SELECT MIN(venduto_il)::DATE AS prima_vendita
FROM vendite;
</code></pre><pre><code> prima_vendita
--------------
  2020-08-29
(1 row)
</code></pre><p>Per trovare la data dell'ultima vendita basta sostituire <code>MAX()</code> a <code>MIN()</code>.</p><h3 id="usare-min-max"><strong>Usare <code>MIN</code> / <code>MAX</code></strong></h3><p>Mentre queste semplici query possono essere utili come query indipendenti, fanno spesso parte del filtraggio di query più ampie.</p><p>Ad esempio, proviamo a trovare il totale delle vendite dell'<em>ultimo giorno</em> in cui ci sono state vendite.</p><p>Un modo in cui potremmo scrivere questa query è:</p><pre><code class="language-sql">SELECT
  SUM(prezzo)
FROM vendite
WHERE venduto_il::DATE = '2020-09-01';
</code></pre><p>Questa query funziona, ma abbiamo dovuto includere esplicitamente la data <code>2020-09-01</code>.</p><p><em><em>09/01/2020</em></em> potrebbe essere l'ultima data in cui abbiamo avuto una vendita, ma non sarà sempre quella la data corretta, quindi abbiamo bisogno di una soluzione dinamica.</p><p>Possiamo ottenerla combinando questa query con la funzione <code>MAX()</code> in una subquery:</p><pre><code class="language-sql">SELECT
  SUM(prezzo)
FROM vendite
WHERE venduto_il::DATE = (
  SELECT MAX(venduto_il::DATE)
  FROM vendite
);
</code></pre><p>Nella clausola <code>WHERE</code> troviamo la data più recente della tabella con la subquery: <code>SELECT MAX(venduto_il::DATE) FROM vendite</code>.</p><p>Poi, usiamo la data trovata per filtrare e sommare i prezzi delle vendite.</p><h3 id="raggruppamento-implicito"><strong>Raggruppamento implicito</strong></h3><p>Ho parlato di raggruppamento implicito perché se proviamo a selezionare dei valori aggregati con una colonna non aggregata in questo modo:</p><pre><code class="language-sql">SELECT
  SUM(prezzo),
  luogo
FROM vendite;
</code></pre><p>otteniamo l'errore ormai familiare:</p><pre><code>ERROR:  column "vendite.luogo" must appear in the GROUP BY clause or be used in an aggregate function
</code></pre><h2 id="group-by-uno-strumento"><strong><code>GROUP BY</code> è uno strumento</strong></h2><p>Come molti altri argomenti dello sviluppo software, <code>GROUP BY</code> è uno strumento.</p><p>Ci sono molti modi per scrivere e riscrivere queste query usando combinazioni di <code>GROUP BY</code>, funzioni di aggregazione o altri strumenti come <code>DISTINCT</code>, <code>ORDER BY</code> e <code>LIMIT</code>.</p><p>Comprendere e lavorare con <code>GROUP BY</code> richiede un po' di pratica, ma una volta che ne hai capito il funzionamento scoprirai di essere in grado di risolvere un'intera serie di nuovi problemi!</p><p>Grazie per aver letto questo articolo!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Comandi SQL di base - la lista di query e istruzioni per database che dovresti conoscere ]]>
                </title>
                <description>
                    <![CDATA[ SQL sta per Structured Query Language. I comandi di SQL sono istruzioni utilizzate per comunicare con un database al fine di eseguire attività, funzioni e query con dei dati. I comandi di SQL possono essere utilizzati per cercare nel database e per svolgere altre funzioni come creare o eliminare tabelle, ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/comandi-sql-di-base-la-lista-di-query-e-istruzioni-per-database-che-dovresti-conoscere/</link>
                <guid isPermaLink="false">626950ddc1368a052a8fb854</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Tue, 03 May 2022 08:17:54 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/04/5f9c9e55740569d1a4ca3c8e.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/basic-sql-commands/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Basic SQL Commands - The List of Database Queries and Statements You Should Know</a>
      </p><p>SQL sta per Structured Query Language. I comandi di SQL sono istruzioni utilizzate per comunicare con un database al fine di eseguire attività, funzioni e query con dei dati.</p><p>I comandi di SQL possono essere utilizzati per cercare nel database e per svolgere altre funzioni come creare o eliminare tabelle, e aggiungere o modificare dati.</p><p>Ecco una lista dei comandi SQL di base (a volte chiamati clausole) che dovresti conoscere se devi lavorare con SQL.</p><h3 id="select-e-from"><strong><strong><strong>SELECT </strong>e <strong>FROM</strong></strong></strong></h3><p>Il comando <code>SELECT</code> costituisce la parte di una query che determina quali colonne di dati mostrare nei risultati. Ci sono varie opzioni che puoi applicare per mostrare anche dati che non fanno parte di una colonna della tabella.</p><p>L'esempio qui sotto mostra tre colonne selezionate dalla tabella "student" con il comando <code>FROM</code> e una colonna calcolata. Il database contiene studentID, FirstName e LastName degli studenti. Possiamo combinare le colonne FirstName e LastName per ottenere la colonna calcolata FullName.</p><pre><code class="language-sql">SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName
FROM student;</code></pre><pre><code class="language-text">+-----------+-------------------+------------+------------------------+
| studentID | FirstName         | LastName   | FullName               |
+-----------+-------------------+------------+------------------------+
|         1 | Monique           | Davis      | Monique Davis          |
|         2 | Teri              | Gutierrez  | Teri Gutierrez         |
|         3 | Spencer           | Pautier    | Spencer Pautier        |
|         4 | Louis             | Ramsey     | Louis Ramsey           |
|         5 | Alvin             | Greene     | Alvin Greene           |
|         6 | Sophie            | Freeman    | Sophie Freeman         |
|         7 | Edgar Frank "Ted" | Codd       | Edgar Frank "Ted" Codd |
|         8 | Donald D.         | Chamberlin | Donald D. Chamberlin   |
|         9 | Raymond F.        | Boyce      | Raymond F. Boyce       |
+-----------+-------------------+------------+------------------------+
9 rows in set (0.00 sec)</code></pre><h3 id="create-table"><strong><strong><strong>CREATE TABLE</strong></strong></strong></h3><p>Il comando <code>CREATE TABLE</code> serve per creare una tabella nel database. Puoi specificare il nome della tabella e le colonne che deve contenere.</p><pre><code class="language-sql">CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    column_3 datatype
);</code></pre><h3 id="alter-table"><strong>ALTER TABLE</strong></h3><p><a href="https://dev.mysql.com/doc/refman/5.7/en/alter-table.html"><code>ALTER TABLE</code></a> cambia la struttura di una tabella. Ecco come puoi aggiungere una colonna a un database:</p><pre><code class="language-sql">ALTER TABLE table_name
ADD column_name datatype;</code></pre><h3 id="check"><strong>CHECK</strong></h3><p>La clausola <code>CHECK</code> viene usata per limitare l'intervallo dei valori che possono essere inseriti in una colonna.</p><p>Se definisci una clausola <code>CHECK</code> su una singola colonna, ammetti solo alcuni valori al suo interno. Se definisci una clausola <code>CHECK</code> su una tabella, puoi limitare i valori in determinate colonne sulla base dei valori presenti nella riga corrispondente di altre colonne.</p><p>Il seguente codice crea una clausola <code>CHECK</code> sulla colonna “Age” quando viene creata la tabella “Persons”, e fa sì che non ci possa essere nessuna persona al di sotto di 18 anni.</p><pre><code class="language-sql">CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age&gt;=18)
);</code></pre><p>Per dare un nome a una clausola <code>CHECK</code> o definirne una su colonne multiple puoi usare la seguente sintassi:</p><pre><code class="language-sql">CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age&gt;=18 AND City='Sandnes')
);</code></pre><h3 id="where"><strong>WHERE</strong></h3><p><strong><strong><strong><strong><strong><strong>(</strong></strong></strong></strong><code>AND</code>, <code>OR</code><strong><strong><strong><strong>, <code>IN</code>, <code>BETWEEN</code> </strong></strong></strong>e <strong><strong><strong><code>LIKE</code>)</strong></strong></strong></strong></strong></strong></p><p>La clausola <code>WHERE</code> viene utilizzata per limitare il numero di righe restituite.</p><p>Ad esempio, consideriamo un comando <code>SELECT</code> e i risultati <em>senza</em> la clausola <code>WHERE</code>, per poi aggiungere la clausola <code>WHERE</code> su tutti e cinque i qualifier.</p><pre><code class="language-sql">SELECT studentID, FullName, sat_score, rcd_updated FROM student;</code></pre><pre><code class="language-text">+-----------+------------------------+-----------+---------------------+
| studentID | FullName               | sat_score | rcd_updated         |
+-----------+------------------------+-----------+---------------------+
|         1 | Monique Davis          |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez         |       800 | 2017-08-16 15:34:50 |
|         3 | Spencer Pautier        |      1000 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey           |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene           |      1200 | 2017-08-16 15:34:50 |
|         6 | Sophie Freeman         |      1200 | 2017-08-16 15:34:50 |
|         7 | Edgar Frank "Ted" Codd |      2400 | 2017-08-16 15:35:33 |
|         8 | Donald D. Chamberlin   |      2400 | 2017-08-16 15:35:33 |
|         9 | Raymond F. Boyce       |      2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+
9 rows in set (0.00 sec)</code></pre><p>Ora ripetiamo la query ma limitando le righe restituite con la clausola <code>WHERE</code>.</p><pre><code class="language-sql">STUDENT studentID, FullName, sat_score, recordUpdated
FROM student
WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8)
        AND
        sat_score NOT IN (1000, 1400);</code></pre><pre><code class="language-text">+-----------+----------------------+-----------+---------------------+
| studentID | FullName             | sat_score | rcd_updated         |
+-----------+----------------------+-----------+---------------------+
|         1 | Monique Davis        |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez       |       800 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey         |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene         |      1200 | 2017-08-16 15:34:50 |
|         8 | Donald D. Chamberlin |      2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
5 rows in set (0.00 sec)</code></pre><h3 id="update"><strong>UPDATE</strong></h3><p>Per aggiornare dei dati in una tabella puoi usare l'istruzione <code>UPDATE</code>.</p><p>Utilizza la clausola <code>WHERE</code> per specificare quali dati vuoi aggiornare. È possibile aggiornare più di una colonna alla volta usando la sintassi:</p><pre><code class="language-sql">UPDATE table_name
SET column1 = value1, 
    column2 = value2, ...
WHERE condition;</code></pre><p>Ecco un esempio in cui aggiorniamo la colonna Name per la riga con Id 4:</p><pre><code class="language-sql">UPDATE Person
SET Name = "Elton John"
WHERE Id = 4;</code></pre><p>Puoi anche aggiornare le colonne in una tabella usando i valori di altre tabelle. Con la clausola <code>JOIN</code> puoi ottenere dati da tabelle multiple, secondo la sintassi:</p><pre><code class="language-sql">UPDATE table_name1
SET table_name1.column1 = table_name2.columnA
    table_name1.column2 = table_name2.columnB
FROM table_name1
JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key</code></pre><p>Ecco un esempio di aggiornamento della colonna Manager per tutte le righe:</p><pre><code class="language-sql">UPDATE Person
SET Person.Manager = Department.Manager
FROM Person
JOIN Department ON Person.DepartmentID = Department.ID</code></pre><h3 id="group-by"><strong><strong><strong>GROUP BY</strong></strong></strong></h3><p><code>GROUP BY</code> ti permette di combinare righe e unire dati.</p><p>Ecco la sintassi di <code>GROUP BY</code>:</p><pre><code class="language-sql">SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;</code></pre><h3 id="having"><strong>HAVING</strong></h3><p><code>HAVING</code> ti permette di filtrare i dati combinati con la clausola <code>GROUP BY</code> in modo tale da avere un set limitato di dati da visualizzare.</p><p>Ecco la sintassi di <code>HAVING</code>:</p><pre><code class="language-sql">SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) &gt; value;</code></pre><h3 id="avg-"><strong>AVG()</strong></h3><p> Il comando <code>AVG()</code> viene usato per calcolare la media di una colonna contenente dati numerici, appartenenti a un set di righe individuate da un comando SQL.</p><p>Ecco la sintassi:</p><pre><code class="language-sql">SELECT groupingField, AVG(num_field)
FROM table1
GROUP BY groupingField</code></pre><p>Ed ecco un altro esempio usando la tabella student:</p><pre><code class="language-sql">SELECT studentID, FullName, AVG(sat_score) 
FROM student 
GROUP BY studentID, FullName;</code></pre><h3 id="as"><strong>AS</strong></h3><p><code>AS</code> ti permette di rinominare una colonna o una tabella.</p><pre><code class="language-sql">SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table</code></pre><p>Qui sotto puoi vedere l'output:</p><pre><code class="language-text">+-------------+------------------------+
| AgeOfServer | NonWarrantyPeriod      | 
+-------------+------------------------+
|         36  |                     24 |
|         24  |                     12 | 
|         61  |                     49 |
|         12  |                      0 | 
|          6  |                     -6 |
|          0  |                    -12 | 
|         36  |                     24 |
|         36  |                     24 | 
|         24  |                     12 | 
+-------------+------------------------+</code></pre><p>Puoi usare <code>AS</code> anche per assegnare un nome a una tabella per riferirti ad essa più facilmente nell'istruzione <code>JOIN</code>.</p><pre><code class="language-sql">SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust

JOIN order_table AS ord ON cust.cust_number = ord.cust_number</code></pre><p>Ecco il risultato dell'output:</p><pre><code class="language-text">+-------------+------------+-----------+-----------------+--------------+
| product     | ord_number | price     | cust_name       | cust_number  |
+-------------+------------+-----------+-----------------+--------------+
|     RAM     |   12345    |       124 | John Smith      |  20          |
|     CPU     |   12346    |       212 | Mia X           |  22          |
|     USB     |   12347    |        49 | Elise Beth      |  21          |
|     Cable   |   12348    |         0 | Paul Fort       |  19          |
|     Mouse   |   12349    |        66 | Nats Back       |  15          |
|     Laptop  |   12350    |       612 | Mel S           |  36          |
|     Keyboard|   12351    |        24 | George Z        |  95          |
|     Keyboard|   12352    |        24 | Ally B          |  55          |
|     Air     |   12353    |        12 | Maria Trust     |  11          |
+-------------+------------+-----------+-----------------+--------------+</code></pre><h3 id="order-by"><strong>ORDER BY</strong></h3><p><code>ORDER BY</code> offre un modo per ordinare i risultati secondo una o più colonne nella sezione <code>SELECT</code>. Nell'esempio qui sotto, gli studenti sono stati messi in ordine discendente secondo il loro FullName. L'ordine di default è ascendente (<code>ASC</code>) e per ordinarli al contrario devi usare <code>DESC</code>.</p><pre><code class="language-sql">SELECT studentID, FullName, sat_score
FROM student
ORDER BY FullName DESC;</code></pre><h3 id="count"><strong>COUNT</strong></h3><p><code>COUNT</code> viene usato per contare il numero di righe e restituire il risultato come una colonna.</p><p>Ecco alcuni esempi delle situazioni in cui <code>COUNT</code> risulta utile:</p><ul><li>Contare tutte le righe di una tabella (senza usare <code>GROUP BY</code>)</li><li>Contare il totale di sottogruppi di dati (richiede una sezione <code>GROUP BY</code> nell'istruzione)</li></ul><p>Questo codice fornisce il conteggio di tutte le righe. Nota che puoi dare un nome alla colonna COUNT restituita usando <code>AS</code>.</p><pre><code class="language-sql">SELECT count(*) AS studentCount FROM student; </code></pre><h3 id="delete"><strong>DELETE</strong></h3><p><code>DELETE</code> viene usato per cancellare un dato in una tabella.</p><p>Fai attenzione, perché puoi cancellare tutti i dati di una tabella o soltanto alcuni di essi. Usa la condizione <code>WHERE</code> per specificare quali dati vuoi eliminare, secondo la sintassi:</p><pre><code class="language-sql">DELETE FROM table_name
WHERE condition;</code></pre><p>Ecco un esempio in cui eliminiamo i dati con Id 3 dalla colonna Person:</p><pre><code class="language-sql">DELETE FROM Person
WHERE Id = 3;</code></pre><h3 id="inner-join"><strong>INNER JOIN</strong></h3><p><code>JOIN</code>, o anche detto Inner Join, seleziona dati che hanno valori corrispondenti in due tabelle.</p><pre><code class="language-sql">SELECT * FROM A x JOIN B y ON y.aId = x.Id</code></pre><h3 id="left-join"><strong><strong><strong>LEFT JOIN</strong></strong></strong></h3><p>L'istruzione <code>LEFT JOIN</code> restituisce tutte le righe della tabella di sinistra e le righe corrispondenti di quella di destra. Le righe della tabella di sinistra vengono restituite anche se non c'è corrispondenza con la tabella di destra. Le righe della tabella di sinistra senza corrispondenza presenteranno <code>null</code> per i valori della tabella di destra.</p><pre><code class="language-sql">SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id</code></pre><h3 id="right-join"><strong><strong><strong>RIGHT JOIN</strong></strong></strong></h3><p><code>RIGHT JOIN</code> restituisce tutte le righe della tabella di destra e le corrispondenti di quella di sinistra. In contrapposizione a <code>LEFT JOIN</code>, restituisce tutte le righe della tabella di destra anche se non c'è corrispondenza con la tabella di sinistra. Le righe della tabella di destra senza corrispondenza presenteranno <code>null</code> per i valori della tabella sinistra.</p><pre><code class="language-sql">SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id
</code></pre><h3 id="full-outer-join"><strong><strong><strong>FULL OUTER JOIN</strong></strong></strong></h3><p>Il comando <code>FULL OUTER JOIN</code> restituisce tutte le righe in cui c'è corrispondenza in entrambe le tabelle.</p><p>Se ci sono righe nella tabella di sinistra non corrispondenti alla tabella di destra, non verranno incluse, e se ci sono righe della tabella di destra non corrispondenti alla tabella di sinistra anche queste non verranno incluse verranno incluse.</p><pre><code class="language-sql">SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName</code></pre><h3 id="insert"><strong>INSERT</strong></h3><p><code>INSERT</code> ti permette di inserire dei dati in una tabella.</p><pre><code class="language-sql">INSERT INTO table_name (column_1, column_2, column_3) 
VALUES (value_1, 'value_2', value_3);</code></pre><h3 id="like"><strong>LIKE</strong></h3><p><code>LIKE</code> viene usato insieme a un comando <code>WHERE</code> o <code>HAVING</code> (come parte di <code>GROUP BY</code>) per limitare le righe selezionate quando una colonna presenta un certo pattern di caratteri al suo interno.</p><p>Questo codice seleziona gli studenti che hanno <code>FullName</code> che inizia con “Monique” o termina con “Greene”.</p><pre><code class="language-sql">SELECT studentID, FullName, sat_score, rcd_updated
FROM student 
WHERE 
    FullName LIKE 'Monique%' OR 
    FullName LIKE '%Greene'; </code></pre><pre><code class="language-text">+-----------+---------------+-----------+---------------------+
| studentID | FullName      | sat_score | rcd_updated         |
+-----------+---------------+-----------+---------------------+
|         1 | Monique Davis |       400 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene  |      1200 | 2017-08-16 15:34:50 |
+-----------+---------------+-----------+---------------------+
2 rows in set (0.00 sec)</code></pre><p>Puoi inserire <code>NOT</code> prima di<code>LIKE</code> per escludere le righe contenenti il pattern invece di selezionarle. Questo codice esclude le righe contenenti "cer Pau" e "Ted" nella colonna FullName.</p><pre><code class="language-sql">SELECT studentID, FullName, sat_score, rcd_updated
FROM student 
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';</code></pre><pre><code class="language-text">+-----------+----------------------+-----------+---------------------+
| studentID | FullName             | sat_score | rcd_updated         |
+-----------+----------------------+-----------+---------------------+
|         1 | Monique Davis        |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez       |       800 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey         |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene         |      1200 | 2017-08-16 15:34:50 |
|         6 | Sophie Freeman       |      1200 | 2017-08-16 15:34:50 |
|         8 | Donald D. Chamberlin |      2400 | 2017-08-16 15:35:33 |
|         9 | Raymond F. Boyce     |      2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
7 rows in set (0.00 sec)</code></pre> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
