Torna all'elenco degli articoli Articoli
Tempo di lettura: 15 minuti

Termini SQL che i principianti dovrebbero conoscere - Parte 3

Questa è la terza parte del mio elenco di termini SQL essenziali per i principianti. Nella prima, avete imparato cosa sono le tabelle, i database relazionali e le query. Nella seconda parte del tutorial, vi ho parlato di alias, SQL JOINs, chiavi primarie e subquery. Ora è arrivato il momento di usare termini di database più avanzati. Ma non abbiate paura! Non vi sommergerò di definizioni scientifiche. Vi spiegherò tutto con semplicità, in modo che possiate capire facilmente.

Se volete rivedere i termini SQL di base, consultate i miei articoli precedenti, Termini SQL che i principianti dovrebbero conoscere e Termini SQL che i principianti dovrebbero conoscere - parte 2. Ricordate di mettere tra i preferiti questo articolo per potervi tornare facilmente!

Passiamo al lavoro! Ecco altri termini SQL che dovete conoscere.

Termini SQL

SELEZIONARE

Se avete già iniziato a imparare l'SQL, probabilmente la vostra prima istruzione SQL è stata SELECT. In caso contrario, pensate se avete una buona fonte di conoscenza di SQL.

SELECT è la base dei fondamenti, soprattutto quando si tratta di analisi dei dati. Utilizziamo SELECT per scegliere letteralmente i dati desiderati da un database. Possiamo selezionare qualsiasi cosa, comprese colonne o righe specifiche utilizzando i filtri. Ma prima vediamo l'uso più semplice di SELECT. Supponiamo di avere una tabella che assomiglia a questa Courses che assomiglia a questa:

IDNameDialectTopic
1SQL BasicsStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS

Ora scriviamo la query SQL più semplice utilizzando SELECT e, ad esempio, una clausola WHERE (che ci permette di scegliere dati specifici). Supponiamo di voler trovare il corso SQL Reporting in MS SQL. La query avrà il seguente aspetto:

SELECT Name
FROM Courses
WHERE Dialect=‘MS SQL’
AND Topic=‘SQL Reporting’

Dopo l'istruzione SELECT, abbiamo definito ciò che vogliamo ottenere, nel nostro caso il nome del corso. Dopo FROM, abbiamo scritto da dove devono provenire i dati: dalla tabella. Courses tabella. Quindi, abbiamo utilizzato la clausola WHERE per indicare il tipo di dati che volevamo. Abbiamo specificato due condizioni, quindi abbiamo usato AND per far sapere al database che il risultato desiderato deve corrispondere a entrambe le condizioni. Come si può vedere, questa query non è molto diversa da una comune frase inglese.

Il risultato sarà l'informazione sul corso Creating Basic SQL Reports in SQL Server. Se la vostra azienda utilizza una soluzione di database Microsoft e desiderate prendere decisioni strategiche migliori sulla base dei vostri dati, questo è il corso perfetto per voi. Fa parte del percorso SQL Reporting in MS SQL Server.

Il mio collega Adrian ha scritto un ottimo articolo su come imparare l'istruzione SELECT in SQL. Lì potrete imparare molto di più su SELECT. Una volta apprese le nozioni di base, vale la pena considerare argomenti più avanzati. Se volete imparare bene l'SQL, vi consiglio il nostro SQL Basics corso. È il primo passo per diventare un professionista di SQL.

INSERIMENTO INTO

INSERT INTO è uno dei principali comandi SQL utilizzati in tutti i database più diffusi. È essenziale per lavorare con i dati e le tabelle, soprattutto se si è un ingegnere informatico, un amministratore di database, un ingegnere dei dati o qualcuno che lavora con l'aspetto tecnico dei database.

Cosa fa INSERT INTO? Esattamente quello che dice: inserisce i dati nella tabella. Può trattarsi di una singola riga o di un gruppo di righe.

Nella programmazione si usa l'acronimo CRUD (create, retrieve, update e delete) per descrivere le quattro operazioni di base che si possono fare sui dati. INSERT è una di queste. (In seguito, descriverò anche UPDATE e DELETE. Tutte queste operazioni sono utilizzate per modificare i database).

