Nous allons voir les principales commandes SQL permettant d’interagir avec une base de données. Nous travaillons avec sqlite3.
I. Création d’une table et insertion d’enregistrements
À titre d’exemple, nous allons créer la table suivante :
On commence par créer la table avec CREATE TABLE en indiquant ici la clé primaire.
À noter
SQLite n’est pas sensible à la casse.
On insère ensuite les valeurs avec :
On peut enregistrer une valeur à la fois ou plusieurs séparées par des virgules.
Il se peut que certains enregistrements n’existent pas. Par exemple Anne peut avoir été absente lors du devoir d’anglais. On met alors NULL :
Si l’on essaye d’insérer une valeur pour une clé déjà existante, ce qui va à l’encontre des contraintes d’intégrité, on obtient alors une erreur de type IntegrityError.
On peut créer un fichier d’extension sql pour plus de confort. Il doit commencer par BEGIN TRANSACTION et finir par COMMIT;. On enregistre ce fichier par exemple sous le nom notes.sql.
II. Utilisation de SQLite avec le terminal
On rappelle qu’avec SQLite les bases de données sont stockées en un seul fichier. On ouvre un terminal pour créer une BDD dans le fichier les_notes.db à partir du fichier notes.sql créé à l’exemple précédent en lançant sqlite3 avec ces arguments :
À noter
Il faut bien différencier les rôles de ces deux fichiers. Le fichier .sql contient des instructions écrites en langage SQL et est lisible par un humain, le fichier .db est créé par SQLite et contient les données, les tables, les indices sous une forme peu lisible.
On peut ensuite travailler avec SQLite. On lance cette fois sqlite3 avec comme argument le fichier contenant la base de données :
sqlite> est l’invite de commande indiquant que SQLite est en attente des requêtes de l’utilisateur.
III. L’extraction de données avec la commande SELECT
La commande SELECT permet, comme son nom le suggère, de sélectionner des colonnes d’une ou de plusieurs tables données en paramètres. Comme souvent, l’étoile * indique que l’on sélectionne toutes les colonnes. La syntaxe est :
Pour obtenir l’en-tête des colonnes et un affichage plus lisible, on commence par indiquer en préambule :
À noter
Les commandes commençant par un point (dot commands) sont spécifiques au CLI. Par exemple les deux proposées ci-dessus permettent d’affiner l’affichage dans le terminal (https://www.w3resource.com/sqlite/sqlite-dot-commands.php).
Puis on demande toute la table Table_notes :
On obtient :
Si l’on ne veut que certaines colonnes :