PostgreSQL - CREATE Table: A Beginner's Guide

Ciao a tutti, futuri maghi dei database! Oggi ci imbarcheremo in un viaggio emozionante nel mondo di PostgreSQL, concentrandoci in particolare su come creare tabelle. Non preoccupatevi se non avete mai scritto una riga di codice prima – sarò il vostro guida amichevole, e prenderemo tutto passo per passo. Alla fine di questo tutorial, sarete in grado di creare tabelle come un professionista!

PostgreSQL - Create Table

Cos'è una Tabella in PostgreSQL?

Prima di immergerci nei dettagli della creazione di tabelle, capiremo cosa sia effettivamente una tabella. Immagina un foglio di calcolo – sai, quelle griglie con righe e colonne? Una tabella di database è molto simile. È una raccolta di dati correlati organizzati in righe (chiamate anche record) e colonne (chiamate anche campi).

Per esempio, se gestisci una piccola biblioteca, potresti avere una tabella chiamata "Books" con colonne come "Titolo", "Autore", "ISBN" e "Data di Pubblicazione". Ogni riga di questa tabella rappresenterebbe un singolo libro nella tua biblioteca.

La Sintassi di CREATE TABLE

Ora, esaminiamo la sintassi di base per creare una tabella in PostgreSQL:

CREATE TABLE nome_tabella (
colonna1 tipo_dato vincoli,
colonna2 tipo_dato vincoli,
colonna3 tipo_dato vincoli,
....
);

Non lasciatevi spaventare! È più semplice di come sembra. Vediamo nel dettaglio:

  1. CREATE TABLE: Questo è il comando che dice a PostgreSQL che vuoi creare una nuova tabella.
  2. nome_tabella: Qui specifici come vuoi chiamare la tua tabella.
  3. all'interno delle parentesi, elenchi tutte le colonne che vuoi nella tua tabella.
  4. Per ogni colonna, specifichi:
  • Il nome della colonna
  • Il tipo di dati (come INTEGER per numeri interi, TEXT per stringhe, ecc.)
  • Qualsiasi vincolo (come NOT NULL se la colonna deve sempre avere un valore)

Esempi: Creiamo Qualche Tabella!

Esempio 1: Una Semplice Tabella Books

Iniziamo con un esempio semplice. Creeremo una tabella per la nostra biblioteca immaginaria:

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

Vediamo nel dettaglio:

  • book_id: Questo è un identificatore univoco per ogni libro. SERIAL significa che aumenterà automaticamente per ogni nuovo libro aggiunto.
  • title: Può essere fino a 100 caratteri lunga e non può essere vuota (NOT NULL).
  • author: Fino a 50 caratteri, anche questo non può essere vuoto.
  • publication_date: Questo è opzionale (non abbiamo specificato NOT NULL).
  • isbn: Questo è univoco per ogni libro.

Esempio 2: Una Tabella Customers Più Completa

Ora, creiamo una tabella leggermente più complessa per i clienti:

CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);

Questa tabella introduce alcuni nuovi concetti:

  • DEFAULT: Lo usiamo per registration_date per impostarlo automaticamente alla data odierna quando viene aggiunto un nuovo cliente.
  • CHECK: Questo garantisce che loyalty_points non possa mai essere negativo.

Tipi di Dati in PostgreSQL

PostgreSQL offre una vasta gamma di tipi di dati. Ecco alcuni comuni:

Tipo di Dato Descrizione Esempio
INTEGER Numero intero 42
SERIAL Intero auto-incrementante Assegnato automaticamente
VARCHAR(n) Stringa di lunghezza variabile fino a n caratteri 'Ciao, Mondo!'
TEXT Stringa di lunghezza variabile di qualsiasi lunghezza 'Un testo molto lungo...'
DATE Data (nessun'ora) '2023-06-15'
TIMESTAMP Data e ora '2023-06-15 14:30:00'
BOOLEAN Valore Vero/Falso TRUE o FALSE
NUMERIC(p,s) Numero esatto con p cifre (s dopo la virgola) 123.45

Vincoli in PostgreSQL

I vincoli sono regole che impostiamo sulle nostre colonne. Ecco alcuni comuni:

Vincolo Descrizione
NOT NULL La colonna non può contenere un valore null
UNIQUE Tutti i valori nella colonna devono essere diversi
PRIMARY KEY Identifica univocamente ogni riga nella tabella
FOREIGN KEY Garantisce l'integrità referenziale tra due tabelle
CHECK Garantisce che tutti i valori in una colonna soddisfangano una specifica condizione
DEFAULT Imposta un valore predefinito per una colonna

Altri Esempi

Esempio 3: Una Tabella con Chiave Esterna

Creiamo una tabella 'orders' che fa riferimento alla nostra tabella 'customers':

CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);

Questa tabella ha una chiave esterna (customer_id) che fa riferimento alla tabella customers, garantendo che ogni ordine sia associato a un cliente valido.

Esempio 4: Una Tabella con Chiave Primaria Composta

A volte, potresti volere una chiave primaria costituita da più colonne:

CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);

Questa tabella potrebbe essere utilizzata per gestire libri con più autori, o autori che hanno scritto più libri.

Conclusione

Congratulations! You've just taken your first steps into the world of PostgreSQL table creation. Remember, practice makes perfect. Try creating tables for different scenarios – maybe a music library, a recipe book, or even a database for your favorite video games.

Don't be afraid to experiment and make mistakes – that's how we learn! And always remember: in the world of databases, you have the power to CREATE, ALTER, and even DROP entire worlds of data. Use this power wisely, young Padawan!

Happy coding, and may the PostgreSQL be with you!

Credits: Image by storyset