Non è stato possibile aggiornare le impostazioni di digitazione. Ricarica la pagina per riprovare.
Esercizio di dattilografia: Programmazione in linguaggio SQL
Le regole di calcolo della precisione sono cambiate. Questo esercizio ricomincia da capo.
Non è stato possibile confermare il salvataggio della sessione completata. Riprova a salvarla senza digitare nuovamente il testo.
Esercizio di dattilografia: Programmazione in linguaggio SQL
La dattilografia è importante nella programmazione. Sei più efficiente utilizzando tecniche di digitazione rapida per scrivere codice nel linguaggio di programmazione SQL.
Programmazione in SQL e dattilografia
Imparare SQL e praticare la dattilografia si completano naturalmente. Le query SQL sono piene di parentesi, virgole, operatori e virgolette. Piccoli errori, come una virgoletta sbagliata o un punto e virgola dimenticato, possono far fallire un'intera query. Quando scrivi in SQL, è utile sapere quali parti della sintassi sono comuni tra diversi database e quali sono specifiche. Questo articolo si concentra principalmente su PostgreSQL, ma menziona anche MySQL, SQLite e SQL Server dove la sintassi differisce.
Cosa è caratteristico della sintassi SQL?
SQL (Structured Query Language) è un linguaggio dichiarativo. Invece di descrivere passo per passo come recuperare i dati, dichiari cosa vuoi. Quasi ogni istruzione inizia con una parola chiave come SELECT, INSERT o UPDATE. L'ordine delle clausole è fisso: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL e MySQL condividono quest'ordine, quindi imparandolo in un sistema lo puoi usare anche nell'altro.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Caratteri speciali usati frequentemente
SQL contiene molti segni di punteggiatura. Le parentesi () racchiudono gli argomenti delle funzioni e raggruppano le condizioni. Le virgole , separano le colonne. Il punto . serve per schema e nomi di tabelle, come public.users. Le virgolette singole '...' delimitano stringhe. PostgreSQL usa virgolette doppie "..." per identificatori, mentre MySQL usa backtick `...`. In SQL Server si trovano anche parentesi quadre [...]. Esercitarsi con questi simboli aiuta a scrivere query corrette.
-- Stringa letterale
SELECT * FROM books WHERE title = 'War and Peace';
-- Identificatori con spazi (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Maiuscole e minuscole
Per convenzione, le parole chiave SQL si scrivono di solito in maiuscolo: SELECT, FROM, WHERE. Questo le rende più facili da individuare, ma non è obbligatorio. In PostgreSQL, gli identificatori non citati vengono automaticamente convertiti in minuscolo, quindi MyTable e mytable sono uguali. In MySQL, la distinzione tra maiuscole e minuscole nei nomi di database e tabelle dipende dal sistema operativo e dalle impostazioni del server. Nella pratica è comune usare maiuscole per le parole chiave per evidenziare la struttura della query.
Punto e virgola e fine istruzioni
In SQL, il punto e virgola ; termina un'istruzione. Gli strumenti interattivi come psql, il client MySQL e la shell SQLite normalmente attendono questo carattere prima di eseguirla. In psql puoi anche inviare la query corrente con \g. Se compare una richiesta di inserire altro testo invece di un risultato, controlla di aver terminato l'istruzione.
Query SELECT e join
Scrivere query significa spesso scrivere join. PostgreSQL usa INNER JOIN, LEFT JOIN e RIGHT JOIN. Nell'esempio seguente, la condizione del join segue la parola chiave ON. Esistono anche join con USING o NATURAL. Un errore di spazio o di battitura nella condizione rende la query invalida. Esercitarsi con i join aiuta a essere precisi con simboli come = e ..
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Funzioni ed espressioni
PostgreSQL include molte funzioni integrate come COUNT(), SUM() e AVG(). Le parentesi sono sempre necessarie. Funzioni di data e ora come NOW() o DATE_TRUNC() sono disponibili in PostgreSQL; la disponibilità e il comportamento di queste funzioni variano tra database. MySQL offre anche funzioni come CURDATE() o DATE_FORMAT(). Scriverle correttamente richiede attenzione ai trattini bassi, alle virgole e alle parentesi.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
I comandi che modificano i dati usano molti segni di punteggiatura. INSERT usa parentesi e virgole per colonne e valori. UPDATE usa = per assegnare valori e le virgole per separare le assegnazioni. DELETE combina parole chiave e condizioni. Queste strutture sono quasi identiche in PostgreSQL, MySQL, SQLite e SQL Server, con regole di citazione diverse.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
PostgreSQL utilizza molto le CTE introdotte con WITH. Spesso contengono molte parentesi e virgole, quindi sono un ottimo esercizio. Anche MySQL, SQLite e SQL Server supportano le CTE. Controlla che a ogni parentesi aperta corrisponda una parentesi chiusa.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
Funzioni finestra
PostgreSQL è conosciuto per le sue funzioni finestra avanzate. La sintassi tipica OVER (PARTITION BY ... ORDER BY ...) richiede attenzione alle parentesi e alle parole chiave. Anche MySQL e SQL Server supportano le funzioni finestra. L'esempio seguente usa la sintassi di PostgreSQL.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Parametri e placeholders
Nelle applicazioni, i segnaposto dei parametri dipendono sia dal database sia dal driver. Le istruzioni preparate native di PostgreSQL usano $1, $2, le istruzioni preparate di MySQL e le query SQLite possono usare ?, mentre i parametri di SQL Server hanno nomi come @p1. Un driver può richiedere una sintassi diversa, come %s in Psycopg. Consulta la sua documentazione, perché questi piccoli simboli sono facili da digitare male.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Riepilogo
Per convenzione, le parole chiave SQL si scrivono in maiuscolo. PostgreSQL converte in minuscolo gli identificatori senza virgolette doppie; in altri sistemi le regole cambiano. PostgreSQL aggiunge virgolette doppie per identificatori, placeholders $n, CTE e funzioni finestra. MySQL usa backtick e placeholders ?. SQL Server introduce parentesi quadre e parametri con @. SQLite mantiene la sintassi semplice, ma richiede precisione. Scrivere query SQL esercita l'accuratezza con punteggiatura, parole chiave e simboli, e concentrarsi su PostgreSQL dà esperienza con uno dei database moderni più diffusi.