Linguaggio SQL: cos'è e come utilizzarlo

Linguaggio SQL: cos'è e come utilizzarlo

Giuseppe Speranza Di Giuseppe Speranza


sviluppatori linguaggio di programmazione SQL

 

Structured Query Language, più conosciuto come SQL, è il linguaggio standard per la manipolazione dei Database relazionale. Un Database è una struttura dati che può essere più o meno complessa, in cui memorizzare diversi tipi di informazioni.

Il concetto di memorizzazione ha ricoperto un ruolo fondamentale nello sviluppo delle attuali tecnologie informatiche, supportando la nascita di software e hardware sempre più potenti che avevano bisogno di un seguire un approccio diverso per l'organizzazione dei dati. 

Dobbiamo all'informatico Edgar F. Codd, ricercatore dell'IBM, che negli anni ‘70 ha creato le basi dell’approccio relazionale, introducendo il concetto di tabella basata su uno schema rigido di regole. 

Ogni tabella è formata da delle righe, dette Record, in cui immagazzinare dati. 

Potete immaginarla come un foglio excel che organizza le informazioni in righe e colonne. 

Un esempio: dovete salvare dati relativi ai componenti di un’aula scolastica, ogni riga, della tabella, sarà uno studente, mentre ogni colonna rappresenta un informazione relativa a quello studente; Potremo avere una colonna per il Nome, una per il Cognome e una per il Sesso.  

Cosa molto importante, servirà una colonna per identificare univocamente un singolo studente, in modo da prevenire casi di omonimia. 

Per risolvere questo problema è norma comune creare un campo contenente un valore univoco ID.

Un esempio di tabella può essere il seguente: 

ID

Nome

Cognome

Sesso

1

Giuseppe

Rossi

M

2

Luisa 

Rossi

F

3

Giovanni

Rossi

M 

 

I dati nelle diverse tabelle sono in relazioni attraverso valori collegati tra di loro che permettono di incrociare diversi record in diverse tabelle; inoltre per facilitare la gestione di sempre più crescenti mole di dati, sono nati potenti software denominati DBMS (Database Management System), esempi che sicuramente conoscete sono Oracle, MySQL, SQLite e molti altri. 

Tutti questi software comunicano con un solo linguaggio, o con un suo dialetto, questo linguaggio è proprio SQL.

Linguaggio SQL

SQL (Structured Query Language) è un linguaggio che si avvicina moltissimo a quello umano, per questo motivo risulta di facile comprensione anche per chi è alle prime armi. 

Viene utilizzato per effettuare delle interrogazioni o query al database, con lo scopo di recuperare dati, anche tra più tabelle, sfruttando le relazioni logiche e soprattutto l’operatore JOIN.

Esistono diversi tipi di operazioni che possono esser fatte con il linguaggio SQL, le più comuni consentono di:

  • Creare un Database e una Tabella del database
  • Inserire dati 
  • Aggiornare dati 
  • Cancellare dati 
  • Estrarre e leggere specifici set di dati  

Queste operazioni rientrano nella categoria comunemente conosciuta come CRUD: Create, Read, Update e Delete; parola che ha assunto un significato di carattere generale per indicare tutto ciò che è possibile fare con un set di dati. 

Ognuna di queste operazioni è collegata ad un comando SQL:

  • SELECT: permette di estrarre dati
  • UPDATE: permette di aggiornare i dati
  • DELETE: permette di cancellare dati
  • CREATE DATABASE: permette di creare database 
  • CREATE TABLE: permette di creare tabelle
  • INSERT INTO: permette di inserire nuovi dati in un database

Altri comandi utili sono 

  • CREATE INDEX: crea un indice, utile per velocizzare le query
  • DROP INDEX: cancella uno specifico indice
  • ALTER DATABASE: permette di modificare un database
  • ALTER TABLE: permette di modificare una tabella

Cosa molto importante, ogni query SQL deve finire con un punto e virgola, inoltre SQL è case-insensitive nei confronti dei suoi comandi, ciò vuol dire che scrivere SELECT o select porta allo stesso risultato. Tuttavia è case-sensitive quando si scrivono i nomi delle tabelle o dei campi di riferimento. 

 Sintassi della Select

SELECT * FROM students;

il simbolo * indica “tutto”, questa select recupererà tutti i record della tabella students.

Esempi di query SQL

Partendo dalla creazione della tabella students, analizziamo alcune query SQL e la loro sintassi.

  • Creazione tabella

CREATE TABLE students (
 id INTEGER,
 nome TEXT,
 cognome TEXT,
 sesso TEXT
);

N.B: La creazione di questa tabella deve essere fatta all’interno di un database precedentemente creato.

Procediamo con l’inserimento di qualche dato.

  • Inserimento Dati

INSERT INTO students (id, nome, cognome, sesso)
VALUES (1, 'Giuseppe', 'Rossi', 'M');
  • Lettura Dati

Select * from students;

Questa query estrarrà indistintamente tutti i dati dalla tabella students. Se invece volessimo leggere solo un loro subset, ad esempio solo il nome degli studenti, bisognerà indicare il campo desiderato, sostituendolo all’asterisco in questo modo:

Select nome from students;
  • Modifica Tabella

Se in corso d'opera vi rendete conto che necessitate di tener traccia di un altro dato relativo agli studenti, per esempio la loro età, bisognerà aggiungere una nuova colonna alla tabella students, per far ciò useremo il comando ALTER TABLE:

