Le langage SQL

Signaler

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 :

1ea38c64-8741-4f61-9974-35ddaa0490ec

On commence par créer la table avec CREATE TABLE en indiquant ici la clé primaire.

c73bb3a2-d193-4e68-9c3e-b9b511419a31

À noter

SQLite n’est pas sensible à la casse.

On insère ensuite les valeurs avec :

bebf2772-177c-4da2-a06d-1ca4af457dca

On peut enregistrer une valeur à la fois ou plusieurs séparées par des virgules.

82f155a0-e8ce-4700-98e4-1a2789448fdf

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 :

b44a9873-ad5e-48d0-9533-1abb9628d07d

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 :

4598ebed-629e-40f6-9a94-67f46fec5733

À 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 :

9b058121-1b9f-4fdd-b266-cdebd9cb9f81

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 :

452b3c64-8a3c-477c-8339-c02404962274

Pour obtenir l’en-tête des colonnes et un affichage plus lisible, on commence par indiquer en préambule :

cd560063-d582-49b9-b9cb-dd5d6b1f8b3b

À 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 :

98d0a5d2-ff5f-43c1-b051-e095fda5a445

On obtient :

5f24eb11-2414-433f-8dbe-ece3a420c3e1

Si l’on ne veut que certaines colonnes :

966c7821-50f7-4836-95a2-ed0b52cc12af

cf1e9ea0-ec4b-4217-b35b-fc3cdcfa9506