Dispensa introduttiva all’uso del linguaggio
SQL con MySQL / MariaDB
1. Introduzione ai Database Relazionali e al linguaggio SQL
Un database è un insieme organizzato di dati, memorizzati in modo che possano essere
facilmente consultati, aggiornati e manipolati.
I dati vengono solitamente rappresentati in tabelle, composte da righe (record) e colonne
(campi).
Un DBMS (Database Management System) è un software che permette di creare, gestire
e interrogare un database.
Un RDBMS (Relational Database Management System) utilizza il modello relazionale,
che organizza i dati in tabelle correlate tra loro tramite chiavi.
MySQL è un RDBMS open-source, gratuito e molto diffuso.
MariaDB è una versione compatibile e libera di MySQL, sviluppata dalla comunità
open-source.
Caratteristiche principali: - Gratuito e open-source - Multi-piattaforma (Windows, macOS,
Linux) - Conforme allo standard ANSI SQL - Scalabile, veloce e affidabile
Esempi di utilizzo: grandi piattaforme come Facebook, Twitter, Airbnb, [Link],
YouTube e GitHub.
2. Il modello relazionale
Un database relazionale organizza i dati in tabelle collegate da relazioni.
Ogni tabella rappresenta un’entità (ad esempio Clienti o Ordini), e le relazioni tra tabelle
permettono di collegare logicamente i dati.
Esempio di relazione tra tabelle
Tabella Clienti
Paes
ClienteID NomeCliente Città e
1 Mario Rossi Roma Italia
2 Anna Bianchi Milano Italia
Tabella Ordini
OrdineID ClienteID DataOrdine
101 1 2024-10-10
102 2 2024-10-12
La colonna ClienteID nella tabella Ordini si riferisce alla colonna ClienteID nella tabella
Clienti.
3. Il linguaggio SQL
SQL (Structured Query Language) è il linguaggio standard per interagire con database
relazionali.
Con SQL è possibile: - Creare database e tabelle - Inserire, modificare, eliminare e
visualizzare dati - Definire relazioni tra tabelle - Imporre vincoli di integrità sui dati
4. Creazione e gestione dei Database
Creare un database
CREATE DATABASE scuola;
Eliminare un database
DROP DATABASE scuola;
⚠️ Attenzione: elimina definitivamente il database e tutti i suoi dati.
5. Creazione delle Tabelle
Sintassi generale
CREATE TABLE nome_tabella (
colonna1 tipo_dato,
colonna2 tipo_dato,
...
);
Esempio
CREATE TABLE studenti (
ID int,
Nome varchar(50),
Cognome varchar(50),
Città varchar(50)
);
Eliminare una tabella
DROP TABLE studenti;
Svuotare una tabella conservandone la struttura
TRUNCATE TABLE studenti;
6. Valori NULL e vincolo NOT NULL
Un valore NULL indica l’assenza di un dato.
Il vincolo NOT NULL impone che un campo non possa essere lasciato vuoto.
Esempio
CREATE TABLE prodotti (
ID int NOT NULL,
Nome varchar(100) NOT NULL,
Descrizione varchar(255),
Prezzo decimal(10,2) NOT NULL
);
7. Tipi di dati principali in MySQL/MariaDB
Tipo di dato Descrizione Esempio
INT Numero intero 123
DECIMAL(p,s) Numero con parte decimale 12.34
precisa (p = cifre totali, s =
cifre decimali)
FLOAT Numero a virgola mobile 3.14
(approssimato)
VARCHAR(n) Stringa di lunghezza 'Mario'
variabile, fino a n caratteri
CHAR(n) Stringa di lunghezza fissa 'IT'
BOOL / BOOLEAN Valore logico (TRUE/FALSE) TRUE
DATE Data nel formato '2025-10-27'
YYYY-MM-DD
DATETIME Data e ora YYYY-MM-DD '2025-10-27 14:30:00'
HH:MI:SS
8. Chiave primaria (PRIMARY KEY)
La chiave primaria identifica in modo univoco ciascun record della tabella.
Esempio 1 – PRIMARY KEY alla fine
CREATE TABLE studenti (
ID int NOT NULL,
Nome varchar(50),
Cognome varchar(50),
PRIMARY KEY (ID)
);
Esempio 2 – PRIMARY KEY inline
CREATE TABLE studenti (
ID int PRIMARY KEY,
Nome varchar(50),
Cognome varchar(50)
);
9. Incremento automatico (AUTO_INCREMENT)
Il modificatore AUTO_INCREMENT genera automaticamente un valore crescente per ogni
nuovo record.
Esempio
CREATE TABLE studenti (
ID int NOT NULL AUTO_INCREMENT,
Nome varchar(50),
Cognome varchar(50),
PRIMARY KEY (ID)
);
10. Chiavi esterne (FOREIGN KEY) e relazioni tra tabelle
Una chiave esterna (FOREIGN KEY) serve a creare relazioni tra tabelle e garantire la
coerenza dei dati.
Esempio senza nome del vincolo
CREATE TABLE ordini (
OrdineID int NOT NULL AUTO_INCREMENT,
NumeroOrdine int NOT NULL,
ClienteID int,
PRIMARY KEY (OrdineID),
FOREIGN KEY (ClienteID) REFERENCES clienti(ClienteID)
);
Esempio con nome del vincolo
CREATE TABLE ordini (
OrdineID int NOT NULL AUTO_INCREMENT,
NumeroOrdine int NOT NULL,
ClienteID int,
PRIMARY KEY (OrdineID),
CONSTRAINT fk_cliente_ordine
FOREIGN KEY (ClienteID)
REFERENCES clienti(ClienteID)
);
11. Eliminare un vincolo di chiave esterna
Per rimuovere un vincolo FOREIGN KEY è necessario conoscerne il nome.
Esempio
ALTER TABLE ordini
DROP FOREIGN KEY fk_cliente_ordine;
12. Conclusione
Il linguaggio SQL è lo strumento fondamentale per la gestione dei dati nei sistemi
informativi.
Comprendere tabelle, tipi di dati, vincoli e relazioni permette di progettare database
coerenti e affidabili.
13. Esercizio pratico suggerito
1. Creare un database chiamato negozio.
2. Creare le tabelle:
– clienti (ClienteID, Nome, Città)
– ordini (OrdineID, NumeroOrdine, ClienteID)
3. Impostare le chiavi primarie e la chiave esterna ClienteID nella tabella ordini.
4. Inserire alcuni record di esempio.
5. Verificare che non sia possibile inserire un ordine con un ClienteID inesistente.
6. Eliminare e ricreare la chiave esterna con un nome personalizzato.