Prendiamo la stessa tabella, Coursesche abbiamo appena usato per dimostrare il comando SELECT e aggiungiamo alcune informazioni con l'istruzione INSERT (o INSERT INTO).

IDNameDialectTopic
1SQL BasicsStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS

Supponiamo di voler aggiungere un altro corso da LearnSQL.it alla tabella. Questa volta si tratta del comando SQL Practice Set in Standard SQL - ottimo per esercitarsi nelle nuove abilità o per prepararsi a un colloquio di lavoro o a un esame. Aggiungiamolo alla nostra tabella usando il comando INSERT INTO. La nostra query SQL avrà il seguente aspetto:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES (5, ‘SQL Practice Set’, ‘Standard’, ‘Basic’);

Questa operazione aggiunge un'altra riga alla nostra tabella:

IDNameDialectTopic
1SQL BasicsStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS
5SQL Practice SetStandardBasics

È possibile aggiungere dati una riga alla volta o inserire più righe contemporaneamente con un'unica istruzione SQL. Come? In questo modo:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES ('6', ‘a’, ‘b’, ‘c’),
       ('7', ‘x’, ‘y’, ‘z’),
       …;

Se si aggiungono valori a tutte le colonne di una tabella, non è necessario includere i nomi delle colonne nella query. Tuttavia, bisogna fare attenzione a inserire i valori nell'ordine corretto. In caso contrario, si creerà il caos. Se si aggiungessero dati a tutte le colonne, la query avrebbe questo aspetto:

INSERT INTO Courses 
VALUES (5, ‘SQL Practice Set’, ‘Standard’, ‘Basic’);

Ricordare che non è necessario specificare le colonne, ma questo non significa che non si possa fare se si vuole essere sicuri che i dati vadano nei posti giusti.

So che probabilmente state iniziando a usare INSERT INTO; ho descritto il suo utilizzo più semplice. Tuttavia, questa istruzione può essere molto interessante: INSERT INTO può comparire, ad esempio, nelle subquery. Volete saperne di più? Leggete l'articolo Come usare le subquery nelle dichiarazioni INSERT, UPDATE e DELETE. È anche possibile inserire dati da una tabella a un'altra, come spiega la mia amica Rebecca in SQL Insert, Update, and Delete.

Se volete davvero imparare bene INSERT, vi consiglio il nostro How to INSERT, UPDATE, and DELETE Data in SQL corso. Contiene oltre 50 esercizi interattivi, grazie ai quali imparerete i segreti della modifica dei database in SQL.

AGGIORNAMENTO

Ora che conoscete INSERT INTO, vi sarà molto più facile capire UPDATE: è solo un modo per modificare i dati in una o più righe di una tabella. Ma fate attenzione quando usate questo comando; se non prestate attenzione, potete causare molti problemi. Se usato in modo sbagliato, UPDATE può distruggere l'intera tabella. Non c'è comunque da preoccuparsi: basta imparare a usare bene questo comando SQL prima di iniziare ad aggiornare i dati.

Ecco Courses di nuovo:

IDNameDialectTopic
1SQL BasicsStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS
5SQL Practice SetStandardBasics

Supponiamo che abbiate deciso che l'argomento del SQL Practice Set corso non debba essere "Nozioni di base", ma "SQL Practice". Sebbene sia rivolto ai principianti, questo corso è utile anche per gli utenti più avanzati che vogliono rinfrescare le proprie conoscenze. Per cambiare questo aspetto, utilizzeremo il comando UPDATE. La query SQL avrà il seguente aspetto:

UPDATE Courses 
SET Topic='SQL Practice’
WHERE ID=5;

La nostra tabella avrà questo aspetto:

IDNameDialectTopic
1SQL BasicsStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS
5SQL Practice SetStandardSQL Practice

È molto importante applicare la clausola WHERE in questo caso. Se venisse omessa, tutti i valori della colonna topic verrebbero modificati e avremmo questo (il che non è bello):

