Introduction au langage SQL
| Site: | Plate-forme d'apprentissage |
| Cours: | 2DF Informatique JCB |
| Livre: | Introduction au langage SQL |
| Imprimé par: | Visiteur anonyme |
| Date: | lundi 19 octobre 2026, 03:01 |
1. Introduction
Le langage SQL - "Structured Query Language", soit langage de requêtes structuré(es) - est le standard pour communiquer avec n'importe quelle base de donnée relationnelle (que ce soit SQLite ou une autre).
À chaque fois que vous effectuez une action dans SQLiteBrowser, vous voyez le code SQL qui est généré automatiquement pour effectuer l'action que vous avez choisie. Vous pouvez aussi écrire directement une requête SQL "à la main" dans l'onglet "Exécuter le SQL".
On peut aussi utiliser des outils en ligne comme Online SQL Editor ou d'autres.
Le langage SQL permet notamment de Créer (Create), Lire (Read), Mettre à jour (Update) et Effacer (Delete) des données. C'est pourquoi on utilise parfois l'acronyme CRUD pour rappeler les 4 fonctions principales du langage SQL.
L'instruction qu'on étudiera ici est celle qui permet de lire des données dans une base de donnée.
2. Syntaxe d'une requête
Toutes les requêtes SQL commencent par un mot clé indiquant de quel type de requête il s'agit et terminent avec un point-virgule. Entre les deux, on ajouter tout ce qui est nécessaire pour préciser la requête. On a le droit de passer à la ligne librement et d'indenter les lignes suivantes comme on veut afin de rendre la requête plus lisible.
REQUETE ...
...
SELECT (qui permet de lire des données dans une base de données), dans les sections suivantes, vu que c'est la seule que vous serez amenés à exécuter "à la main".3. Obtenir des données à partir d'une table
La syntaxe générale de la requête SELECT, qui permet d'obtenir des données à partir d'une ou plusieurs tables, ressemble à:
SEL\(\!\)ECT [pre-options] <champs> FROM <table> [post-options];
Dans le cas le plus simple, on n'a aucune option. Si on veut par exemple obtenir toutes les valeurs des champs champ1 et champ2 de la table MaTable, on pourra les obtenir avec la requête
SEL\(\!\)ECT champ1, champ2 FROM MaTable;
Si on indique le caractère * à la place des noms de champs, on obtiendra les valeurs de tous les champs.
De plus, des options peuvent être fournies au début (pour la première option ci-dessous) et à la fin de la requête (pour les autres) afin de préciser celle-ci.
- l'option
DISTINCTavant au début de la requête ne retournera que des valeur distinctes de ce qui est demandé.
Par exemple, la requêteSEL\(\!\)ECT DISTINCT nom, prenom FROM Auteurs;
ne retournera qu'une seule fois le résultatDupond, Jean, même s'îl existe plusieurs "Jean Dupond" dans la tableAuteurs. - l'option
ORDER BY <champs>indique comment il faut classer les résultats
Par exemple, la requêteSEL\(\!\)ECT * FROM Auteurs ORDER BY nom, prenom;
retournera les valeurs de tous les champs pour toutes les entrées, classés d'abord d'après le nom puis d'après le prénom, - l'option
LIMIT <nombre>donne une limite maximale au nombre d'entrées qui seront retournées dans la réponse
Par exemple, la requêteSEL\(\!\)ECT * FROM Auteurs LIMIT 3;
retournera uniquement les 3 premières entrées de la tableAuteurs, ou moins s'il y en a moins que 3. - l'option
WHERE <condition>permet de ne choisir que les entrées qui satisfont la condition donnée. Ainsi, la requêteSEL\(\!\)ECT * FROM Auteurs WHERE nom = "Dupond";
retournera le nom et le prénom de toutes les entrées dont le nom est"Dupond". Notez qu'on utilise le simple=, contrairement au==de comparaison dans la plupart des langages de programmation. On peut également utiliser les comparateurs <, >, <=, >=, même pour les textes. C'est alors l'ordre alphabétique qui compte.
Si on a plusieurs conditions, on les sépare par un opérateur booléenAND / OR.
Dernière remarque: pour plus de lisibilité, nous avons indiqué tous les mots-clés du langage SQL en majuscules, mais en fait ce langage est indifférent à la casse, donc les mêmes mots-clés peuvent être employés en minuscules ou en casse mixte.
4. Obtenir des données à partir de plusieurs tables liées
On peut obtenir des données à partir de plusieurs tables à la fois en tirant profit des associations implémentées par les clés primaires et clé étrangères. C'est assez simple si on a bien fait attention à utiliser le même nom pour la clé étrangère que pour la clé primaire à laquelle elle se réfère.
Le mot-clé à utiliser est JOIN, qui permet de "faire comme si" les données se trouvaient dans une seule table, le temps d'une requête. Cependant, lorsque l'on se réfère à un champ, il faudra préciser de quelle table (vu que plusieurs tables peuvent avoir des champs synonymes). On peut aussi donner des "alias" aux champs pour le résultat de la requête.
Voici un exemple simple mais complet pour préciser la syntaxe:
SEL\(\!\)ECT Auteur.nom AS auteur, Livre.titre AS titre FROM Livre JOIN Auteur USING (id_auteur);
On recevra les résultats "comme si" ils se trouvaient dans une table dont les champs s'appellent auteur et titre, alors qu'en réalité ils proviennent de deux tables liées, Auteur et Livre. Comme on utilise la clé id_auteur pour lier les tables, les résultats seront générés à partir de la fusion d'une entrée de Livre et une entrée de Auteur ayant la même valeur pour la clé id_auteur.
On peut bien sûr continuer à utiliser toutes les options que l'on avait pour une requête à partir d'une seule table, et on peut aussi "joindre" plus que deux tables, par utilisations successives du mot-clé JOIN.