Nelle prime lezioni abbiamo messo le basi sulle database relazionali e PostgreSQL, imparato a lavorare con psql e pgAdmin, e anche come creare e gestire database. Ora è il momento di passare alla creazione del vero "materiale da costruzione" delle database relazionali – le tabelle. Sono proprio le tabelle che conservano tutte le info che poi potremo filtrare, ordinare o unire.
Per creare tabelle in PostgreSQL si usa il comando CREATE TABLE. Questo comando descrive la struttura della tabella: il suo nome, le colonne e i loro tipi di dati.
Struttura generale del comando
Ecco come appare la sintassi base:
CREATE TABLE tabella (
colonna1 tipo_dati constraints,
colonna2 tipo_dati constraints,
...
);
Vediamo le parti:
tabella– nome della tabella (ad esempio,students).colonna1– nome della colonna (ad esempio,id,name).tipo_dati– tipo di dati della colonna (ad esempio,INTEGER,VARCHAR).constraints– vincoli sui dati (ad esempio,NOT NULL,PRIMARY KEY).
Adesso creiamo la nostra prima tabella.
Esempio di creazione di una tabella
Scenario: nel database didattico dobbiamo salvare i dati sugli studenti. Per questo creiamo la tabella students con i campi:
id: identificatore unico dello studente (si incrementa automaticamente);name: nome dello studente (stringa fino a 100 caratteri);age: età dello studente (numero intero positivo).
CREATE TABLE students (
id SERIAL PRIMARY KEY, -- ID unico dello studente
name VARCHAR(100), -- nome
age INTEGER -- età
);
Cosa succede qui:
id SERIAL PRIMARY KEY: viene creata la colonnaidche genera automaticamente numeri unici (1, 2, 3...) per ogni riga. È anche la chiave primaria della tabella.name VARCHAR(100): viene creata una colonna di testo, doveVARCHAR(100)significa che la stringa può essere lunga fino a 100 caratteri.age INTEGER: viene creata una colonna numerica per salvare l'età.
Ora, se eseguiamo questa query in psql o pgAdmin, la tabella students verrà creata.
Tipi di dati per le colonne
Quando crei una tabella è importante scegliere il tipo di dati giusto per ogni colonna. PostgreSQL offre un sacco di tipi, ma partiamo dai più usati.
| Tipo di dati | Descrizione | Esempio di valori |
|---|---|---|
INTEGER |
Numeri interi. Perfetto per età, quantità, identificatori. | 1, 42, 100 |
VARCHAR(n) |
Stringa lunga fino a n caratteri. Ideale per testi con lunghezza limitata. |
'Alice', 'Bob' |
TEXT |
Stringhe senza limiti. Usato per testi lunghi (tipo descrizione di un prodotto). | 'Testo molto lungo...' |
DATE |
Data senza ora. Usato per date di nascita, eventi. | 2023-10-12 |
BOOLEAN |
Tipo logico: TRUE o FALSE. Usato per flag (tipo fatto/non fatto). |
TRUE, FALSE |
Scegliere il tipo di dati giusto
- Se salvi numeri – usa
INTEGER. - Per stringhe con limite di lunghezza – meglio
VARCHAR(n). - Per testo senza limiti – usa
TEXT. - Date e orari salvali in
DATEoTIMESTAMP.
Esempio: creiamo la tabella courses
Supponiamo che nel nostro database dobbiamo anche salvare info sui corsi. Ogni corso ha:
id: identificatore unico;name: nome del corso (stringa fino a 100 caratteri);description: descrizione del corso (testo lungo);start_date: data di inizio corso.
Codice SQL:
CREATE TABLE courses (
id SERIAL PRIMARY KEY, -- ID unico del corso
name VARCHAR(100), -- nome del corso
description TEXT, -- descrizione
start_date DATE -- data di inizio
);
Esercizio pratico
Ora tocca a te creare una tabella! Ecco il compito:
- Crea la tabella
teacherscon i campi:id: identificatore unico.name: nome dell'insegnante (stringa fino a 50 caratteri).subject: materia che insegna (stringa fino a 50 caratteri).hire_date: data di assunzione.
Esempio di codice da eseguire:
CREATE TABLE teachers (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
subject VARCHAR(50),
hire_date DATE
);
Dopo averlo fatto, usa il comando \d teachers in psql per assicurarti che la tabella sia stata creata.
Errori tipici nella creazione delle tabelle
Quando inizi a lavorare con le tabelle, possono capitare errori. Ecco alcune situazioni comuni:
Errore nel nome della tabella o della colonna. In PostgreSQL i nomi non sono case sensitive, ma se usi le virgolette " intorno ai nomi, devi stare attento. Ad esempio, CREATE TABLE "MyTable" crea la tabella "MyTable", mentre mytable non viene riconosciuto come suo nome.
Tipo di dati sbagliato. Se indichi un tipo di dati che non esiste, la query darà errore.
CREATE TABLE example (
column1 STRANGE_TYPE
);
Questa query non funzionerà perché STRANGE_TYPE non esiste.
Dimenticare il PRIMARY KEY. Se ti dimentichi di aggiungere la chiave primaria, la tabella verrà creata, ma sarà più difficile identificare le righe.
GO TO FULL VERSION