IDNameDialectTopic
1SQL BasicsStandardSQL Practice
2Revenue Trend Analysis in SQLStandardSQL Practice
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Practice
4PostgreSQL JOINsPostgreSQLSQL Practice
5SQL Practice SetStandardSQL Practice

Come INSERT INTO, UPDATE ci permette di modificare più righe contemporaneamente. Se torniamo alla nostra tabella originale Coursespossiamo, ad esempio, rinominare il dialetto "Standard" in "SQL Standard" per tutti i corsi che utilizzano questo dialetto. Ecco come fare:

UPDATE Courses
SET Dialect='SQL Standard'
WHERE Dialect='Standard';

Cosa pensate che otterremo? Naturalmente, una tabella ancora più bella:

IDNameDialectTopic
1SQL BasicsSQL StandardBasics
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS
5SQL Practice SetSQL StandardSQL Practice

CANCELLA

Il terzo importante comando SQL è DELETE, che rimuove i dati esistenti dalla tabella. Qui vi invito a fare ancora più attenzione che con UPDATE. Se non fate backup regolari dei vostri dati, la cancellazione di qualcosa dal database potrebbe essere irreversibile. Una volta mi è successa una cosa del genere e ne ho tratto una lezione che mi è rimasta impressa per tutta la vita!

Prendiamo la nostra tabella Corsi e rimuoviamo il corso PostgreSQL da essa. Tutto ciò che dobbiamo fare è utilizzare la seguente query:

DELETE FROM Courses 
WHERE Dialect=’PostgreSQL';

E voilà! Non c'è nessun corso PostgreSQL JOINs nella tabella, il che è un peccato perché è davvero ottimo.

Come per i comandi precedenti, DELETE funziona anche su più righe. Se nella tabella ci fossero più corsi con dialect definito come 'PostgreSQL', verrebbero tutti eliminati.

Inoltre, è possibile cancellare tutte le righe della tabella con una sola riga SQL, anche se la tabella ne contiene centinaia di migliaia. Nel nostro caso, sarebbe sufficiente scrivere:

DELETE FROM Courses;

Questo non significa che stiamo eliminando la tabella stessa: la sua struttura, i suoi attributi e i suoi indici rimarranno al loro posto. Tuttavia, non conterrà alcun record. Esiste un altro comando DROP che rimuove l'intera tabella; forse ve ne parlerò in un altro articolo.

ORDINE PER

Se si estraggono dati da una tabella, è una buona idea avere un risultato ordinato. A volte si desidera ordinare i risultati della query. In questo caso è necessario ORDER BY, che consente di ordinare i dati in ordine crescente (A-Z, 1-10) o decrescente (Z-A, 10-1).

Poiché ci piace avere tutto ben organizzato, diamo un'occhiata alla nostra tabella. Courses tabella. Questa volta vogliamo vedere i nomi dei corsi in ordine alfabetico. Se alcuni corsi hanno lo stesso nome ma sono in dialetti SQL diversi, ordineremo anche i nomi dei dialetti in ordine alfabetico:

SELECT *
FROM Courses 
ORDER BY Name;

Il risultato sarà delizioso.

IDNameDialectTopic
3Creating Basic SQL Reports in SQL ServerMS SQLSQL Reporting
4PostgreSQL JOINsPostgreSQLSQL JOINS
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
1SQL BasicsSQL StandardBasics
5SQL Practice SetSQL StandardSql Practice

Nella prima parte del mio tutorial sui termini SQL per principianti, ho descritto GROUP BY. A prima vista, è molto simile a ORDER BY. Tuttavia, ci sono grandi differenze, che spieghiamo nell'articolo Differenza tra GROUP BY e ORDER BY in parole semplici. E cosa succede se nella tabella compaiono valori NULL? Scopritelo leggendo Come ORDER BY e NULL lavorano insieme in SQL.

AVERE

HAVING è usata per filtrare i dati. HAVING è uno degli amici di SELECT's e non può esistere senza di essa; funziona anche con WHERE e GROUP BY. Questa clausola specifica la condizione o le condizioni per un gruppo o un'aggregazione.

Ecco un esempio musicale di ciò che sto dicendo. Prendiamo la tabella music_artists (i dati provengono da Wikipedia). Ecco otto degli artisti che hanno incassato di più.

