Aller au contenu principal
SQLBase de donnéesFormationData

Pourquoi SQL ? Les bases de données expliquées

30 min de lecture Apprendre SQL — Chapitre 1

Découvre ce qu'est SQL, les bases de données relationnelles, les SGBD, les propriétés ACID, les types de données, et écris tes premières requêtes SELECT et WHERE.

Ce chapitre est gratuit

Pas besoin de compte pour le lire. Decouvre le contenu et decide si le programme est fait pour toi.

Voir les autres chapitres

Tu consultes ton compte en banque, tu commandes en ligne, tu scrolles un fil d’actualités — chacune de ces actions interroge une base de données. Et le langage pour parler à ces bases, c’est SQL.

🎯 Objectif : Comprendre ce qu’est une base de données relationnelle, maîtriser les types de données, et écrire tes premières requêtes SELECT et WHERE sur des données réalistes.

C’est quoi SQL et pourquoi l’apprendre ?

SQL (Structured Query Language) existe depuis 1974 et n’a jamais été remplacé. C’est le langage universel pour interagir avec les bases de données relationnelles. DevOps, développement, data engineering, SRE — tu croiseras SQL partout.

L’analogie la plus simple : imagine une bibliothèque avec 50 000 livres. Tu ne vas pas fouiller un par un. Tu demandes au bibliothécaire : “Je veux les livres de science-fiction publiés après 2020, triés par note.” SQL, c’est cette langue — précise, logique, et presque lisible comme de l’anglais.

SELECT * FROM livres
WHERE genre = 'science-fiction' AND annee > 2020
ORDER BY note DESC;

💡 SQL est dans le top 3 des compétences tech les plus demandées. Peu importe ton rôle — si tu travailles avec des données, tu as besoin de SQL.

Les bases de données relationnelles

Une base de données relationnelle stocke les données dans des tables reliées entre elles. Chaque table ressemble à un tableau : les lignes sont des enregistrements, les colonnes sont des attributs.

Exemple concret — une table servers qu’un DevOps utiliserait :

server_idhostnameip_addressenvironmentcpu_coresram_gbstatus
1web-0110.0.1.10production416running
2web-0210.0.1.11production416running
3db-0110.0.1.20production832running
4dev-0110.0.2.10development28stopped
5staging-0110.0.3.10staging416running

Le server_id est la clé primaire — un identifiant unique pour chaque ligne. Sans clé primaire, impossible de distinguer deux enregistrements.

Les SGBD les plus utilisés

Un SGBD (Système de Gestion de Base de Données) est le logiciel qui gère le stockage et l’accès aux données. Les principaux :

  • PostgreSQL — Open source, robuste, le plus recommandé pour apprendre et pour la production
  • MySQL / MariaDB — Très répandu dans le web (WordPress, Magento)
  • SQLite — Embarqué dans un fichier, zéro serveur à installer — parfait pour débuter
  • SQL Server / Oracle — Monde entreprise, licences coûteuses

🔥 Pour cette série, on utilise PostgreSQL. C’est le plus conforme au standard SQL, et c’est celui que tu retrouveras le plus en entreprise DevOps.

Les propriétés ACID

Les bases relationnelles garantissent quatre propriétés fondamentales pour chaque transaction :

  • Atomicité — La transaction s’exécute en totalité ou pas du tout. Pas de demi-virement bancaire.
  • Cohérence — La base passe d’un état valide à un autre état valide.
  • Isolation — Les transactions concurrentes ne s’interfèrent pas.
  • Durabilité — Une fois validée, la transaction persiste même après un crash serveur.

⚠️ C’est pour ça que les bases SQL dominent le monde transactionnel. Quand tu as besoin de garanties fortes sur tes données (finance, inventaire, commandes), SQL + ACID, c’est le standard.

Types de données SQL

Chaque colonne a un type qui contraint les valeurs acceptées. Les essentiels :

Type SQLUsageExemple
INTEGERNombres entiers42, -1
BIGINTEntiers larges (IDs, timestamps)9223372036854775807
NUMERIC(p, s)Décimaux exacts (montants)NUMERIC(10,2)12345.67
VARCHAR(n)Texte limité à n caractèresVARCHAR(255)
TEXTTexte illimitéDescriptions, logs
BOOLEANVrai / FauxTRUE, FALSE
DATEDate seule2026-03-20
TIMESTAMPDate + heure2026-03-20 14:30:00
JSONBDonnées JSON (PostgreSQL){"key": "value"}

💡 Utilise NUMERIC pour l’argent, jamais FLOAT. Les flottants introduisent des erreurs d’arrondi — 0.1 + 0.2 ≠ 0.3 en binaire. Avec NUMERIC(10,2), tes centimes restent exacts.

