SQLite3 - Guide simplifié d’utilisation
Ce guide a pour objectif d’expliquer l’utilisation de SQLite3 à partir de la création de deux tables simples, l’importation de données, et l’exécution d’une requête SQL pour afficher des résultats en relation entre deux tables. Il inclut également une explication des différents types de données utilisés dans SQLite ainsi que des explications détaillées pour chaque commande.
Connexion à SQLite3
Pour commencer, lancez SQLite3 en créant ou ouvrant une base de données.
sqlite3 <nom_base_de_donnees.db>
Explication :
`sqlite3` : L’outil en ligne de commande pour manipuler des bases de données SQLite.
`<nom_base_de_donnees.db>` : Remplacez cette variable par le nom de votre fichier de base de données. Si le fichier n’existe pas, il sera créé automatiquement.
Exemple :
sqlite3 infra.db
Création des tables
Dans cet exemple simplifié, nous allons créer deux tables :
dns : Contient des informations sur les adresses IP et les noms de domaines (FQDN).
ip_ping : Stocke le statut du ping pour chaque adresse IP (1 pour succès, 0 pour échec).
Les types de colonnes dans SQLite
Avant de passer à la création des tables, voici une explication des principaux types de colonnes que vous pouvez utiliser dans SQLite :
TEXT : Utilisé pour stocker des chaînes de caractères, comme des noms de domaines (FQDN) ou des descriptions. - Exemple : Un champ de type TEXT pourrait stocker “example.com”.
INTEGER : Utilisé pour stocker des nombres entiers. Cela peut inclure des adresses IP (si elles sont converties en un format numérique) ou des états booléens (1 pour vrai, 0 pour faux). - Exemple : Un champ de type INTEGER pourrait stocker l’adresse IP sous forme de nombre comme 19216811 ou un statut de ping comme 1 (répond) ou 0 (ne répond pas).
REAL : Utilisé pour stocker des nombres à virgule flottante, comme des mesures précises. - Exemple : Une colonne REAL pourrait stocker une valeur de temps d’attente pour un ping, comme 0.123 secondes.
BLOB : Stocke des données binaires telles que des images ou des fichiers. - Exemple : Un fichier image ou un fichier binaire peut être stocké sous forme de BLOB.
Création des tables dans SQLite
Nous allons créer les deux tables suivantes :
dns : Cette table stocke l’IP sous forme d’entier (INTEGER) et le FQDN (Fully Qualified Domain Name) sous forme de texte (TEXT).
ip_ping : Cette table stocke l’IP (INTEGER) et un statut de ping (INTEGER) où 1 indique que l’IP répond et 0 indique qu’elle ne répond pas.
Commande pour créer les tables :
CREATE TABLE dns (
ip INTEGER,
fqdn TEXT
);
CREATE TABLE ip_ping (
ip INTEGER,
repond_ping INTEGER
);
Explication :
`CREATE TABLE` : Crée une nouvelle table dans la base de données.
`dns` et `ip_ping` : Les noms des tables.
`ip INTEGER` : La colonne ip dans chaque table est un entier (INTEGER), qui représente l’adresse IP.
`fqdn TEXT` : La colonne fqdn dans la table dns stocke les noms de domaine en tant que texte (TEXT).
`repond_ping INTEGER` : La colonne repond_ping dans la table ip_ping est un entier (INTEGER) qui indique si l’adresse IP répond au ping (1 = répond, 0 = ne répond pas).
Importation des données
SQLite permet l’importation de données à partir de fichiers CSV. Vous pouvez utiliser la commande suivante pour importer des données dans vos tables.
.mode csv
.headers on
.separator ";"
.import <nom_fichier.csv> <nom_table>;
Explication :
`.mode csv` : Indique à SQLite que nous allons importer des données au format CSV (Comma-Separated Values).
`.headers on` : Indique que la première ligne du fichier CSV contient les en-têtes de colonnes.
`.separator “;”` : Définit le point-virgule comme séparateur de colonnes dans le fichier CSV.
`.import <nom_fichier.csv> <nom_table>` : Importe les données du fichier CSV spécifié dans la table cible. Remplacez <nom_fichier.csv> par le nom du fichier CSV et <nom_table> par le nom de la table dans laquelle vous voulez insérer les données.
Exemple :
.import dns.csv dns;
.import ip_ping.csv ip_ping;
Affichage des données
Une fois les données importées, vous pouvez afficher le contenu des tables en exécutant la commande suivante :
SELECT * FROM <nom_table>;
Explication :
`SELECT *` : Sélectionne toutes les colonnes.
`FROM <nom_table>` : Indique la table à partir de laquelle vous voulez récupérer les données. Remplacez <nom_table> par le nom de votre table.
Exemple :
SELECT * FROM dns;
SELECT * FROM ip_ping;
Requêtes SQL avancées
Nous pouvons maintenant exécuter une requête SQL pour obtenir une vue combinée des adresses IP, des FQDN, et du statut du ping, en joignant les deux tables sur la colonne ip :
SELECT
dns.ip,
dns.fqdn,
ip_ping.repond_ping
FROM
dns
JOIN
ip_ping ON dns.ip = ip_ping.ip;
Explication :
`SELECT` : Permet de choisir les colonnes à afficher.
`dns.ip, dns.fqdn, ip_ping.repond_ping` : Nous sélectionnons trois colonnes : l’IP depuis la table dns, le FQDN depuis dns, et le statut du ping depuis ip_ping.
`FROM dns` : La table principale de la requête est dns.
`JOIN ip_ping ON dns.ip = ip_ping.ip` : Nous faisons une jointure sur la colonne ip pour relier les tables dns et ip_ping.
Exemple de résultat :
ip |
fqdn |
repond_ping |
---|---|---|
19216811 |
example.com |
1 |
19216812 |
test.com |
0 |
Dans cet exemple, l’IP 192.168.1.1 (représentée sous forme d’entier) répond au ping (1), tandis que 192.168.1.2 ne répond pas (0).
Suppression des données
Pour supprimer toutes les données des tables sans supprimer la structure de la table, utilisez la commande DELETE :
DELETE FROM <nom_table>;
Explication :
`DELETE FROM <nom_table>` : Supprime toutes les lignes de la table spécifiée. Remplacez <nom_table> par le nom de la table.
Exemple :
DELETE FROM dns;
DELETE FROM ip_ping;
Suppression des tables
Pour supprimer complètement une table de la base de données, utilisez la commande suivante :
DROP TABLE IF EXISTS <nom_table>;
Explication :
`DROP TABLE IF EXISTS` : Supprime la table spécifiée si elle existe dans la base de données, évitant ainsi une erreur si la table n’existe pas déjà.
`<nom_table>` : Remplacez par le nom de la table que vous souhaitez supprimer.
Exemple :
DROP TABLE IF EXISTS dns;
DROP TABLE IF EXISTS ip_ping;
Meta
Auteur : Cbillet Date : /10/2024