ArtistCountryGenreSale_mln
The BeatlesUnited KingdomRock600
Elvis PresleyUnited StatesRock and roll500
Michael JacksonUnited StatesPop350
Elton JohnUnited KingdomRock300
MadonnaUnited StatesPop275
Led ZeppelinUnited KingdomRock200
RihannaUnited States BarbadosPop250
Celine DionCanadaPop200

Per calcolare la somma delle vendite degli album degli artisti in base al loro Paese, si scrive questa query:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country;

Il risultato è un elenco dei paesi degli artisti e del numero totale di album venduti dagli artisti di ciascun paese.

CountrySale_mln
United States1375
United Kingdom1100
Canada200

Supponiamo di voler filtrare ulteriormente il risultato e di voler restituire solo i Paesi i cui artisti più importanti hanno venduto più di un miliardo di album:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country
HAVING SUM(Sale_mln)>=1000;

Ci dispiace che il Canada sia rimasto fuori dai risultati. Drake deve vendere qualche album in più. Alla fine, abbiamo ottenuto un confronto tra Stati Uniti e Regno Unito.

Questo esempio è solo la punta dell'iceberg. Se volete saperne di più sulle HAVING, vi consiglio di leggere La clausola HAVING di SQL spiegata e il nostro tutorial sulle HAVING di SQL. Entrambi vi daranno una solida base per l'uso di HAVING in SQL. Potete anche imparare ed esercitarvi nel nostro SQL Basics corso.

Ordine delle operazioni SQL

Immaginate che una query SQL sia una ricetta per un piatto delizioso. Ogni elemento della query rappresenta una fase successiva. Ad esempio, GROUP BY è la fase di cottura e ORDER BY è la guarnizione del piatto.

Una query SQL è spesso composta da diversi comandi che vengono eseguiti dal database in un ordine specifico. Ad esempio, è impossibile ordinare il risultato prima di utilizzare HAVING per filtrarlo; sarebbe un lavoro inutile ordinare tutti i record anziché solo quelli che avremo nel risultato finale.

Anche se si usa SQL ogni giorno, non è necessario memorizzare tutte le regole. È sufficiente ricordare l'ordine generale in cui vengono implementati i singoli comandi e le clausole. Tuttavia, se avete intenzione di diventare uno sviluppatore di software, dovrete sapere cosa succederà nel database dopo aver inserito una determinata query.

Volete saperne di più? Il mio collega Ignacio ha descritto tutto alla perfezione nel suo articolo SQL Order of Operations. Ricordate che, a seconda delle clausole presenti nella query, la sequenza delle azioni può variare. Esiste tuttavia una regola generale, illustrata in questa immagine:

Ordine delle operazioni SQL

Strumenti del database

Diamo ora un'occhiata ai più diffusi sistemi di gestione di database relazionali o RDBMS.

MySQL

MySQL

MySQL è attualmente il DBMS più diffuso al mondo. Secondo uno studio di Stack Overflow, l'anno scorso deteneva più del 50% del mercato, anche se PostgreSQL è molto vicino.

MySQL è stato fondato 25 anni fa in Svezia. Nel 2008 è stato acquistato da Sun Microsystems e dal 2010 è stato sviluppato sotto l'ombrello di Oracle. È interessante notare che il gigante informatico ha anche una propria soluzione di database, che descriverò tra poco.

Questo DBMS è gratuito, funziona per la maggior parte delle applicazioni e viene eseguito sulle piattaforme più diffuse, tra cui Linux, Windows e macOS. Tutto questo, insieme a una comunità attiva e a un buon supporto, rende MySQL una scelta eccellente per molti usi. Personalmente, sono un fan di PostgreSQL, ma MySQL non manca di nulla.

Se volete saperne di più sui database più diffusi, vi consiglio di leggere il nostro articolo sui database più diffusi nel 2020.

Oracle

Oracle