SELECT et WHERE : interroger les données

SELECT est la requête que tu écriras le plus souvent. Elle extrait des données d’une table.

Sélectionner des colonnes

-- Tout récupérer
SELECT * FROM servers;

-- Colonnes spécifiques
SELECT hostname, ip_address, status FROM servers;

-- Valeurs uniques d'une colonne
SELECT DISTINCT environment FROM servers;

-- Colonnes calculées avec alias
SELECT hostname,
       cpu_cores,
       ram_gb,
       ram_gb / cpu_cores AS ram_per_core
FROM servers;

Filtrer avec WHERE

WHERE restreint les résultats selon des conditions. C’est là que SQL devient vraiment utile.

-- Serveurs en production
SELECT * FROM servers WHERE environment = 'production';

-- Serveurs avec plus de 4 CPUs et en running
SELECT * FROM servers
WHERE cpu_cores > 4 AND status = 'running';

-- Serveurs en staging OU development
SELECT * FROM servers
WHERE environment IN ('staging', 'development');

-- CPUs entre 4 et 8 (bornes incluses)
SELECT * FROM servers
WHERE cpu_cores BETWEEN 4 AND 8;

Recherche par motif avec LIKE

-- Hostname commençant par "web"
SELECT * FROM servers WHERE hostname LIKE 'web%';

-- Hostname contenant "01"
SELECT * FROM servers WHERE hostname LIKE '%01%';

Le % remplace n’importe quelle séquence de caractères, le _ remplace exactement un caractère.

Gérer les valeurs NULL

-- Serveurs sans IP assignée
SELECT * FROM servers WHERE ip_address IS NULL;

-- Serveurs avec une IP
SELECT * FROM servers WHERE ip_address IS NOT NULL;

⚠️ On ne peut pas écrire = NULL. En SQL, NULL n’est pas une valeur — c’est l’absence de valeur. Seuls IS NULL et IS NOT NULL fonctionnent.

Cas entreprise : inventaire d’infrastructure

Imagine que tu gères 200 serveurs répartis sur 3 environnements. Ton manager te demande un rapport rapide. Sans SQL, tu ouvres un tableur et tu filtres à la main. Avec SQL :

-- Combien de serveurs par environnement ?
SELECT environment, COUNT(*) AS total
FROM servers
GROUP BY environment;

-- Serveurs de production avec moins de 16 Go de RAM
SELECT hostname, ram_gb
FROM servers
WHERE environment = 'production' AND ram_gb < 16;

-- RAM totale allouée par environnement
SELECT environment,
       SUM(ram_gb) AS total_ram,
       SUM(cpu_cores) AS total_cpus
FROM servers
GROUP BY environment
ORDER BY total_ram DESC;

🎯 En une requête, tu obtiens ce qu’un tableur met 10 minutes à produire. Et surtout, ta requête est reproductible — tu la relances demain et elle donne le résultat à jour.

Pièges classiques du débutant

⚠️ Les erreurs que tout le monde fait :

  • Oublier les guillemets simples — Les chaînes s’écrivent entre 'guillemets simples', pas doubles. WHERE status = "running" ne fonctionne pas en SQL standard.
  • Confondre = et IS pour NULLWHERE ip = NULL ne retourne jamais rien. C’est WHERE ip IS NULL.
  • SELECT * en production — En apprentissage c’est pratique, mais en prod ça ramène toutes les colonnes. Sélectionne uniquement ce dont tu as besoin.
  • Oublier ORDER BY — Sans tri explicite, SQL ne garantit aucun ordre. Les résultats peuvent changer d’une exécution à l’autre.
  • Confondre VARCHAR et TEXT — En PostgreSQL, TEXT est aussi performant que VARCHAR. Utilise VARCHAR(n) uniquement si tu veux une contrainte de longueur.

💡 Installe PostgreSQL localement dès maintenant. Le plus simple : docker run -d --name pg -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:16. Puis connecte-toi avec docker exec -it pg psql -U postgres. Rien ne remplace la pratique.

Résumé

🔥 Ce qu’on a couvert : SQL est le langage universel des bases de données relationnelles. Les données sont organisées en tables avec des types stricts. SELECT extrait les données, WHERE les filtre, DISTINCT élimine les doublons, IN, BETWEEN et LIKE affinent les recherches. Les propriétés ACID garantissent la fiabilité des transactions.

Tu sais maintenant lire des données. Dans le prochain chapitre, on passe à l’écriture : INSERT, UPDATE, DELETE, et les premières requêtes de manipulation.

💡 À retenir : SQL se lit presque comme de l’anglais — SELECT hostname FROM servers WHERE status = 'running'. Si tu comprends cette phrase, tu comprends SQL. Le reste, c’est de la pratique.

Articles liés