ALTER TABLE students
ADD COLUMN età INTEGER;

Ora che abbiamo una nuova colonna dovremo valorizzare il valore età per i dati già inseriti, per far questo ci avvarremo del comando UPDATE: 

UPDATE students
SET età = 18
WHERE id = 1;

Da notare l’utilizzo del WHERE, uno degli strumenti più potenti SQL. Viene usato per filtrare i record in base ad un criterio, in questo caso usiamo l’identificativo univoco ID, per esser certi di riferirci allo studente da noi cercato.

Un altro esempio di utilizzo del WHERE, immaginiamo di recuperare tutti gli studenti che si chiamano ‘Giuseppe’

SELECT * FROM students WHERE nome = "Giuseppe";

Attenzione al case-sensitive. Come detto precedentemente, nelle query bisogna fare attenzione al case-sensitive dei campi inseriti, ad esempio se al posto di ‘Giuseppe’ avessimo scritto ‘giuseppe’, con l’iniziale minuscola, la query avrebbe avuto un risultato diverso. SQL è case-insensitive solo per quanto riguarda i suoi comandi proprietari!

Un altro elemento inderogabile nella conoscenza del linguaggio SQL sono i vincoli.

Vincoli

I vincoli servono per garantire l’integrità delle informazioni presenti in un database (data integritye perciò la sua affidabilità.

Per garantire ciò, esistono diversi vincoli di integrità, ossia delle regole che impongono i valori che possono essere inseriti; è possibile applicare queste regole su singole colonne o anche su più tabelle.

Esistono 3 tipi di vincoli da tenere a mente:

  • Vincoli di integrità delle colonne: specificano i valori che possono assumere le singole colonne. 

Esempio: DEFAULT | CHECK | NOT NULL

  • Vincoli di integrità sulle tabelle: specificano delle restrizioni da applicare su tutte le righe di una tabelle.

Esempio: PRIMARY KEY | UNIQUE | CHECK

  • Vincoli di integrità referenziale: impongono restrizioni sui valori che una colonna, in relazione ad un'altra colonna, può assumere.

Esempio: FOREIGN KEY | REFERENCES

Nella fase di realizzazione del database, sarà compito del programmatore implementare sui dati previsti i diversi vincoli che il linguaggio SQL mette a disposizione. 

Rifacendoci all’esempio precedente della creazione della tabella students, proviamo a ricrearla questa volta definendo dei vincoli.  

CREATE TABLE students (
id INTEGER PRIMARY KEY,
nome TEXT NOT NULL,
cognome TEXT NOT NULL,
sesso TEXT,

 età INTEGER DEFAULT 16,

 CHECK (età >= 16) 

);

In questo esempio la PRIMARY KEY, dice alla tabella che quel campo serve ad identificare univocamente una riga, garantendo che non potranno esserci ID con lo stesso valore. Il vincolo NOT NULL garantisce che nel momento di inserimento dati, quei campi dovranno essere obbligatoriamente valorizzati. Il vincolo DEFAULT garantisce che quel campo abbia comunque un valore nel caso in cui non fosse specificato durante la INSERT. Infine abbiamo il vincolo CHECK che inserisce un limite di range al valore che il campo età potrà assumere. Il fallimento di uno di questi vincoli bloccherà il processo di esecuzione delle query.

Ci sono altre parole chiave che SQL possiede e che tutti coloro che si accingono a diventare web developer dovrebbero conoscere.

AS: consente di creare un alias per una colonna o una tabella.

SELECT età AS yearsOld
FROM students;

DISTINCT: consente di filtrare i duplicati da una colonna e ritornare solo valori univoci.

SELECT DISTINCT nome
FROM students;

LIKE: usato nelle WHERE per confrontare valori che rispettano un determinato pattern. Nell’esempio successivo:

SELECT *
FROM students
WHERE nome LIKE 'G%';

IS NULL e IS NOT NULL: usato nella WHERE per filtrare quei record che hanno un valore assegnato o non assegnato al campo indicato dopo la where:

SELECT *
FROM students
WHERE sesso IS NULL;

AND e OR: usato nella WHERE per aggiungere più criteri di valutazione nella condizione di filtro:

SELECT *
FROM students
WHERE nome LIKE 'G%'
AND età > 16;

Esistono altre parole chiave del linguaggio SQL come ORDER BY, LIMIT, BETWEEN ecc.. ragione per cui vi consiglio di approfondire sfruttando le decine di risorse online gratuite e facilmente accessibili. Il mio sito preferito in assoluto è w3schools, dove potrete trovare un elenco esaustivo di tutte le funzionalità SQL con allegato esempi e casi d’uso.

Conclusioni 

La conoscenza del linguaggio SQL resta una delle competenze più importanti in assoluto per tutti coloro che si accingono a lavorare con i dati, tra cui anche la categoria dello sviluppatore web, indipendentemente dal fatto che stanno pian piano prendendo piede le basi di dati basate sul NoSQL, cioè che non utilizzano SQL. 

Non dimentichiamoci di figure come il Data Scientist o il Data Engineer, due figure sempre più richieste sul mercato nazionale e internazionale con prospettive di guadagno davvero sopra la media, un senior Data Engineer in italia arriva a guadagnare fino a 4.000€* netti al mese!

*Fonte: talent.it

Impara a programmare in 3 mesi con il Corso di Coding Hackademy su Laravel PHP

Diventa Sviluppatore web in 3 mesi

Scopri il coding bootcamp Hackademy

Programma Completo