Pour manipuler la structure ou les données d’une base de données, nous utilisons un langage normalisé : le langage SQL (Structured Query Language).
Ce langage a été créé en 1974 puis normalisé depuis 1986.
Le langage SQL est très différent d’un langage de programmation. Il regroupe les commandes que l’on désire effectuer sur une base de données, par exemple CREATE, INSERT, SELECT, UPDATE, DELETE.
Standard SQL vs application dans les SGBD
Le langage SQL est normalisé, c’est-à-dire qu’un organisme s’est chargé d’établir la bonne façon de l’utiliser afin que le langage soit semblable d’un SGBD à l’autre.
Les différents SGBDR qui l’utilisent n’ont cependant pas suivi toutes les normes du standard SQL, ce qui fait que la syntaxe sera légèrement différente de l’un à l’autre.
Les fonctionnalités supportées dépendent également du SGBDR.
Voici un exemple de requête SQL qui sera différente entre les SGBD :
Ex :
SQLite
CREATE TABLE IF NOT EXISTS etudiants (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nomfamille TEXT,
prenom TEXT,
da TEXT);
Script SQL
Lorsque l’on désire exécuter plusieurs commandes, on les regroupe dans un fichier texte que l’on nomme script SQL.
Ce fichier portera généralement l’extension .sql.
Voici un exemple de script compatible avec SQLite :

