Comandi Essenziali DDL e DML: Create, Select, Update, Delete

Padroneggia le operazioni essenziali del database MySQL con questa guida pratica ai comandi DDL e DML. Impara come definire la struttura delle tabelle usando `CREATE TABLE` e manipolare i dati con `INSERT`, `SELECT`, `UPDATE` e `DELETE`. Questo articolo fornisce sintassi chiara, esempi tratti dal mondo reale e suggerimenti cruciali per una gestione efficace dei dati in MySQL.

41 visualizzazioni

Comandi DDL e DML Essenziali: Create, Select, Update, Delete

Lavorare con i database, specialmente quelli relazionali come MySQL, implica fondamentalmente la definizione della struttura dei dati e la successiva interazione con tali dati. Questo processo è tipicamente suddiviso in due categorie principali di comandi SQL: Data Definition Language (DDL) e Data Manipulation Language (DML). I comandi DDL sono usati per definire e gestire oggetti del database, come le tabelle, mentre i comandi DML sono usati per inserire, recuperare, modificare ed eliminare record all'interno di tali tabelle.

Questa guida ti accompagnerà attraverso i comandi MySQL DDL e DML più essenziali: CREATE TABLE per definire le strutture dei tuoi dati, e INSERT, SELECT, UPDATE e DELETE per manipolare i dati stessi. Padroneggiare questi comandi è un passo cruciale per chiunque voglia gestire e utilizzare efficacemente un database MySQL.

Data Definition Language (DDL): Creazione di Tabelle

I comandi DDL riguardano lo schema e la struttura degli oggetti del tuo database. Il comando DDL più fondamentale per l'archiviazione dei dati è CREATE TABLE, che ti consente di definire il progetto per i tuoi dati.

Sintassi di CREATE TABLE

La sintassi di base per la creazione di una tabella prevede la specificazione del nome della tabella e poi la definizione delle sue colonne, inclusi i loro tipi di dati e qualsiasi vincolo.

CREATE TABLE nome_tabella (
    colonna1 tipo_dato vincoli,
    colonna2 tipo_dato vincoli,
    colonna3 tipo_dato vincoli,
    ...
);
  • nome_tabella: Il nome che vuoi dare alla tua tabella. Deve essere univoco all'interno del database.
  • nome_colonna: Il nome di ogni singolo campo all'interno della tabella.
  • tipo_dato: Specifica il tipo di dato che la colonna conterrà (es. INT per interi, VARCHAR(255) per stringhe a lunghezza variabile, DATE per date, DECIMAL(10, 2) per numeri decimali precisi).
  • vincoli: Regole applicate a una colonna per garantire l'integrità dei dati. I vincoli comuni includono:
    • NOT NULL: Assicura che una colonna non possa avere un valore NULL.
    • UNIQUE: Assicura che tutti i valori in una colonna siano distinti.
    • PRIMARY KEY: Una combinazione di NOT NULL e UNIQUE. Ogni tabella dovrebbe avere una chiave primaria per identificare univocamente ogni riga.
    • FOREIGN KEY: Collega una colonna in una tabella alla chiave primaria di un'altra tabella, applicando l'integrità referenziale.
    • DEFAULT valore: Imposta un valore predefinito per una colonna se nessun valore viene specificato durante l'inserimento.

Esempio di CREATE TABLE

Creiamo una semplice tabella products per archiviare informazioni sugli articoli in un inventario:

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL UNIQUE,
    category VARCHAR(50),
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

In questo esempio:
* product_id è un intero che si incrementa automaticamente e funge da chiave primaria.
* product_name è una stringa obbligatoria che deve essere univoca.
* price è un numero decimale obbligatorio.
* stock_quantity predefinito a 0 se non specificato.
* created_at registra il timestamp di creazione della riga.

Data Manipulation Language (DML): Lavorare con i Dati

I comandi DML sono utilizzati per gestire i record (righe) all'interno delle tabelle del tuo database. Sono i comandi più frequentemente utilizzati per le operazioni quotidiane del database.

Comando INSERT: Aggiungere Nuovi Dati

Il comando INSERT è usato per aggiungere nuove righe di dati in una tabella.

Sintassi di INSERT

Ci sono un paio di modi per usare INSERT:

  1. Specificando valori per tutte le colonne:
    sql INSERT INTO nome_tabella VALUES (valore1, valore2, valore3, ...);
    L'ordine dei valori deve corrispondere all'ordine delle colonne nella definizione della tabella.

  2. Specificando valori per colonne specifiche:
    sql INSERT INTO nome_tabella (colonna1, colonna2, colonna3, ...) VALUES (valore1, valore2, valore3, ...);
    Questo è generalmente preferito in quanto è più leggibile e meno soggetto a errori se la struttura della tabella cambia.

Esempio di INSERT

