Esercizio di dattilografia: Programmazione in linguaggio SQL

chiudere e iniziare a digitare

La dattilografia è significativa nella programmazione. Sei più efficiente utilizzando tecniche di digitazione rapida per scrivere codice nel linguaggio di programmazione SQL.

Impariamo di più sul linguaggio SQL e sulla dattilografia durante la programmazione in 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.