La dattilografia è significativa 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 funzioni e 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, il comportamento dipende dal sistema operativo. Nella pratica è comune usare maiuscole per le parole chiave per evidenziare la struttura della query.
Punto e virgola e fine istruzioni
In PostgreSQL, ogni istruzione termina normalmente con un punto e virgola ;
. Dimenticarlo può bloccare l'esecuzione in strumenti come psql
. MySQL e SQLite sono più permissivi nelle shell interattive, ma il punto e virgola rimane la buona pratica. Questo piccolo simbolo è spesso la causa di errori nelle query digitate velocemente.
Query SELECT e join
Scrivere query significa spesso scrivere join. PostgreSQL usa INNER JOIN
, LEFT JOIN
e RIGHT JOIN
. Ogni join richiede la parola chiave ON
seguita da una condizione. 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 proprie di PostgreSQL. MySQL ha equivalenti come CURDATE()
o DATE_FORMAT()
. Scriverle correttamente richiede attenzione a underscore, virgole e 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 =
separato da virgole. 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. MySQL e SQLite le supportano nelle versioni recenti, così come SQL Server. La collocazione corretta delle parentesi è la difficoltà più comune.
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 le supportano, ma PostgreSQL è spesso il riferimento.
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 placeholders cambiano a seconda del database. PostgreSQL usa $1, $2
, MySQL e SQLite usano ?
, e SQL Server usa @p1
. Questi piccoli simboli sono facili da sbagliare, ma fondamentali per l'esecuzione.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Riepilogo
Per convenzione, le parole chiave SQL si scrivono in maiuscolo, mentre gli identificatori rimangono in minuscolo salvo citazioni. 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.