Aiuto e documentazione

Introduzione a QueryForge
Cos'è QueryForge?

QueryForge è un ambiente sicuro e controllato progettato per l'apprendimento e la pratica del linguaggio SQL. Permette agli utenti di eseguire query SQL in un ambiente isolato, senza il rischio di danneggiare dati reali o compromettere la sicurezza del sistema.

A chi è rivolto?

Studenti che desiderano imparare e praticare SQL;
Sviluppatori che vogliono testare le loro query prima di eseguirle in produzione;
Insegnanti che necessitano di uno strumento didattico per i loro corsi di database;
Professionisti che desiderano perfezionare le loro competenze SQL.

Caratteristiche principali

• Interfaccia intuitiva per l'esecuzione di query SQL;
• Ambiente sicuro con protezioni contro operazioni pericolose;
• Visualizzazione immediata dei risultati delle query;
• Struttura del database facilmente accessibile;
• Feedback dettagliato sugli errori e sui risultati.

Guida rapida all'utilizzo
Accesso al sistema

1. Accedi alla piattaforma utilizzando le tue credenziali;
2. Verrai reindirizzato all'interfaccia principale del playground.

Interfaccia utente

L'interfaccia del QueryForge è divisa in diverse sezioni:

Area Editor

Editor di query: la parte centrale dove puoi scrivere le tue query SQL
Pulsanti di azione:
  - Esegui: avvia l'esecuzione della query corrente;
  - Pulisci: cancella il contenuto dell'editor;
  - SHOW TABLES: comando rapido per visualizzare tutte le tabelle;
  - SHOW DATABASES: comando rapido per visualizzare i database accessibili.

Pannello di struttura a sinistra

• Visualizza la struttura del database corrente;
• Mostra tabelle, viste e relazioni;
Pulsante Refresh: aggiorna la struttura del database quando vengono apportate modifiche

Area Risultati

• Visualizza i risultati dell'ultima query eseguita
• Mostra eventuali messaggi di errore o avvisi

Operazioni di base
Connessione al database
USE nome_database;

Questo comando imposta il database attivo per le query successive.

Visualizzazione delle tabelle
SHOW TABLES;

Elenca tutte le tabelle disponibili nel database corrente.

Visualizzazione della struttura di una tabella
DESCRIBE nome_tabella;

oppure

SHOW COLUMNS FROM nome_tabella;
Esecuzione di una query

1. Scrivi la tua query nell'editor;
2. Fai clic sul pulsante "Esegui";
3. I risultati appariranno nell'area risultati sottostante.

Limitazioni di sicurezza

Per garantire un ambiente sicuro, QueryForge implementa diverse restrizioni:

Funzioni bloccate

Le seguenti funzioni MySQL sono bloccate per motivi di sicurezza:

LOAD_FILE(): previene la lettura di file dal sistema;
SLEEP(), BENCHMARK(): evita attacchi di tipo Denial of Service;
• Altre funzioni potenzialmente pericolose.

Comandi ad alto privilegio

I seguenti comandi sono disabilitati:

SHOW GRANTS: previene la visualizzazione dei privilegi;
GRANT, REVOKE: previene modifiche ai privilegi;
• Comandi amministrativi come CREATE USER, DROP USER;

Protezioni contro SQL Injection

• Sistema di rilevamento e blocco per pattern di iniezione SQL comuni;
• Analisi delle query per individuare tentativi di bypass delle protezioni.

Altre limitazioni di sicurezza

Clausola WHERE obbligatoria: per prevenire operazioni accidentali su intere tabelle;
Limite nelle clausole LIKE: restrizioni sull'uso di wildcard troppo ampie;
Accesso database limitato: solo il database assegnato all'utente è accessibile;
Sanitizzazione messaggi di errore: gli errori non rivelano dettagli sensibili sulla struttura del database

Esempi pratici
Query di selezione base
SELECT * FROM clienti WHERE città = 'Milano';

Seleziona tutti i clienti di Milano.

Join tra tabelle
SELECT o.ordine_id, c.nome, c.cognome FROM ordini o JOIN clienti c ON o.cliente_id = c.cliente_id WHERE o.data_ordine >= '2023-01-01';

Seleziona gli ordini del 2023 con i nomi dei clienti.

Aggregazione dati
SELECT categoria, COUNT(*) as numero_prodotti, AVG(prezzo) as prezzo_medio FROM prodotti GROUP BY categoria HAVING COUNT(*) > 5;

Calcola il numero di prodotti e il prezzo medio per categoria, mostrando solo categorie con più di 5 prodotti.

Subquery
SELECT nome, cognome FROM clienti WHERE cliente_id IN ( SELECT DISTINCT cliente_id FROM ordini WHERE totale > 1000 );

Seleziona i clienti che hanno effettuato ordini superiori a 1000.

Inserimento dati
INSERT INTO prodotti (nome, categoria, prezzo, disponibilità) VALUES ('Prodotto Nuovo', 'Elettronica', 299.99, 100);

Inserisce un nuovo prodotto nella tabella prodotti.

Aggiornamento dati
UPDATE clienti SET email = '[email protected]' WHERE cliente_id = 42;

Aggiorna l'email di un cliente specifico.

Eliminazione dati
DELETE FROM ordini WHERE stato = 'Annullato' AND data_ordine<'2022-01-01';

Elimina gli ordini annullati precedenti al 2022.

Risoluzione problemi
Errori comuni
Errore: Query senza clausola WHERE non permessa

Problema: Hai tentato di eseguire un UPDATE o DELETE senza specificare una clausola WHERE.

Soluzione: Per sicurezza, aggiungi sempre una clausola WHERE specifica quando modifichi o elimini dati.

Errore: Funzione non consentita

Problema: Hai utilizzato una funzione MySQL vietata per motivi di sicurezza.

Soluzione: Usa alternative sicure o contatta l'amministratore se hai bisogno di funzionalità specifiche.

Errore: Database non accessibile

Problema: Hai tentato di accedere a un database non assegnato al tuo account.

Soluzione: Puoi lavorare solo con il database assegnato al tuo utente.

L'interfaccia non risponde dopo il comando USE

Problema: In precedenza poteva verificarsi un blocco dopo l'esecuzione del comando USE.

Soluzione: Questo problema è stato risolto. Assicurati di utilizzare l'ultima versione del QueryForge.

Best practices

1. Esegui sempre query mirate:
• Specifica sempre le colonne necessarie invece di usare SELECT *;
• Usa clausole WHERE ben definite.

2. Verifica prima le query complesse:
• Per operazioni che modificano molti dati, esegui prima un SELECT con le stesse condizioni;
• Controlla il numero di righe che verranno modificate.

3. Fai attenzione ai JOIN:
• Utilizza sempre la condizione di join appropriata;
• Verifica i risultati con un LIMIT prima di eseguire la query completa.

4. Usa operazioni in batch quando possibile:
• Per grandi volumi di dati, dividi le operazioni in batch più piccoli;
• Questo migliora le prestazioni e riduce il rischio di timeout.

Come ottenere assistenza

Se riscontri problemi non descritti in questa documentazione:

1. Verifica che la tua query rispetti le limitazioni di sicurezza;
2. Rivedi la sintassi SQL per errori comuni;
3. Contatta l'amministratore di sistema per assistenza specifica.