[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&25|Sommaire Bdd}}]]
===== BDDR - SQLite - Requêtes dans la console =====
[Mise à jour le 2/3/2025]
{{ :info:bdd:sqlite.jpg?nolink&250|}}
* **Ressources**
* Le langage SQL
* How To Download & Install SQLite Tools
* Command Line Shell For SQLite
* **Lectures connexes**
* [[info:bdd:basesgene|Wiki - BDDR : généralités]]
* [[:info:bdd:basesql|Wiki - BDDR - MySQL - Requêtes dans la console]]
* [[:info:bdd:SqliteVSCode|Wiki - BDDR - SQLite dans VSCode]]
* **Mots-clés** : SGBDR, base, table, enregistrement, champ, requêtes, SQL.
----
==== 1. Présentation ====
SQLite est une bibliothèque en **langage C** qui implémente un petit moteur de base de données **SQL** complet, rapide, autonome et très fiable. C'est le moteur de base de données le plus utilisé au monde. Il est intégré à tous les téléphones mobiles et à la plupart des ordinateurs ainsi que dans d'innombrables applications que nous utilisons tous les jours.
Le code source de SQLite est dans le domaine public. Voir le lien suivant pour **installer SQLite3**.
\\
==== 2. Prise en main rapide ====
Sur un PC sous **Windows**, l'utilisation de la ligne de commande peut se faire dans **n'importe quel répertoire** du moment que le chemin vers le fichier **sqlite3.exe** est dans les **variables d'environnement**.
Sous **Linux** ce réglage est fait par défaut.
=== 2.1 Connexion à une base ou création ===
* **Ressource** : SQLITE tutorial - Commandes
Le projet SQLite fournit un **programme de ligne de commande simple nommé sqlite3** (ou sqlite3.exe sous Windows) qui permet à l'utilisateur de saisir et d'exécuter manuellement des instructions SQL sur une base de données SQLite ou sur une archive ZIP .
* **Cas 1** : la console SQLite **n'est pas activée** \\ Démarer la console sqlite en entrant : **sqlite3** //chemin_absolu/nom_base//.**db** pour ouvrir la console et ouvrir ou créer une base. \\ **ATTENTION** : si aucun fichier de base de données n'est spécifié sur la ligne de commande, une **base de données temporaire** est créée et **automatiquement supprimée** lorsque le programme « sqlite3 » se ferme. \\ \\
* **Cas 2** : la console SQLite **est activée**. \\ Entrer **.open** //chemin_absolu/nom_base.db// (si la base n'existe pas elle sera créée). \\ __Remarque__ : entrer **.database** pour afficher toutes les bases de données dans la connexion actuelle.
{{ :informatique:bdd:sqlitecons1.png?nolink |}}
// Exemple // : création de la base //cine// sur un Raspberry pi et connexion
login@machine:~/tpbdd $ sqlite3 cine.db
sqlite>.open cine.db
sqlite> .databases -- Résultat sur un Raspberry Pi -> main: /home/login/tpbdd/cine.db r/w
\\
{{ :web:createtable.png?nolink|}}
=== 2.2 Création et suppression d'une table ===
* **Ressource** : SQLITE tutorial - CREATE TABLE
* **Création d'une table**
Il est nécessaire de définir pour chaque champ,son **nom** et son **type** lors de la création d’une table, .
// Exemple // : création de la table //acteurs//.
{{ :web:infosql.png?nolink|}}
CREATE table acteurs(
id INTEGER PRIMARY KEY AUTOINCREMENT,
prenom varchar(30),
nom varchar(30),
nationalite varchar(6),
naissance date
);
{{ :informatique:bdd:sqlitecons2.png?nolink |}}
La commande **.schema** renvoie le schéma de la table. La commande **.tables** renvoie la liste de toutes les tables présentes dans la base.
* **Suppression d'une table**
-- Exemple : suppression de la table //acteurs//.
DROP TABLE acteurs;
\\
{{ :web:insertinto.png?nolink|}}
=== 2.3 Insertion d'enregistrements avec INSERT INTO ===
* **Ressource** : SQLITE tutorial - INSERT INTO
On peut enregistrer une valeur à la fois ou plusieurs séparées par des virgules.
// Exemple // : ajout d'un acteur dans la table.
INSERT INTO acteurs (prenom, nom, nationalite, naissance)
VALUES ('Keanu', 'Reeves', 'ca', '1964-07-02');
{{ :informatique:bdd:sqlitecons3.png?nolink |}}
{{ :web:selectfrom.png?nolink|}}
=== 2.4 Extraction de données avec SELECT ===
* **Ressource** : SQLITE tutorial - SELECT
On peut sélectionner une ou plusieurs colonnes, données en paramètre. L'étoile indique que l'on sélectionne toutes les colonnes de la table.
{{ :informatique:bdd:sqlitecons4.png?nolink|}}
// Exemple // : consultation de la table //acteur//.
SELECT * FROM acteurs;
-- Résultat
1|Keanu|Reeves|ca|1964-07-02
Pour améliorer la présentation, on utilise les commandes: \\ **.headers ON** et \\ **.mode column**
// Exemple //
SELECT * FROM acteurs;
-- Résultat
-- id prenom nom nationalite naissance
-- -- ------ ------ ----------- ----------
-- 1 Keanu Reeves ca 1964-07-02
{{ :informatique:bdd:sqlitecmd.png?nolink |}}
=== 2.5 Sortir de la console SQLite3 ===
* **Ressource** : SQLITE tutorial - Commandes
On termine le programme sqlite3 en saisissant** Ctrl-D**.
\\
==== 3. Utiliser un fichier d'extension .sql ====
* **Ressource** : SQLite Transaction
On peut créer un fichier d'extension sql pour "plus de confort". Les requêtes sont placées entre \\ **BEGIN TRANSACTION;** \\ et \\ **COMMIT;**
// Exemple // : création du fichier //requetes.sql// dans le même répertoire que //cine.db// pour ajouter un acteur à la table.
BEGIN TRANSACTION;
INSERT INTO acteurs (prenom, nom, nationalite, naissance) VALUES('Christopher','Walken','us','1943-03-31');
COMMIT;
Ce fichier est "appliqué" à la base avec la commande : **sqlite3 cine.db < requetes.sql**.
{{ :informatique:bdd:sqlitefichcmd.png?nolink |}}
On se connecte ensuite à //cine.db// pour consulter la table //acteurs//.
{{ :informatique:bdd:sqlitefichcmd2.png?nolink |}}
\\
==== Pour aller plus loin ...====
Voir [[info:bdd:sqlitevscode|SQL et SQLite dans VSCode]] et SQLite Tutorial