Bases de données relationnelles et SQL
L'essentiel en 30 secondes
Les notions à connaître
- Relation (table)
- Ensemble de n-uplets partageant le même schéma (même liste d'attributs typés). Le schéma se note : NomTable(attribut 1: type 1, attribut 2: type 2, ...). L'attribut souligné est la clé primaire.
- Attribut (colonne)
- Propriété nommée et typée d'une relation. Chaque attribut a un domaine (ensemble des valeurs possibles). Ex : nom: TEXT, age: INTEGER, moyenne: REAL.
- Clé primaire (PRIMARY KEY)
- Attribut (ou groupe d'attributs) qui identifie de façon unique chaque enregistrement. Jamais NULL, jamais de doublon. Souvent un identifiant numérique auto-incrémenté.
- Clé étrangère (FOREIGN KEY)
- Attribut d'une table qui référence la clé primaire d'une autre table. Assure l'intégrité référentielle : on ne peut pas référencer un enregistrement qui n'existe pas.
- Requête SELECT
- Instruction SQL de lecture. Syntaxe complète : SELECT attributs FROM table [WHERE condition] [GROUP BY attribut] [HAVING condition] [ORDER BY attribut [ASC | DESC]] [LIMIT n].
- Jointure (JOIN)
- Opération qui combine les lignes de deux tables selon une condition de correspondance (ON). INNER JOIN : garde les lignes qui matchent. LEFT JOIN : garde aussi les lignes de la table gauche sans correspondance.
- Fonctions d'agrégation
- COUNT(*), COUNT(attr), SUM(attr), AVG(attr), MIN(attr), MAX(attr). Opèrent sur un ensemble de lignes. COUNT(*) compte les lignes, COUNT(attr) ignore les NULL.
- Schéma relationnel
- Description de la structure d'une base : liste des tables, attributs, types, clés primaires et étrangères. Définit les contraintes d'intégrité.
Les erreurs à éviter en nsi
Confondre WHERE et HAVING
WHERE filtre les lignes individuelles AVANT le GROUP BY. HAVING filtre les groupes APRÈS agrégation.
Oublier le ON dans un JOIN
Sans ON, tu obtiens un produit cartésien (toutes les combinaisons possibles). Toujours préciser la condition de jointure.
Mettre une colonne non agrégée dans SELECT avec GROUP BY
Avec GROUP BY, chaque colonne dans SELECT doit être soit dans le GROUP BY, soit dans une fonction d'agrégation.
Tester NULL avec = au lieu de IS NULL
WHERE nom = NULL ne fonctionne pas. Utilise WHERE nom IS NULL ou WHERE nom IS NOT NULL.
Oublier le point-virgule à la fin d'une requête SQL
En SQL standard, chaque requête se termine par ; (certains exercices du bac ne l'exigent pas, mais c'est une bonne habitude).
Sais-tu répondre à ces questions ?
Les corrigés détaillés sont dans le quiz du chapitre.
- Dans le modèle relationnel, comment appelle-t-on un attribut (ou groupe d'attributs) qui identifie de manière unique chaque enregistrement d'une table ?
- Quelle commande SQL permet de sélectionner toutes les colonnes de la table 'eleves' ?
- Quel mot-clé SQL permet de filtrer les résultats d'une requête selon une condition ?
- On a la table suivante : CREATE TABLE produits ( id INTEGER PRIMARY KEY, nom TEXT, prix REAL, stock INTEGER ); Quelle requête renvoie les produits dont le prix est supérieur à 50 et le stock est non nul ?
- Quelle requête SQL compte le nombre d'élèves par classe dans une table eleves(id, nom, classe) ?
Accède à la fiche complète
Crée ton compte gratuit pour lire la fiche en entier et accéder à 7 000+ contenus de révision.