Usando la nostra tabella products:

-- Inserimento di valori per tutte le colonne (presupponendo AUTO_INCREMENT per product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);

-- Inserimento di valori per colonne specifiche
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);

-- Inserimento di più righe contemporaneamente
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);

Comando SELECT: Recuperare Dati

Il comando SELECT è la pietra angolare del recupero dati. Ti consente di interrogare il tuo database e recuperare dati specifici basati su vari criteri.

Sintassi di SELECT
SELECT colonna1, colonna2, ...
FROM nome_tabella
WHERE condizione
ORDER BY nome_colonna [ASC|DESC]
LIMIT numero;
  • colonna1, colonna2, ...: Le colonne che vuoi recuperare. Usa * per selezionare tutte le colonne.
  • FROM nome_tabella: La tabella che stai interrogando.
  • WHERE condizione: (Opzionale) Filtra le righe in base a una condizione specificata. Le condizioni possono coinvolgere operatori di confronto (=, !=, >, <, >=, <=), operatori logici (AND, OR, NOT) e corrispondenza di pattern (LIKE).
  • ORDER BY nome_colonna [ASC|DESC]: (Opzionale) Ordina il set di risultati in base a una o più colonne. ASC per ascendente (default), DESC per discendente.
  • LIMIT numero: (Opzionale) Limita il numero di righe restituite.
Esempi di SELECT
-- Seleziona tutte le colonne per tutti i prodotti
SELECT *
FROM products;

-- Seleziona solo il nome e il prezzo dei prodotti
SELECT product_name, price
FROM products;

-- Seleziona i prodotti nella categoria 'Electronics'
SELECT *
FROM products
WHERE category = 'Electronics';

-- Seleziona i prodotti con un prezzo superiore a 100, ordinati per prezzo decrescente
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;

-- Seleziona i primi 5 prodotti più costosi
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;

-- Seleziona i prodotti il cui nome inizia con 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';

Comando UPDATE: Modificare Dati Esistenti

Il comando UPDATE ti permette di modificare i record esistenti in una tabella.

Sintassi di UPDATE
UPDATE nome_tabella
SET colonna1 = valore1, colonna2 = valore2, ...
WHERE condizione;
  • nome_tabella: La tabella contenente i record da aggiornare.
  • SET colonna1 = valore1, ...: Specifica quali colonne aggiornare e i loro nuovi valori.
  • WHERE condizione: Cruciale! Questa clausola determina quali righe verranno aggiornate. Se omessa, tutte le righe della tabella verranno aggiornate.
Esempi di UPDATE
-- Aumenta il prezzo del 'Laptop Pro' di 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

-- Aggiorna la categoria e le scorte per la 'Mechanical Keyboard'
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';

-- **AVVISO**: Questo aggiornerebbe il prezzo di TUTTI i prodotti a 10.00
-- UPDATE products
-- SET price = 10.00;

Suggerimento: Usa sempre una clausola WHERE quando aggiorni per assicurarti di modificare solo i record desiderati. Testa la tua clausola WHERE prima con un'istruzione SELECT per verificare che miri alle righe corrette.

Comando DELETE: Rimuovere Dati

Il comando DELETE è usato per rimuovere righe da una tabella.

Sintassi di DELETE
DELETE FROM nome_tabella
WHERE condizione;
  • nome_tabella: La tabella da cui rimuovere le righe.
  • WHERE condizione: Cruciale! Questa clausola specifica quali righe eliminare. Se omessa, tutte le righe della tabella verranno eliminate.
Esempi di DELETE
-- Elimina il prodotto con nome 'Desk Lamp'
DELETE FROM products
WHERE product_name = 'Desk Lamp';

-- Elimina tutti i prodotti esauriti (stock_quantity è 0)
DELETE FROM products
WHERE stock_quantity = 0;

-- **AVVISO**: Questo eliminerebbe TUTTI i record dalla tabella 'products'!
-- DELETE FROM products;

Attenzione: Similmente a UPDATE, omettere la clausola WHERE in un'istruzione DELETE è un'operazione distruttiva che rimuoverà tutti i dati dalla tabella. Usare con estrema cautela.

Comprendere e utilizzare efficacemente i comandi DDL e DML è fondamentale per la gestione dei database. CREATE TABLE ti permette di definire la struttura dei tuoi dati, mentre INSERT, SELECT, UPDATE e DELETE ti danno la possibilità di popolare, interrogare, modificare e gestire tali dati.

Praticando questi comandi con chiare clausole WHERE, specialmente per UPDATE e DELETE, puoi costruire una solida base per lavorare con i database MySQL e garantire l'integrità e l'accuratezza dei tuoi dati. Ricorda sempre di eseguire il backup dei tuoi dati prima di eseguire operazioni potenzialmente distruttive.