La ligne de commande SQLite
La ligne de commande SQLite est l’endroit où vous pouvez entrer les requêtes SQL pour effectuer les opérations CRUD sur vos données.
Pour lancer la ligne de commande SQLite sous Windows, vous devez d’abord installer SQLite sur votre poste de travail et faire en sorte que son dossier fasse partie du PATH).
Sous macOS et sous Linux, tout est disponible dès le départ.
- Ouvrez une fenêtre Terminal.
- Lancez la commande sqlite3.
- Dans le terminal, tapez sqlite3
- Vous obtiendrez l’invite sqlite>, qui vous invite à entrer vos commandes.
Deux types de commandes permises
La ligne de commande SQLite permet d’entrer deux types de commandes :
- Les commandes spéciales pour la ligne de commande. Elles débutent toutes par un point (il ne faut pas qu’il y ait d’espace avant ni après le point pour que la commande fonctionne). Par exemple, .open, .show, .backup, .exit et toutes les autres commandes listées par .help. (voir Command Line Shell For SQLite).
- Les requêtes SQL, par exemple CREATE, SELECT, INSERT, UPDATE, DELETE. Chacune doit se terminer par un point-virgule.
Voici comment combiner ces deux types de commandes afin de vérifier la liste des tables de la base de données sélectionnée puis afficher les enregistrements de la table etudiants :
Ligne de commande SQLite
.tablesRésultat à l’écran :
etablissements etudiants
SELECT * FROM etudiants;: résultat à l’écran :
1|Desmarais|Louis|1178793
2|Bourgeois|Philippe|1161295
3|Meloche|Ariane|1182286
4|Gaumond|Mathieu|1121543
5|Rousseau|Isabelle|1119872
Créer une nouvelle base de données
Dès l’ouverture de la ligne de commande SQLite, si le message « Connected to a transient in-memory database » apparaît,
ceci indique qu’aucune base de données n’est ouverte. Si vous ne faites pas attention, les opérations seront effectuées
en mémoire vive dans une base de données temporaire et seront perdues lors de la fermeture de la ligne de commande.
Pour corriger la situation, deux options s’offrent à vous :
- Créer la base de données dès le lancement de SQLite;
- Travailler dans la base de données temporaire puis l’enregistrer dans un fichier permanent avant de sortir de la ligne de commande.
Création lors du lancement de SQLite
Lors du lancement de SQLite, dans le Terminal de votre ordinateur, vous pouvez ajouter le nom de votre nouvelle base de données
à la suite de la commande sqlite3. Il est d’usage d’utiliser un nom de fichier avec l’extension .db.
La base de données sera créée si elle n’existe pas. Sinon, elle sera ouverte.
Toutes les opérations effectuées par la suite s’appliqueront à cette base de données.
Dans le terminal tapez : sqlite3 mabd.db
À tout moment, la commande .database lancée à l’invite de commande affichera le nom de la base de données sur laquelle les opérations sont appliquées.
Attention : la base de données sera créée dans le dossier courant (celui affiché dans le Terminal avant de lancer la commande sqlite3).
Si vous souhaitez la créer ailleurs, il faudra spécifier son chemin.
Dans le terminal écrivez : sqlite3 \Users\votrenom\Documents\mabd.db
Travail dans la base de données temporaire
Il est également possible de travailler dans la base de données temporaire puis terminer votre travail par l’instruction .save suivie du nom à donner à la base de données.
Ligne de commande SQLite
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nom TEXT
);
.save mabd.db
Ici encore, si vous désirez enregistrer le fichier ailleurs que dans le dossier courant, il faudra spécifier son chemin.
Notez que l’invite de commande SQLite demande que les dossiers soient séparés par des barres obliques (/) et ce, même sous Windows.
Ligne de commande SQLite : .save /Users/votrenom/Documents/mabd.db
Se brancher à une base de données
Si vous avez déjà une base de données SQLite (fichier dont le nom se termine généralement par .db), il est possible de l’ouvrir de deux façons :
- lors du lancement de la ligne de commande
- à l’aide de la commande .open
Ouverture dès le lancement de la ligne de commande
L’ajout du nom de la base de données à la suite de la commande sqlite3 permet d’ouvrir directement cette base de données.
Terminal : sqlite3 mabd.db
Si la base de données existait, elle sera ouverte. Sinon, elle sera créée. La commande .tables permettra de vérifier si la BD est vide ou non (si elle contient des tables ou non).
Ligne de commande SQLite : .tables
Ouverture d’une base de données après coup
Si vous n’avez pas spécifié le nom de la base de données dès le lancement de la ligne de commande,
il est possible de quitter le mode « transcient » en ouvrant la base de données à l’aide de la commande .open.
Ligne de commande SQLite : .open mabd.db
Encore ici, si le fichier n’est pas dans le dossier courant, il faudra spécifier son chemin.
Ligne de commande SQLite : .open /Users/votrenom/Documents/mabd.db
Quitter la ligne de commande
Après une séance de travail, il est important de quitter correctement la ligne de commande SQLite :
Ligne de commande SQLite : .exit
Afficher les données d’une table (extraire des données) : SELECT
La requête SELECT permet de lire des données dans la base de données.
Dans sa forme la plus simple, la requête SELECT aura la forme suivante :
Syntaxe SQLite : SELECT * FROM nomtable;
Exemple :
SELECT * FROM etudiants;
Préciser les champs
Plutôt que d’utiliser l’étoile pour voir l’ensemble des champs des enregistrements sélectionnés, il est possible de ne demander que certains champs.
En nommant les champs, nous nous assurons que la requête ne fournira que les données dont nous avons besoin.
Syntaxe SQLite : ELECT champ1, champ2, champ3 FROM nomtable;
Exemple :
SELECT nomfamille, prenom FROM etudiants;
Une requête « SELECT * … » sera dite non optimisée et pourrait causer des problèmes de performance si la table contient de nombreux champs alors que le programme n’en a besoin que de quelques-uns.
Préciser les enregistrements
On peut ajouter des conditions pour ne voir que certains enregistrements.
Syntaxe SQLite : SELECT champ1, champ2, champ3 FROM nomtable WHERE condition;
Exemple :
SELECT nomfamille, prenom FROM etudiants WHERE etablissement_id = 1;
Cette fois, on n’obtient que les enregistrements répondant à la condition.
Modifier les données existantes : UPDATE
La commande UPDATE permet de modifier les DONNÉES dans une table.
Elle prendra la forme suivante :
Syntaxe SQLite : UPDATE nomtable SET champ1 = valeur1 WHERE condition;
Il faut absolument utiliser une clause WHERE sinon, la modification s’appliquera à tous les enregistrements de la table.
Exemple :
UPDATE etudiants SET prenom = ‘Marco’ WHERE id = 4;
Il est possible de modifier d’un coup plusieurs champs en séparant les paires champ=valeur par une virgule.
Exemple :
UPDATE etudiants SET prenom = ‘Mathieu’, nomfamille=‘Gauthier’ WHERE id = 4;
Ajouter des données (ajouter des lignes ou des enregistrement) : INSERT
La requête INSERT permet d’ajouter des enregistrements (des lignes) dans une tables.
Elle prendra la forme suivante :
Syntaxe SQLite : INSERT INTO nomtable (champ1, champ2, champ3) VALUES (valeur1, valeur2, valeur3);
Exemple :
INSERT INTO etudiants(nomfamille, prenom, da, etablissement_id)
VALUES(‘Beaulieu’, ‘Louis-Charles’, ‘1054764’, 2);
Remarquez que le champ id n’a pas été spécifié dans la requête puisqu’il s’agit d’un champ auto-incrémenté. SQLite s’occupera de lui donner la prochaine valeur disponible.
Remarquez également que les chaînes de caractères sont entourées par des apostrophes. Elles auraient également pu être entourées par des guillemets.
Ajouter plusieurs enregistrements d’un seul coup
MySQL permet d’ajouter plusieurs enregistrements à l’aide d’une seule requête SQL.
Syntaxe SQLite : INSERT INTO nomtable (champ1, champ2, champ3) VALUES (valeur1, valeur2, valeur3), (valeur4, valeur5, valeur6);
Exemple :
INSERT INTO etudiants(nomfamille, prenom, da, etablissement_id)
VALUES
(‘Beaulieu’, ‘Louis-Charles’, ‘1054764’, 2),
(‘Jolibois’, ‘Alice’, ‘1077123’, 2);
Supprimer des données : DELETE
Pour supprimer un enregistrement, vous devez utiliser la commande DELETE.
Elle prendra la forme suivante :
Syntaxe SQLite : DELETE FROM nomtable WHERE condition;
Attention : n’oubliez pas d’indiquer la condition WHERE sinon, tous les enregistrements de la table seront supprimés.
Exemple :
DELETE FROM inscriptions WHERE id = 7;
Attention : une fois les enregistrements effacés, il est très difficile voir impossible de les retrouver.
C’est pourquoi il est toujours préférable de faire d’abord un SELECT avec la condition pour vérifier quels enregistrements on s’apprête à effacer.
Exemple :
SELECT * FROM inscriptions WHERE id = 7;
DELETE FROM inscriptions WHERE id = 7