Dire che Oracle è un gigante dell'IT è come dire che Amazon gestisce un negozio online. Le soluzioni di Oracle sono utilizzate, in una forma o nell'altra, dal 90% delle aziende Fortune 100. È stato uno dei principali attori del settore. È stato uno dei principali attori del mercato del software fin dall'inizio della sua esistenza (cioè dalla fine degli anni '70). Forse conoscete Oracle come il proprietario di Java o di OpenOffice.

Curiosità: il nome di Oracle deriva dal nome in codice di uno dei progetti sponsorizzati dalla CIA a cui lavorava il suo co-fondatore, Larry Ellison.

Uno dei prodotti principali di questa azienda è Oracle Database, un DBMS molto popolare. Il più delle volte si trova nelle aziende; molto meno spesso lo si vede nell'uso domestico. Attualmente, le licenze di Oracle DB sono disponibili in diverse versioni:

  • Oracle Enterprise Edition - La versione di punta del DBMS.
  • Oracle Standard Edition - Una versione leggermente ridotta, senza possibilità di espansione.
  • Oracle Standard Edition One - Un po' più ridotta rispetto alla precedente; non è possibile eseguire una configurazione cluster e questa versione può essere utilizzata solo su computer con uno o due processori.
  • Oracle Express Edition - Una versione gratuita che può essere utilizzata solo su hardware con un processore core e 1 GB di RAM. Può gestire fino a 4 GB di dati.
  • Oracle Personal - Per gli utenti privati.
  • Oracle Lite - Per applicazioni mobili.

A parte alcune delle versioni descritte sopra, Oracle Database è un software a pagamento. Questo ha i suoi pro e i suoi contro. L'ovvio svantaggio è il denaro: bisogna pagare l'azienda per utilizzare la sua soluzione. I vantaggi includono un supporto tecnico affidabile e aggiornamenti e sicurezza garantiti. Oracle spende molto denaro per sviluppare i suoi prodotti. Tuttavia, ogni anno perde utenti a favore di DBMS liberi e open-source come PostgreSQL o MySQL.

Come ho scritto in precedenza, sono sorte delle controversie dopo l'acquisizione di MySQL da parte di Oracle. Per ora, entrambi i progetti (MySQL e Oracle DB) vengono sviluppati separatamente, ma nessuno sa quali siano i piani a lungo termine. Forse, col tempo, MySQL cesserà di essere gratuito? Oppure le due soluzioni saranno combinate in una sola? È difficile da prevedere, ma per me è uno degli argomenti a favore della ricerca di alternative a MySQL.

SQLite

SQLite

SQLite è una soluzione da tenere d'occhio. Sta guadagnando sostenitori e popolarità. Il progetto SQLite è in sviluppo dal 2000. Nel 2018, il 19,7% degli sviluppatori professionisti utilizzava questo database; nel 2020, la percentuale supererà il 30%. Non è una coincidenza.

SQLite è un DBMS open-source con caratteristiche eccellenti e gratuito. Mentre PostgreSQL o MS SQL sono sistemi di database più "classici", SQLite è il più scelto dagli sviluppatori di applicazioni mobili. Perché? Principalmente per le sue capacità e caratteristiche.

I dati vengono memorizzati in un file di dimensioni fino a 140 TB. La libreria implementa il motore SQL, consentendo all'applicazione di utilizzare il database senza eseguire un processo separato. Ciò significa che tutto funziona in modo rapido ed efficiente, il che è fondamentale per le applicazioni web. Ogni millisecondo è importante.

SQLite si basa sullo standard SQL-92. Ciò significa che sarete in grado di lavorare con esso dopo aver completato il nostro percorso SQL dalla A alla Z. Naturalmente, SQLite ha i suoi svantaggi e non è una soluzione universale. Ma ha già conquistato la sua posizione sul mercato e non andrà da nessuna parte.

Oltre i termini SQL per principianti

Ecco un'altra puntata dell'elenco dei concetti base di SQL che dovreste conoscere. Spero che la mia traduzione vi abbia aiutato a comprenderli. So che a volte non si tratta di definizioni precise o scientifiche, ma come ex principiante so anche che a volte le definizioni precise o scientifiche non sono di grande aiuto all'inizio.

Se avete problemi con altri termini SQL, fatemelo sapere nei commenti.