Benvenuto nel Sistema di Gestione Aziendale
🎯 Obiettivi del Sistema
Questo sistema ti permette di gestire in modo efficiente e automatizzato tutte le informazioni relative a:
- Impiegati: Dati anagrafici, ruoli, stipendi, date di assunzione
- Dipartimenti: Organizzazione aziendale, manager, budget
- Progetti: Progetti in corso, scadenze, budget, assegnazioni
📊 Statistiche Database
🌟 Funzionalità Principali
📝 Query di Base
Impara a interrogare il database con SELECT, WHERE, ORDER BY e altre istruzioni fondamentali
🔗 Join e Relazioni
Collega dati tra tabelle diverse per ottenere informazioni complete e dettagliate
📊 Aggregazioni
Calcola statistiche, medie, somme e raggruppa dati per analisi avanzate
✏️ Gestione Dati
Inserisci, modifica ed elimina record con INSERT, UPDATE e DELETE
✅ Database Già Configurato!
Il database è già stato inizializzato con dati di esempio. Puoi iniziare subito a esplorare le query o testare il tuo SQL nel Playground!
💡 Suggerimento
Naviga usando il menu a sinistra per esplorare tutte le funzionalità. Inizia dallo Schema Database per capire la struttura, poi passa alle Query di Base!
Schema del Database
🏗️ Struttura del Database
Il database è organizzato in 4 tabelle principali collegate tra loro attraverso chiavi primarie e esterne.
👥 DIPARTIMENTI
👨💼 IMPIEGATI
📋 PROGETTI
🔗 ASSEGNAZIONI
📝 Codice SQL di Creazione
Dati di Esempio
🏢 Dipartimenti
👨💼 Impiegati
📋 Progetti
🔗 Assegnazioni Impiegati-Progetti
Query di Base
📖 Query Fondamentali SQL
In questa sezione imparerai le query essenziali per interrogare il database. Clicca su ogni esempio per eseguirlo!
1️⃣ SELECT - Selezionare Dati
Tutti gli Impiegati
Visualizza tutti i record della tabella impiegati
SELECT * FROM Impiegati
Campi Specifici
Seleziona solo nome, cognome e stipendio
SELECT nome, cognome, stipendio FROM Impiegati
Valori Unici
Trova tutti i ruoli diversi presenti
SELECT DISTINCT ruolo FROM Impiegati
2️⃣ WHERE - Filtrare Dati
Filtro Numerico
Impiegati con stipendio superiore a 50000€
SELECT * FROM Impiegati WHERE stipendio > 50000
Filtro Testuale
Tutti gli sviluppatori
SELECT * FROM Impiegati WHERE ruolo = 'Developer'
Progetti Attivi
Solo i progetti in corso
SELECT * FROM Progetti WHERE stato = 'In Corso'
3️⃣ ORDER BY - Ordinare Risultati
Ordine Decrescente
Impiegati ordinati per stipendio (dal più alto)
SELECT ... ORDER BY stipendio DESC
Ordinamento Multiplo
Ordina per cognome e poi per nome
SELECT * FROM Impiegati ORDER BY cognome, nome
4️⃣ LIMIT - Limitare Risultati
Top 5 Stipendi
I 5 impiegati con gli stipendi più alti
SELECT * FROM Impiegati ORDER BY stipendio DESC LIMIT 5
Query Avanzate
🔗 JOIN - Collegare Tabelle
Cos'è un JOIN?
I JOIN permettono di combinare dati da due o più tabelle basandosi su una relazione tra di esse.
Impiegati con Dipartimento
Lista impiegati e il loro dipartimento
SELECT I.nome, I.cognome, D.nome FROM Impiegati I JOIN Dipartimenti D ...
Progetti per Dipartimento
Tutti i progetti con il dipartimento responsabile
SELECT P.nome, D.nome FROM Progetti P JOIN Dipartimenti D ...
Assegnazioni Complete
Impiegati, progetti e ruoli (JOIN multipli)
SELECT ... FROM Impiegati I JOIN Assegnazioni A ... JOIN Progetti P ...
📊 Funzioni di Aggregazione
COUNT - Contare
Numero totale di impiegati
SELECT COUNT(*) FROM Impiegati
AVG - Media
Stipendio medio aziendale
SELECT AVG(stipendio) FROM Impiegati
SUM - Somma
Budget totale di tutti i progetti
SELECT SUM(budget) FROM Progetti
MAX/MIN
Stipendio massimo e minimo
SELECT MAX(stipendio), MIN(stipendio) FROM Impiegati
📋 GROUP BY - Raggruppare Dati
Statistiche per Ruolo
Numero di impiegati e stipendio medio per ogni ruolo
SELECT ruolo, COUNT(*), AVG(stipendio) FROM Impiegati GROUP BY ruolo
Impiegati per Dipartimento
Conta impiegati in ogni dipartimento
SELECT D.nome, COUNT(I.id_impiegato) FROM ... GROUP BY D.nome
Progetti per Stato
Raggruppa progetti per stato con budget
SELECT stato, COUNT(*), SUM(budget) FROM Progetti GROUP BY stato
🎯 HAVING - Filtrare Gruppi
Ruoli con Stipendio Alto
Solo i ruoli con stipendio medio > 45000€
SELECT ruolo, AVG(stipendio) ... HAVING AVG(stipendio) > 45000
Dipartimenti Grandi
Dipartimenti con almeno 2 impiegati
... GROUP BY D.nome HAVING COUNT(I.id_impiegato) >= 2
Gestione Dati (INSERT, UPDATE, DELETE)
⚠️ Attenzione
Le modifiche al database sono permanenti in questa sessione. Ricarica la pagina per resettare i dati originali.
➕ INSERT - Inserire Nuovi Dati
Inserisci Nuovo Impiegato
Aggiungi Marco Bianchi al database
INSERT INTO Impiegati ...
Inserisci Nuovo Progetto
Aggiungi un nuovo progetto
INSERT INTO Progetti ...
✏️ UPDATE - Modificare Dati Esistenti
Aumento Sviluppatori
Aumenta del 5% lo stipendio degli sviluppatori
UPDATE Impiegati SET stipendio = stipendio * 1.05 ...
Cambia Stato Progetto
Imposta un progetto come "In Corso"
UPDATE Progetti SET stato = 'In Corso' ...
🗑️ DELETE - Eliminare Dati
⚠️ Attenzione alle Eliminazioni
Usa sempre WHERE con DELETE! Senza WHERE elimineresti TUTTI i record della tabella!
Elimina Assegnazione
Rimuovi una specifica assegnazione
DELETE FROM Assegnazioni WHERE id = 5
SQL Playground
🎮 Prova il Tuo SQL!
Scrivi ed esegui le tue query SQL personalizzate. Puoi testare qualsiasi query: SELECT, INSERT, UPDATE, DELETE, JOIN, ecc.
Scrivi la tua Query SQL
💡 Query di Esempio Utili
Stipendi Sopra Media
Impiegati con stipendio superiore alla media aziendale
Report Completo Dipartimenti
Statistiche complete per ogni dipartimento
Carico di Lavoro
Ore settimanali per impiegato
Esercizi Pratici
💪 Metti alla Prova le Tue Competenze!
Risolvi questi esercizi pratici per consolidare ciò che hai imparato. Le soluzioni sono disponibili, ma prova prima da solo!
🎯 Esercizio 1: Query di Base
Richiesta: Trova tutti gli impiegati del dipartimento IT con stipendio superiore a 45000€, ordinati per stipendio decrescente.
🎯 Esercizio 2: Aggregazioni
Richiesta: Calcola il numero totale di progetti e il budget medio per ogni stato (In Corso, Completato, Pianificato).
🎯 Esercizio 3: Join Multipli
Richiesta: Crea un report che mostri: nome impiegato, dipartimento, nome progetto assegnato e ore settimanali dedicate.
🎯 Esercizio 4: Subquery
Richiesta: Trova i dipartimenti che hanno un budget superiore al budget medio di tutti i dipartimenti.
🎯 Esercizio 5: Analisi Avanzata
Richiesta: Per ogni impiegato, calcola il carico di lavoro totale (somma ore settimanali) e mostra solo quelli con più di 30 ore totali.
🚀 Sfida Extra
Prova a creare query che rispondano a queste domande:
- Quali sono i 3 progetti con il budget più alto?
- Quanti impiegati ci sono per ogni ruolo?
- Qual è il costo totale (somma stipendi) per ogni dipartimento?
- Chi sono i manager dei vari dipartimenti?
- Quali impiegati non sono assegnati a nessun progetto?