Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
sqlite [Le 06/07/2013, 18:34] – Liste de clients graphiques libres disponible > Liste de clients graphiques libres disponibles Canigou 66 | sqlite [Le 25/10/2020, 10:14] (Version actuelle) – [SQLite] 88.121.171.85 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> sgbd}} | ||
+ | |||
+ | ---- | ||
+ | ====== SQLite ====== | ||
+ | |||
+ | Une base SQLite3 a la particularité d' | ||
+ | SQLite3 présente l' | ||
+ | |||
+ | //Cette description est tirée de "C en action" | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Pour installer SQLite3, [[: | ||
+ | Par exemple avec l' | ||
+ | < | ||
+ | |||
+ | Remarque : pour installer SQLite2, | ||
+ | ===== Utilisation en ligne de commande ===== | ||
+ | ==== Lancer le terminal SQLite ==== | ||
+ | |||
+ | Dans un [[: | ||
+ | < | ||
+ | |||
+ | Le curseur indique que vous êtes maintenant dans le " | ||
+ | < | ||
+ | Enter " | ||
+ | Enter SQL statements terminated with a ";" | ||
+ | sqlite> | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | //Toute commande SQLite sera précédée de son curseur afin de bien distinguer les commandes SQLite des autres commandes.// | ||
+ | </ | ||
+ | |||
+ | ==== Quitter le terminal SQLite ==== | ||
+ | < | ||
+ | |||
+ | ==== Lister les commandes SQLite ==== | ||
+ | < | ||
+ | Affichera: | ||
+ | < | ||
+ | .bail ON|OFF Stop after hitting an error. | ||
+ | .databases List names and files of attached databases | ||
+ | .dump ?TABLE? ... Dump the database in an SQL text format | ||
+ | If TABLE specified, only dump tables matching | ||
+ | LIKE pattern TABLE. | ||
+ | .echo ON|OFF Turn command echo on or off | ||
+ | .exit Exit this program | ||
+ | .explain ? | ||
+ | With no args, it turns EXPLAIN on. | ||
+ | .genfkey ? | ||
+ | | ||
+ | | ||
+ | | ||
+ | See file tool/ | ||
+ | distribution for further information. | ||
+ | .header(s) ON|OFF Turn display of headers on or off | ||
+ | .help Show this message | ||
+ | .import FILE TABLE Import data from FILE into TABLE | ||
+ | .indices ? | ||
+ | If TABLE specified, only show indices for tables | ||
+ | | ||
+ | .load FILE ? | ||
+ | .mode MODE ? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | .nullvalue STRING Print STRING in place of NULL values | ||
+ | .output FILENAME Send output to FILENAME | ||
+ | .output stdout Send output to the screen | ||
+ | .prompt MAIN CONTINUE Replace the standard prompts | ||
+ | .quit Exit this program | ||
+ | .read FILENAME Execute SQL in FILENAME | ||
+ | .restore ?DB? FILE Restore content of DB (default " | ||
+ | .schema ? | ||
+ | If TABLE specified, only show tables matching | ||
+ | LIKE pattern TABLE. | ||
+ | .separator STRING Change separator used by output mode and .import | ||
+ | .show Show the current values for various settings | ||
+ | .tables ? | ||
+ | If TABLE specified, only list tables matching | ||
+ | LIKE pattern TABLE. | ||
+ | .timeout MS Try opening locked tables for MS milliseconds | ||
+ | .width NUM1 NUM2 ... Set column widths for " | ||
+ | .timer ON|OFF Turn the CPU timer measurement on or off | ||
+ | </ | ||
+ | |||
+ | ==== Modifier le format de sortie ==== | ||
+ | Vous pouvez par exemple: | ||
+ | * [[#Afficher le nom des colonnes / Changer l' | ||
+ | * [[#Modifier le séparateur]] | ||
+ | * [[#Modifier la largeur des colonnes]] | ||
+ | * [[#Modifier la sortie en code html]] | ||
+ | | ||
+ | |||
+ | === Afficher le nom des colonnes / Changer l' | ||
+ | * Pour présenter les résultat d'une requête sous forme de tableau dans le terminal on utilisera: | ||
+ | < | ||
+ | sqlite> .headers on | ||
+ | sqlite> .mode column | ||
+ | </ | ||
+ | |||
+ | Et à l' | ||
+ | |||
+ | < | ||
+ | nom age membre | ||
+ | ---------- | ||
+ | dan | ||
+ | bob | ||
+ | </ | ||
+ | |||
+ | * Pour revenir au mode précédent: | ||
+ | < | ||
+ | sqlite> .header off # Mode par défaut | ||
+ | sqlite> .mode list # Mode par défaut | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | dan|23|oui | ||
+ | bob|45|non | ||
+ | </ | ||
+ | |||
+ | === Modifier le séparateur === | ||
+ | |||
+ | * Il est possible de modifier le séparateur dans le mode list: | ||
+ | < | ||
+ | sqlite> .separator ", " | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | dan, 23, oui | ||
+ | bob, 45, non | ||
+ | </ | ||
+ | |||
+ | === Modifier la largeur des colonnes === | ||
+ | |||
+ | * Par défaut, chaque colonne fait 10 caractères de largeur. Il est possible d' | ||
+ | < | ||
+ | sqlite> .width 2 15 10 20 3 | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | id titre auteur | ||
+ | -- --------------- | ||
+ | 1 | ||
+ | 2 le nid des mars franquin | ||
+ | 3 la déesse | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Modifier la sortie en code html === | ||
+ | |||
+ | * Il est possible de sortir directement les résultats en html: | ||
+ | < | ||
+ | sqlite> .mode html | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </TR> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </TR> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </TR> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </TR> | ||
+ | </ | ||
+ | |||
+ | ==== Rappel des paramètres ==== | ||
+ | < | ||
+ | sqlite> .show | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | echo: off | ||
+ | explain: off | ||
+ | headers: off | ||
+ | mode: list | ||
+ | nullvalue: "" | ||
+ | | ||
+ | separator: " | ||
+ | width: | ||
+ | </ | ||
+ | |||
+ | ==== Manipuler une base ==== | ||
+ | Vous pouvez par exemple | ||
+ | * [[#Créer une base - ouvrir une base]] | ||
+ | * [[#Créer une table]] | ||
+ | * [[#Lister les tables]] | ||
+ | * [[#Insérer des valeurs dans la table]] | ||
+ | * Faire une [[#simple requête pour visualiser le contenu de la table]] | ||
+ | * [[#Effacer une valeur dans la table]] | ||
+ | * [[#Ajouter une colonne à la table]] | ||
+ | * [[#Mettre à jour une valeur à la table]] | ||
+ | * [[#Modifier le nom d'une table]] | ||
+ | * [[#Écrire la sortie des résultats dans un fichier]] | ||
+ | * [[#Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque]] | ||
+ | * [[#Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données]] | ||
+ | |||
+ | === Créer une base - ouvrir une base === | ||
+ | < | ||
+ | |||
+ | * Si la base '' | ||
+ | |||
+ | === Détruire une base === | ||
+ | Il suffit de détruire le fichier correspondant. Par exemple < | ||
+ | |||
+ | === Créer une table === | ||
+ | |||
+ | Il faut avoir ouvert ou créé une base avant de taper les commandes suivantes: | ||
+ | < | ||
+ | sqlite> CREATE TABLE bandedessinée (id integer primary key, titre VARCHAR(30), | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | sqlite> CREATE TABLE bandedessinée (id integer primary key, titre TEXT, auteur TEXT, resume TEXT, num REAL, date_creation INTEGER); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Lister les tables === | ||
+ | < | ||
+ | sqlite> .tables | ||
+ | </ | ||
+ | |||
+ | === Insérer des valeurs dans la table === | ||
+ | Un exemple d' | ||
+ | < | ||
+ | sqlite> INSERT INTO " | ||
+ | sqlite> INSERT INTO " | ||
+ | sqlite> INSERT INTO " | ||
+ | </ | ||
+ | |||
+ | === Simple requête pour visualiser le contenu de la table === | ||
+ | < | ||
+ | sqlite> select * from bandedessinée; | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
+ | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-03 | ||
+ | 3|la déesse|moebius|une aventure extraordinaire|7.0|2011-02-03 18:36:25 | ||
+ | </ | ||
+ | |||
+ | == Requête de visualisation d'une table formatée en sortie COMME une insertion de valeur == | ||
+ | < | ||
+ | sqlite> select * from bandedessinée; | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | INSERT INTO ' | ||
+ | INSERT INTO ' | ||
+ | INSERT INTO ' | ||
+ | </ | ||
+ | |||
+ | == Quelques exemples de requêtes == | ||
+ | |||
+ | * Limiter une requête par nombre d' | ||
+ | sqlite> sqlite> select * from bandedessinée limit 2;</ | ||
+ | 1|tintin au congo|hergé|Tintin est au congo.|5.0||casterman | ||
+ | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0||</ | ||
+ | |||
+ | * Sélectionner les titres de la table bandedessinée enregistrés depuis février: < | ||
+ | sqlite> select titre from bandedessinée where strftime(' | ||
+ | le nid des marsupilamis | ||
+ | la déesse</ | ||
+ | |||
+ | === Effacer une valeur dans la table === | ||
+ | < | ||
+ | sqlite> DELETE FROM " | ||
+ | </ | ||
+ | |||
+ | === Ajouter une colonne à la table === | ||
+ | < | ||
+ | sqlite> ALTER TABLE " | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Mettre à jour une valeur à la table === | ||
+ | < | ||
+ | sqlite> UPDATE " | ||
+ | </ | ||
+ | |||
+ | === Modifier le nom d'une table === | ||
+ | < | ||
+ | alter table ' | ||
+ | </ | ||
+ | |||
+ | === Écrire la sortie des résultats dans un fichier === | ||
+ | < | ||
+ | sqlite> .output bd.txt | ||
+ | sqlite> select * from bd; | ||
+ | sqlite> .quit | ||
+ | </ | ||
+ | |||
+ | * Visualiser dans le terminal le fichier créé: | ||
+ | < | ||
+ | cat bd.txt | ||
+ | </ | ||
+ | |||
+ | === Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque === | ||
+ | |||
+ | == Voir le résultat de la commande .dump == | ||
+ | < | ||
+ | sqlite> .dump bd | ||
+ | |||
+ | PRAGMA foreign_keys=OFF; | ||
+ | BEGIN TRANSACTION; | ||
+ | CREATE TABLE " | ||
+ | INSERT INTO " | ||
+ | INSERT INTO " | ||
+ | INSERT INTO " | ||
+ | COMMIT; | ||
+ | </ | ||
+ | |||
+ | == Rediriger la sortie vers un fichier puis dumper la table depuis SQLite == | ||
+ | < | ||
+ | sqlite> .output bd.sql | ||
+ | sqlite> .dump bd | ||
+ | </ | ||
+ | |||
+ | Le résultat n'est plus affiché dans le terminal, mais redirigé vers le fichier '' | ||
+ | < | ||
+ | sqlite> .quit | ||
+ | cat bd.sql | ||
+ | </ | ||
+ | |||
+ | == Lire directement un fichier dumpé depuis sqlite == | ||
+ | |||
+ | Tout d' | ||
+ | < | ||
+ | sqlite> drop table bd; | ||
+ | </ | ||
+ | |||
+ | Puis lisez le fichier sauvegardé: | ||
+ | < | ||
+ | sqlite> .read bd.sql | ||
+ | sqlite> select * from bd; | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
+ | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-04 | ||
+ | 3|la déesse|moebius|une aventure géniale|7.0|2011-02-04 17:06:23 | ||
+ | </ | ||
+ | |||
+ | === Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données === | ||
+ | |||
+ | == Dumper la base == | ||
+ | < | ||
+ | sqlite3 livres.db .dump > livres.sql | ||
+ | </ | ||
+ | |||
+ | == Récupérer un fichier dumpé pour recréer la base == | ||
+ | |||
+ | Effacez le fichier original avant de procéder à la récupération de la base: | ||
+ | < | ||
+ | rm -r livres.db # | ||
+ | sqlite3 livres.db < livres.sql # | ||
+ | sqlite3 livres.db # | ||
+ | |||
+ | sqlite> select * from bd; # Faire un requête pour vérification | ||
+ | </ | ||
+ | |||
+ | Affichera: | ||
+ | < | ||
+ | 1|tintin au congo|hergé|Tintin est au congo.|5.0| | ||
+ | 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-04 | ||
+ | 3|la déesse|moebius|une aventure géniale|7.0|2011-02-04 17:06:23 | ||
+ | </ | ||
+ | |||
+ | ===== Utilisation avec un client graphique ===== | ||
+ | |||
+ | Liste de clients graphiques libres disponibles sous Linux : | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ===== Utiliser Sqlite avec Python ===== | ||
+ | |||
+ | Exemple d' | ||
+ | [[: | ||
+ | < | ||
+ | |||
+ | Et ajoutez le code ci-dessous: | ||
+ | |||
+ | <file python test-python.py> | ||
+ | # | ||
+ | #-*- coding: utf-8 -*- | ||
+ | |||
+ | import sqlite3 | ||
+ | | ||
+ | class Mabase(): | ||
+ | | ||
+ | def __init__(self): | ||
+ | |||
+ | self.conn = sqlite3.connect(' | ||
+ | |||
+ | def creer(self): | ||
+ | """ | ||
+ | Renvoi True si reussie, False si déjà créée. """ | ||
+ | | ||
+ | # Obtention d'un curseur | ||
+ | c = self.conn.cursor() | ||
+ | | ||
+ | # Créer une table | ||
+ | try: | ||
+ | c.execute(' | ||
+ | # Inserer deux lignes de données | ||
+ | c.execute(' | ||
+ | c.execute(' | ||
+ | | ||
+ | # Sauvegarder les modifications | ||
+ | self.conn.commit() | ||
+ | | ||
+ | # Fermer le curseur | ||
+ | c.close() | ||
+ | print " | ||
+ | return True | ||
+ | | ||
+ | except: | ||
+ | # Fermer le curseur | ||
+ | c.close() | ||
+ | return False | ||
+ | | ||
+ | def lire(self): | ||
+ | """ | ||
+ | c = self.conn.cursor() | ||
+ | c.execute(" | ||
+ | for row in c: | ||
+ | print row | ||
+ | c.close() | ||
+ | | ||
+ | # Création de l' | ||
+ | mabase = Mabase() | ||
+ | if not mabase.creer(): | ||
+ | mabase.lire() | ||
+ | </ | ||
+ | |||
+ | Modifiez les [[: | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | // |