Che Cosa è SQL e Cosa Sono i Database
Prima di affrontare MySQL e la sua implementazione del linguaggio SQL, è importante comprendere alcuni concetti fondamentali sui database e le tecnologie da essi utilizzate.
I database vengono utilizzati sempre: ogni qualvolta che si seleziona un nome dalla rubrica degli indirizzi per inviare un messaggio di posta elettronica, sia se facciamo una ricerca su Internet.
Quando ci si collega ad una rete, il nome e la password utilizzati vengono verificati in un database, perfino quando facciamo un pagamento con la carta di credito si utilizzano database per la verifica del PIN e della disponibilità.
Eppure, sebbene i database vengono utilizzati in ogni circostanza, continua ad esistere molta confusione su cosa sia effettivamente un database.
Cosa è un Database?
Il termine “database” viene utilizzato in molti modi diversi, ma la definizione che usiamo in queste guide sarà: un database è una raccolta di dati archiviati in modo prestabilito.
Il modo più semplice di vedere un database è immaginandolo come un mobile archivio: il mobile non è altro che un luogo fisico dove archiviare i dati, indipendentemente da cosa siano i dati o da come siano organizzati.
Bisogna prestare attenzione al corretto uso della terminologia, altrimenti si crea confusione; infatti spesso si utilizza il termine “database” in riferimento al software di database su cui si lavora, ciò non è corretto e causa molta confusione, il software di database si chiama in realtà DataBase Management System o DBMS (Sistema di gestione del database).
Il Database è il contenitore creato e gestito attraverso il DBMS, il database può anche essere un file salvato in un hard disk, ma in generale non è rilevante, poiché non si accede mai direttamente al database, si utilizza sempre un DBMS che accede al database per conto dell’ utente.
Cosa è una Tabella?
Continuiamo con l’esempio del mobile archivio, quando vengono immagazzinate informazioni in un mobile archivio, non ci si limitata a buttarle a casaccio in un cassetto, ma si creano dei raccoglitori all’interno del mobile, quindi i dati vengono archiviati in raccoglitori specifici.
Nel mondo dei database tali raccoglitori si chiamano tabelle; una tabella è un file strutturato in grado di memorizzare dati di un tipo specifico.
Una tabella può contenere un catalogo di prodotti, un elenco dei clienti o qualsiasi altro elenco di informazioni.
Il punto importante è che i dati archiviati in una tabella sono dati di un certo tipo, e non si archiviano mai dati di tipo diverso nella stessa tabella (come per esempio un elenco dei clienti e un elenco di ordini) farlo comporterebbe difficoltà nelle successive consultazioni , ha molto più senso creare due tabelle, una per ogni elenco.
Ogni tabella in un database ha un nome che la identifica, il nome è sempre univoco, vale a dire che nessuna altra tabella nel database può avere lo stesso nome.
Le tabelle hanno caratteristiche e proprietà che definiscono il modo in cui vengono archiviati i dati, tra di esse si trovano informazioni sul tipo di dati che è possibile immagazzinare , sulla loro suddivisione, sui nomi dei singoli componenti delle informazioni e molto altro; l’insieme delle informazioni che definiscono una tabella è chiamato schema, gli schemi vengono utilizzati per descrivere sia le singole tabelle all’interno di un database, sia l’intero database (e le relazioni tra le tabelle in esso contenute, se esistono).
Colonne e tipi di dato nelle tabelle
Le tabelle sono costituite da colonne; ogni colonna contiene un particolare tipo di informazione all’ interno di una tabella.
Il modo migliore per capire questo concetto è immaginare che le tabelle di un database siano griglie, simili ai fogli di calcolo; ogni colonna della griglia contiene una particolare parte dell’ informazione.
In un elenco di clienti, per esempio, una colonna contiene il numero di riferimento del cliente, un’altra il suo nome; l’ indirizzo, la città, lo stato e il codice di avviamento postale si trovano in ciascuna colonna, è estremamente importante suddividere correttamente i dati in più colonne (per esempio città, provincia e codice di avviamento postale devono trovarsi su colonne separate), infatti in questo modo diventa possibile ordinare o filtrare i dati per singola colonna.
Ad ogni colonna del database è associato un tipo di dato; il tipo di dato definisce la tipologia dei dati contenuti nella colonna corrispondente.
Se la colonna deve contenere un numero (per esempio il numero dei prodotti di un ordine), il tipo di dato è numerico; se la colonna deve contenere una data, testo, un importo in valuta, note, e cosi via, per specificarlo viene utilizzato il tipo di dato corrispondente.
I tipi di dato limitano il tipo di dati che è possibile immettere in una colonna (per esempio impediscono di inserire caratteri alfabetici in un campo numerico).
I tipi di dato agevolano inoltre il corretto ordinamento dei dati e giocano un ruolo importante nell’ ottimizzazione dell’ utilizzo del disco.
Per questo motivo è necessario porre particolare attenzione alla selezione del tipo di dato adatto nella creazione delle tabelle.
Righe della tabella
I dati di una tabella sono archiviati per righe; ogni record salvato viene archiviato in una riga .
Di nuovo, immaginando una tabella come la griglia di un foglio di calcolo, le colonne verticali della griglia sono le colonne della tabella, e le righe orizzontali sono le righe della tabella (per esempio una tabella di clienti può archiviare un cliente per riga).
Il numero di righe nella tabella equivale al numero di record in essa contenuti.
Chiavi primarie
Ogni riga in una tabella deve avere una colonna (o una serie di colonne) che li identifichi univocamente; una tabella contenente clienti può utilizzare per questo scopo una colonna con il numero di riferimento del cliente, mentre una tabella che contiene ordini può utilizzare il numero dell’ ordine.
Definiamo chiave primaria una colonna (o una serie di colonne) i cui valori identificano univocamente ogni riga di una tabella.
La chiave primaria funge da riferimento a una riga specifica, senza una chiave primaria, l’ aggiornamento o l’ eliminazione di righe specifiche in una tabella diventa estremamente difficile, poiché non esiste alcun modo sicuro per garantire che l’intervento sia effettuato solo sulle righe interessate.
Si può impostare come chiave primaria qualsiasi colonna di una tabella, purché soddisfi i seguenti requisiti:
- Non può esistere più di una riga con lo stesso valore di chiave primaria.
- Ogni riga deve avere un valore di chiave primaria (non possono accettare valori NULL).
Solitamente le chiavi primarie vengono definite in una singola colonna all’ interno di una tabella, ma questo non è necessario ed è possibile utilizzare più colonne come chiave primaria.
Quando vengono utilizzate più colonne, le regole elencate sopra devono essere rispettate su tutte le colonne che costituiscono la chiave primaria e i valori dell’insieme di tutte le colonne devono essere univoci.
Ecco in aggiunta alcune regole pratiche che è bene seguire per le chiavi primarie:
- non modificare i valori delle colonne di chiave primaria
- non utilizzare più volte gli stessi valori nelle colonne di chiave primaria
- non utilizzare nelle colonne di chiave primaria valori che potrebbero cambiare
Che cosa è SQL ?
SQL è l’acronimo di Structured Query Language, linguaggio strutturato basato su query.
SQL è un linguaggio studiato specificatamente per la comunicazione con i database, a differenza di altri linguaggi di programmazione SQL è costituito da pochissime parole ; è una scelta fatta apposta, SQL deve fare una cosa sola e la deve fare bene, cioè: fornire un modo semplice ed efficiente per leggere e scrivere dati da e in un database.
I vantaggi di SQL sono:
- SQL non è un linguaggio proprietario utilizzato da produttori specifici di database, praticamente qualsiasi DBMS supporta SQL, quindi conoscendo questo linguaggio ci consente di interagire con quasi tutti i database.
- SQL è semplice da imparare, le espressioni sono costituite da poche parole in inglese esplicative dell’ azione che compiono.
- Nonostante la sua “apparente” semplicità, in realtà SQL è un linguaggio molto potente e mediante un utilizzo intelligente dei suoi costrutti è possibile fare operazioni molto complesse e sofisticate sui database.
Per quanto mysql possa essere il migliore secondo me andrebbero nominate le alternative presenti sul mercato anche a pagamento
Ciao Marco ,
se vedi qui: https://www.zoomingin.net/2011/03/guida-mysql.html , la scelta di iniziare solo con MySQL è dettata per non confondere chi si mette per la prima volta ad imparare questo linguaggio scrivendo le query secondo i diversi linguaggi ed anche per motivo economico , essendo MySQL open source è possibile utilizzare (e anche modificare) liberamente il software senza doverlo pagare.
In seguito dopo aver terminato la guida a MySQL tratteremo anche PostgreSQL , Oracle , SQLite , DB2 e Microsoft SQL Server .