Exercice de dactylographie: Programmation en langage SQL

fermez et commencez à taper

La dactylographie est importante en programmation. Vous êtes plus efficace en utilisant des techniques de saisie rapide pour écrire du code dans le langage de programmation SQL.

Apprenons-en davantage sur le langage SQL et la dactylographie lors de la programmation en SQL.

Programmation en SQL et dactylographie

Apprendre le SQL et pratiquer la dactylographie vont naturellement de pair. Les requêtes SQL sont remplies de parenthèses, de virgules, d'opérateurs et de guillemets. De petites erreurs, comme une mauvaise citation ou un point-virgule oublié, peuvent faire échouer toute la requête. Lorsque vous tapez en SQL, il est utile de savoir quelles parties de la syntaxe sont communes entre différentes bases de données et lesquelles sont spécifiques à un système. Cet article se concentre principalement sur PostgreSQL, mais mentionne également MySQL, SQLite et SQL Server là où la syntaxe diffère.

Qu'est-ce qui est caractéristique de la syntaxe SQL ?

SQL (Structured Query Language) est un langage déclaratif. Au lieu de décrire étape par étape comment récupérer les données, vous déclarez ce que vous voulez. Presque chaque instruction commence par un mot-clé comme SELECT, INSERT ou UPDATE. L'ordre des clauses est fixe : SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL et MySQL partagent cet ordre, donc si vous l'apprenez dans un système, vous pouvez l'appliquer dans l'autre.

SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;

Caractères spéciaux souvent utilisés

SQL regorge de signes de ponctuation. Les parenthèses () entourent les fonctions et les conditions. Les virgules , séparent les colonnes. Le point . est utilisé pour les schémas et noms de tables, comme public.users. Les guillemets simples '...' délimitent les chaînes. PostgreSQL utilise des guillemets doubles "..." pour les identifiants, tandis que MySQL utilise des backticks `...`. Dans SQL Server, on trouve aussi des crochets [...]. S'entraîner avec ces symboles permet d'écrire des requêtes sans erreurs.

-- Chaîne de caractères
SELECT * FROM books WHERE title = 'War and Peace';

-- Identifiants avec espaces (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;

Majuscules et minuscules

Par convention, les mots-clés SQL sont souvent écrits en majuscules : SELECT, FROM, WHERE. Cela facilite leur reconnaissance, mais ce n'est pas obligatoire. Dans PostgreSQL, les identifiants non cités sont automatiquement convertis en minuscules, donc MyTable et mytable sont considérés comme identiques. Dans MySQL, le comportement dépend du système d'exploitation. Pour la pratique, écrire les mots-clés en majuscules est courant et met en valeur la structure des requêtes.

Point-virgule et fin d'instruction

Dans PostgreSQL, chaque instruction se termine généralement par un point-virgule ;. L'oublier peut bloquer l'exécution dans des outils comme psql. MySQL et SQLite sont plus permissifs en mode interactif, mais le point-virgule reste une bonne pratique. Ce petit caractère est souvent la cause de l'échec d'une requête.

Requêtes SELECT et jointures

Écrire des requêtes signifie souvent écrire des jointures. PostgreSQL utilise INNER JOIN, LEFT JOIN et RIGHT JOIN. Chaque jointure nécessite le mot-clé ON suivi d'une condition. Un espace manquant ou une erreur de frappe dans la condition casse la requête. S'entraîner avec des jointures aide à être précis avec des symboles comme = et ..

SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;

Fonctions et expressions

PostgreSQL propose de nombreuses fonctions intégrées comme COUNT(), SUM() et AVG(). Les parenthèses sont toujours obligatoires. Des fonctions de date et heure comme NOW() ou DATE_TRUNC() sont propres à PostgreSQL. MySQL possède des équivalents comme CURDATE() ou DATE_FORMAT(). Bien les taper demande de l'attention aux underscores, virgules et parenthèses.

SELECT DATE_TRUNC('month', created_at) AS month,
       COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;

INSERT, UPDATE, DELETE

Les commandes de modification de données comportent beaucoup de signes de ponctuation. INSERT utilise des parenthèses et virgules pour les colonnes et valeurs. UPDATE utilise = séparé par des virgules. DELETE combine mots-clés et conditions. Ces structures sont presque identiques dans PostgreSQL, MySQL, SQLite et SQL Server, même si les règles de guillemets diffèrent.

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 utilise souvent des CTE introduits avec WITH. Ils comportent de nombreuses parenthèses et virgules, ce qui en fait un bon exercice. MySQL et SQLite les prennent en charge dans leurs versions récentes, et SQL Server également. Le placement correct des parenthèses est l'erreur la plus fréquente.

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;

Fonctions de fenêtre

PostgreSQL est reconnu pour ses fonctions de fenêtre avancées. La syntaxe typique OVER (PARTITION BY ... ORDER BY ...) exige une frappe précise des parenthèses et des mots-clés. MySQL et SQL Server les supportent également, mais PostgreSQL est souvent la référence.

SELECT customer_id,
       SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;

Paramètres et placeholders

Dans les applications, les placeholders varient selon la base de données. PostgreSQL utilise $1, $2, MySQL et SQLite utilisent ?, et SQL Server utilise @p1. Ces petits symboles sont faciles à mal taper mais essentiels pour l'exécution.

-- PostgreSQL
SELECT * FROM users WHERE id = $1;

-- MySQL
SELECT * FROM users WHERE id = ?;

Résumé

Par convention, les mots-clés SQL sont souvent écrits en majuscules, tandis que les identifiants restent en minuscules sauf s'ils sont cités. PostgreSQL utilise des guillemets doubles pour les identifiants, des placeholders $n, des CTE et des fonctions de fenêtre. MySQL utilise des backticks et des placeholders ?. SQL Server introduit des crochets et des paramètres @. SQLite garde une syntaxe simple, mais demande aussi de la précision. S'entraîner à taper des requêtes SQL renforce l'exactitude avec la ponctuation, les mots-clés et les symboles, et se concentrer sur PostgreSQL offre une expérience avec l'une des bases de données modernes les plus utilisées.