Comandi DDL e DML Essenziali: Creare, Selezionare, Aggiornare, Eliminare

Impara i comandi MySQL DDL e DML fondamentali: CREATE TABLE, INSERT, SELECT, UPDATE e DELETE.

Comandi DDL e DML Essenziali: Creare, Selezionare, Aggiornare, Eliminare

Lavorare con MySQL di solito inizia con due compiti: definire le tue tabelle e lavorare con le righe al loro interno. I comandi DDL e DML essenziali sono il modo per farlo in sicurezza.

I comandi DDL definiscono gli oggetti del database come le tabelle. I comandi DML inseriscono, leggono, aggiornano ed eliminano i dati delle tabelle. Gli esempi seguenti utilizzano una piccola tabella products in modo da poter vedere i comandi nel loro contesto.

Data Definition Language (DDL): Creare 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 permette di definire il progetto per i tuoi dati.

Sintassi di CREATE TABLE

La sintassi di base per creare una tabella implica specificare il nome della tabella e poi definire le sue colonne, inclusi i loro tipi di dati e eventuali vincoli.

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

nome_tabella deve essere unico all'interno del database corrente. Ogni colonna necessita di un nome, un tipo di dato e vincoli opzionali come NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY o DEFAULT valore.

Esempio di CREATE TABLE

Creiamo una semplice tabella products per memorizzare 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 unica.
  • price è un numero decimale obbligatorio.
  • stock_quantity è impostato a 0 di default se non specificato.
  • created_at registra il timestamp di quando la riga è stata creata.

Data Manipulation Language (DML): Lavorare con i Dati

I comandi DML sono usati per gestire i record (righe) all'interno delle tabelle del tuo database. Sono i comandi usati più frequentemente 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. Specificare valori per tutte le colonne:

    INSERT INTO nome_tabella
    VALUES (valore1, valore2, valore3, ...);
    

    L'ordine dei valori deve corrispondere all'ordine delle colonne nella definizione della tabella.

  2. Specificare valori per colonne specifiche:

    INSERT INTO nome_tabella (colonna1, colonna2, colonna3, ...)
    VALUES (valore1, valore2, valore3, ...);
    

    Questo è generalmente preferito perché è più leggibile e meno soggetto a errori se la struttura della tabella cambia.

Esempio di INSERT

Usando la nostra tabella products:

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

-- Inserimento valori per colonne specifiche
INSERT INTO products (product_name, price)
VALUES ('Tastiera Meccanica', 75.99);

-- Inserimento di più righe contemporaneamente
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Mouse Ergonomico', 'Elettronica', 25.00, 120),
('Lampada da Scrivania', 'Articoli per la Casa', 45.00, 75);

Comando SELECT: Recuperare Dati

Il comando SELECT è il pilastro del recupero dei dati. Ti permette di interrogare il tuo database e ottenere 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 modelli (LIKE).
  • ORDER BY nome_colonna [ASC|DESC]: (Opzionale) Ordina il set di risultati per una o più colonne. ASC per ascendente (predefinito), 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 'Elettronica'
SELECT *
FROM products
WHERE category = 'Elettronica';

-- Seleziona i prodotti con un prezzo maggiore di 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 cambiare 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: Fondamentale! Questa clausola determina quali righe verranno aggiornate. Se omessa, tutte le righe nella 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 la giacenza per la 'Tastiera Meccanica'
UPDATE products
SET category = 'Accessori', stock_quantity = 100
WHERE product_name = 'Tastiera Meccanica';

-- **ATTENZIONE**: 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 con un'istruzione SELECT prima per verificare che punti 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: Fondamentale! Questa clausola specifica quali righe eliminare. Se omessa, tutte le righe nella tabella verranno eliminate.

Esempi di DELETE

-- Elimina il prodotto con il nome 'Lampada da Scrivania'
DELETE FROM products
WHERE product_name = 'Lampada da Scrivania';

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

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

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

Concetto Chiave

Comprendere e usare efficacemente i comandi DDL e DML è fondamentale per la gestione del database. CREATE TABLE ti permette di definire la struttura dei tuoi dati, mentre INSERT, SELECT, UPDATE e DELETE ti consentono di popolare, interrogare, modificare e gestire quei dati.

Praticando questi comandi con chiare clausole WHERE, specialmente per UPDATE e DELETE, puoi costruire una solida base per lavorare con 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.