Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
utilisateurs:nuxos:sqlite [Le 15/02/2011, 17:23]
nuxos créée
utilisateurs:nuxos:sqlite [Le 15/09/2022, 20:56] (Version actuelle)
moths-art Correction des guillemets (détecté et corrigé via le bot wiki-corrector : https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
 +{{tag> BROUILLON}}
 +FIXME voir pour compléter les tags\\
 +----
 ====== SQLite sous Ubuntu ====== ====== SQLite sous Ubuntu ======
  
 +<note help>​Cette page est un brouillon destiné à initier une page collaborative sur le thème de SQLite.\\
 +Elle permettra d'​utiliser les logiciels que l'on trouve sur Ubuntu afin d'​administrer des bases SQLite. La partie présentée ci-dessous concerne, pour le moment, l'​utilisation la plus élémentaire de SQlite en lignes de commande via le terminal. S'y ajouteront différentes interfaces graphiques ainsi que l'​utilisation de SQLite à l'aide de scripts python, perl, bash etc... </​note>​
  
-<note help>​Cette page est un brouillon destiné à initier une page collaborative sur le thème de SQLiteElle permettra ​d'​utiliser ​les logiciels que l'on trouve sur Ubuntu afin d'​administrer des bases SQLite. La partie présentée ci-dessous concerne, pour le moment, l'​utilisation la plus élémentaire de SQlite ​en lignes ​de commande via le terminal. S'y ajouteront différentes interfaces graphiques ainsi que l'utilisation ​de SQLite ​à l'aide de scripts pythonperlbash etc... </note>+Une base SQLite3 a la particularité d'​être contenue dans un fichier qui porte le même nomLe moteur de base de données SQLite3 est une bibliothèque,​ libsqlite3, qu'il est possible ​d'​utiliser ​avec l'interface utilisateur ​en ligne de commande ​''​sqlite3''​ ou, via l'API C.\\ 
 +SQLite3 présente ​l'avantage ​de n'​avoir rien à configurer, rien à maintenir ou à administrer. C'est aussi son objectif. En contrepartiecertaines fonctionnalités sont absentescomme la gestion des utilisateurs ou la possibilité de se connecter à distance à la base (en TCP/IP par exemple). 
 + 
 +//Cette description est tirée de "C en action"​ 2ième édition de Yves METTIER.//
  
 ===== Installation ===== ===== Installation =====
  
-Pour installer ​SQLiteouvrez ​un terminal ​et tapez:+Pour installer ​SQLite3[[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​sqlite3]]**.\\ 
 +Par exemple avec l'​outil [[:​apt-get]] vous saisirez dans un [[:terminal]] la [[:​commande_shell|commande]] suivante: 
 +<​code>​sudo apt-get install sqlite3</​code>​
  
- $ sudo apt-get install sqlite3+Remarque : pour installer SQLite2,​[[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​sqlite]]**.\\ 
 +===== Utilisation en ligne de commande ===== 
 +==== Lancer le terminal SQLite ====
  
-===== Utilisation =====+Dans un [[:​terminal]],​ lancer la commande suivante avant de taper les commandes propres à SQLite: 
 +<​code>​sqlite3</​code>​
  
- +Le curseur indique que vous êtes maintenant dans le "​terminal"​ SQlite comme ici: 
-==== Utilisation en ligne de commandes ==== +<​code>​SQLite version 3.6.22 
- +Enter "​.help"​ for instructions 
- +Enter SQL statements terminated with a ";"​ 
-Dans un terminal, lancer la commande suivante avant de taper les commandes SQLite: +sqlite
- +</code>
- $ sqlite3 +
- +
-Le curseur indique que nous sommes ​maintenant dans le "​terminal"​ SQlite comme ici: +
- +
- +
- +
- SQLite version 3.6.22 +
- Enter "​.help"​ for instructions +
- Enter SQL statements terminated with a ";"​ +
- sqlite>+
  
 <note important>​ <note important>​
 //Toute commande SQLite sera précédée de son curseur afin de bien distinguer les commandes SQLite des autres commandes.//​ //Toute commande SQLite sera précédée de son curseur afin de bien distinguer les commandes SQLite des autres commandes.//​
 </​note>​ </​note>​
- 
- 
  
 ==== Quitter le terminal SQLite ==== ==== Quitter le terminal SQLite ====
- +<​code>​sqlite>​.quit</​code>​
- +
- sqlite>​.quit +
  
 ==== Lister les commandes SQLite ==== ==== Lister les commandes SQLite ====
- +<​code>​sqlite>​.help</​code>​
- +
- sqlite>​.help +
 Affichera: Affichera:
- +<​code>​.backup ?DB? FILE Backup DB (default "​main"​) to FILE 
- +.bail ON|OFF Stop after hitting an error. ​ Default OFF 
- +.databases List names and files of attached databases 
- .backup ?DB? FILE      Backup DB (default "​main"​) to FILE +.dump ?TABLE? ... Dump the database in an SQL text format 
- .bail ON|OFF ​          ​Stop after hitting an error. ​ Default OFF +      If TABLE specified, only dump tables matching 
- .databases ​            ​List names and files of attached databases +      LIKE pattern TABLE. 
- .dump ?TABLE? ...      Dump the database in an SQL text format +.echo ON|OFF Turn command echo on or off 
-                  If TABLE specified, only dump tables matching +.exit Exit this program 
-                  LIKE pattern TABLE. +.explain ?ON|OFF? Turn output mode suitable for EXPLAIN on or off. 
- .echo ON|OFF ​          ​Turn command echo on or off +      With no args, it turns EXPLAIN on. 
- .exit ​                 Exit this program +.genfkey ?OPTIONS? Options are: 
- .explain ?​ON|OFF? ​     Turn output mode suitable for EXPLAIN on or off. +      --no-drop: Do not drop old fkey triggers. 
-                  With no args, it turns EXPLAIN on. +      --ignore-errors:​ Ignore tables with fkey errors 
- .genfkey ?​OPTIONS? ​    ​Options are: +      --exec: Execute generated SQL immediately 
-                  --no-drop: Do not drop old fkey triggers. + See file tool/​genfkey.README in the source  
-                  --ignore-errors:​ Ignore tables with fkey errors + distribution for further information. 
-                  --exec: Execute generated SQL immediately +.header(s) ON|OFF Turn display of headers on or off 
-                See file tool/​genfkey.README in the source  +.help Show this message 
-                distribution for further information. +.import FILE TABLE Import data from FILE into TABLE 
- .header(s) ON|OFF ​     Turn display of headers on or off +.indices ?TABLE? Show names of all indices 
- .help ​                 Show this message +      If TABLE specified, only show indices for tables 
- .import FILE TABLE     ​Import data from FILE into TABLE +      matching LIKE pattern TABLE. 
- .indices ?​TABLE? ​      ​Show names of all indices +.load FILE ?ENTRY? Load an extension library 
-                  If TABLE specified, only show indices for tables +.mode MODE ?TABLE? Set output mode where MODE is one of: 
-                  matching LIKE pattern TABLE. +      csv      Comma-separated values 
- .load FILE ?​ENTRY? ​    ​Load an extension library +      column ​  ​Left-aligned columns. ​ (See .width) 
- .mode MODE ?​TABLE? ​    ​Set output mode where MODE is one of: +      html     HTML <​table>​ code 
-                  csv      Comma-separated values +      insert ​  SQL insert statements for TABLE 
-                  column ​  ​Left-aligned columns. ​ (See .width) +      line     One value per line 
-                  html     HTML <​table>​ code +      list     ​Values delimited by .separator string 
-                  insert ​  SQL insert statements for TABLE +      tabs     ​Tab-separated values 
-                  line     One value per line +      tcl      TCL list elements 
-                  list     ​Values delimited by .separator string +.nullvalue STRING Print STRING in place of NULL values 
-                  tabs     ​Tab-separated values +.output FILENAME Send output to FILENAME 
-                  tcl      TCL list elements +.output stdout Send output to the screen 
- .nullvalue STRING ​     Print STRING in place of NULL values +.prompt MAIN CONTINUE Replace the standard prompts 
- .output FILENAME ​      ​Send output to FILENAME +.quit Exit this program 
- .output stdout ​        ​Send output to the screen +.read FILENAME Execute SQL in FILENAME 
- .prompt MAIN CONTINUE ​ Replace the standard prompts +.restore ?DB? FILE Restore content of DB (default "​main"​) from FILE 
- .quit ​                 Exit this program +.schema ?TABLE? Show the CREATE statements 
- .read FILENAME ​        ​Execute SQL in FILENAME +      If TABLE specified, only show tables matching 
- .restore ?DB? FILE     ​Restore content of DB (default "​main"​) from FILE +      LIKE pattern TABLE. 
- .schema ?​TABLE? ​       Show the CREATE statements +.separator STRING Change separator used by output mode and .import 
-                  If TABLE specified, only show tables matching +.show Show the current values for various settings 
-                  LIKE pattern TABLE. +.tables ?TABLE? List names of tables 
- .separator STRING ​     Change separator used by output mode and .import +      If TABLE specified, only list tables matching 
- .show ​                 Show the current values for various settings +      LIKE pattern TABLE. 
- .tables ?​TABLE? ​       List names of tables +.timeout MS Try opening locked tables for MS milliseconds 
-                  If TABLE specified, only list tables matching +.width NUM1 NUM2 ... Set column widths for "​column"​ mode 
-                  LIKE pattern TABLE. +.timer ON|OFF Turn the CPU timer measurement on or off 
- .timeout MS            Try opening locked tables for MS milliseconds +</​code>​
- .width NUM1 NUM2 ...   ​Set column widths for "​column"​ mode +
- .timer ON|OFF ​         Turn the CPU timer measurement on or off +
- +
- +
  
 ==== Modifier le format de sortie ==== ==== Modifier le format de sortie ====
 +Vous pouvez par exemple: 
 +  * [[#Afficher le nom des colonnes / Changer l'​aspect des colonnes ]] 
 +  * [[#Modifier le séparateur]] 
 +  * [[#Modifier la largeur des colonnes]] 
 +  * [[#Modifier la sortie en code html]] 
 +  ​
  
 === Afficher le nom des colonnes / Changer l'​aspect des colonnes === === Afficher le nom des colonnes / Changer l'​aspect des colonnes ===
- 
- 
   * Pour présenter les résultat d'une requête sous forme de tableau dans le terminal on utilisera:   * Pour présenter les résultat d'une requête sous forme de tableau dans le terminal on utilisera:
- +<​code>​ 
- sqlite> .headers on +sqlite> .headers on 
- sqlite> .mode column+sqlite> .mode column 
 +</​code> ​
  
 Et à l'​issue d'une requête les résultats s'​afficheront de cette manière: Et à l'​issue d'une requête les résultats s'​afficheront de cette manière:
  
 +<​code>​
 +nom        age    membre
 +---------- ​ ---------- ​ ----------
 +dan         ​23 ​        oui
 +bob         ​45 ​        non
 +</​code>​
  
- nom        age         ​membre +  ​* Pour revenir au mode précédent
- ---------- ​ ---------- ​ ---------- +<​code>​ 
- dan         ​23 ​         oui +sqlite> .header off # Mode par défaut 
- bob         ​45 ​         non +sqlite> .mode list # Mode par défaut 
- +</​code>​
- +
-  ​* Pour revenir au mode précedent+
- +
- sqlite> .header off # Mode par défaut +
- sqlite> .mode list # Mode par défaut+
  
 Affichera: Affichera:
- +<​code>​ 
- +dan|23|oui 
- dan|23|oui +bob|45|non 
- bob|45|non +</​code>​
- +
  
 === Modifier le séparateur === === Modifier le séparateur ===
  
   * Il est possible de modifier le séparateur dans le mode list:   * Il est possible de modifier le séparateur dans le mode list:
- +<​code>​ 
- sqlite> .separator ", "+sqlite> .separator ", " 
 +</​code>​
  
 Affichera: Affichera:
- +<​code>​ 
- +dan, 23, oui 
- +bob, 45, non 
- dan, 23, oui +</​code>​
- bob, 45, non +
- +
  
 === Modifier la largeur des colonnes === === Modifier la largeur des colonnes ===
- 
  
   * Par défaut, chaque colonne fait 10 caractères de largeur. Il est possible d'​ajuster la taille ainsi:   * Par défaut, chaque colonne fait 10 caractères de largeur. Il est possible d'​ajuster la taille ainsi:
- +<​code>​ 
- sqlite> .width 2 15 10 20 3+sqlite> .width 2 15 10 20 3 
 +</​code>​
  
 Affichera: Affichera:
- +<​code>​ 
- +id  titre            auteur ​     resume ​          ​num ​ date_creation ​   éditeur ​  
- +--  --------------- ​ ---------- ​ --------------- ​ ---  -------------- ​ ---------- 
- id  titre            auteur ​     resume ​          ​num ​ date_creation ​   éditeur ​  +1   ​tintin au congo  hergé ​     Tintin est au c  5.0                   ​casterman  
- --  --------------- ​ ---------- ​ --------------- ​ ---  -------------- ​ ---------- +2   le nid des mars  franquin ​   Un reportage in  6.0                         
- 1   ​tintin au congo  hergé ​     Tintin est au c  5.0                   ​casterman  +3   la déesse ​      ​moebius ​    une aventure ex  7.0  2011-02-03 ​  
- 2   le nid des mars  franquin ​   Un reportage in  6.0                         +</​code>​
- 3   la déesse ​      ​moebius ​    une aventure ex  7.0  2011-02-03 ​  +
  
  
 === Modifier la sortie en code html === === Modifier la sortie en code html ===
- 
  
   * Il est possible de sortir directement les résultats en html:   * Il est possible de sortir directement les résultats en html:
- +<​code>​ 
- sqlite> .mode html+sqlite> .mode html 
 +</​code>​
  
 Affichera: Affichera:
 +<​code>​
 +<​TR><​TH>​id</​TH>​
 +<​TH>​titre</​TH>​
 +<​TH>​auteur</​TH>​
 +<​TH>​resume</​TH>​
 +<​TH>​num</​TH>​
 +<​TH>​timenter</​TH>​
 +<​TH>​éditeur</​TH>​
 +</TR>
 +<​TR><​TD>​1</​TD>​
 +<​TD>​tintin au congo</​TD>​
 +<​TD>​hergé</​TD>​
 +<​TD>​Tintin est au congo.</​TD>​
 +<​TD>​5.0</​TD>​
 +<​TD></​TD>​
 +<​TD>​casterman</​TD>​
 +</TR>
 +<​TR><​TD>​2</​TD>​
 +<​TD>​le nid des marsupilamis</​TD>​
 +<​TD>​franquin</​TD>​
 +<​TD>​Un reportage incroyable</​TD>​
 +<​TD>​6.0</​TD>​
 +<​TD></​TD>​
 +<​TD></​TD>​
 +</TR>
 +<​TR><​TD>​3</​TD>​
 +<​TD>​la déesse</​TD>​
 +<​TD>​moebius</​TD>​
 +<​TD>​une aventure extraordinaire</​TD>​
 +<​TD>​7.0</​TD>​
 +<​TD>​2011-02-03</​TD>​
 +<​TD></​TD>​
 +</TR>
 +</​code>​
  
- +==== Rappel des paramètres ​==== 
- +<​code>​ 
- <​TR><​TH>​id</​TH>​ +sqlite> .show 
- <​TH>​titre</​TH>​ +</​code>​
- <​TH>​auteur</​TH>​ +
- <​TH>​resume</​TH>​ +
- <​TH>​num</​TH>​ +
- <​TH>​timenter</​TH>​ +
- <​TH>​éditeur</​TH>​ +
- </​TR>​ +
- <​TR><​TD>​1</​TD>​ +
- <​TD>​tintin au congo</​TD>​ +
- <​TD>​hergé</​TD>​ +
- <​TD>​Tintin est au congo.</​TD>​ +
- <​TD>​5.0</​TD>​ +
- <​TD></​TD>​ +
- <​TD>​casterman</​TD>​ +
- </​TR>​ +
- <​TR><​TD>​2</​TD>​ +
- <​TD>​le nid des marsupilamis</​TD>​ +
- <​TD>​franquin</​TD>​ +
- <​TD>​Un reportage incroyable</​TD>​ +
- <​TD>​6.0</​TD>​ +
- <​TD></​TD>​ +
- <​TD></​TD>​ +
- </​TR>​ +
- <​TR><​TD>​3</​TD>​ +
- <​TD>​la déesse</​TD>​ +
- <​TD>​moebius</​TD>​ +
- <​TD>​une aventure extraordinaire</​TD>​ +
- <​TD>​7.0</​TD>​ +
- <​TD>​2011-02-03</​TD>​ +
- <​TD></​TD>​ +
- </​TR>​ +
- +
-=== Rappel des paramètres === +
- +
- sqlite> .show+
  
 Affichera: Affichera:
- +<​code>​ 
- +     ​echo: off 
- +  explain: off 
-      echo: off +  headers: off 
-   ​explain: off +     ​mode: list 
-   ​headers: off +nullvalue: ""​ 
-      mode: list +   ​output: stdout 
- nullvalue: ""​ +separator: "​|"​ 
-    output: stdout +    width:  
- separator: "​|"​ +</​code>​
-     ​width:  +
  
 ==== Manipuler une base ==== ==== 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 === === Créer une base - ouvrir une base ===
- +<​code>​sqlite3 livres.db</​code>​
- +
- sqlite3 livres.db+
  
   * Si la base ''​livres.db''​ n'​existe pas déjà, elle sera créée. Cette commande, non seulement créé ou ouvre la base, mais place le curseur immédiatement dans l'​environnement //​terminal//​ de SQLite. Toute commande tapée par la suite concernera cette base.   * Si la base ''​livres.db''​ n'​existe pas déjà, elle sera créée. Cette commande, non seulement créé ou ouvre la base, mais place le curseur immédiatement dans l'​environnement //​terminal//​ de SQLite. Toute commande tapée par la suite concernera cette base.
- 
  
 === Créer une table === === Créer une table ===
- 
  
 Il faut avoir ouvert ou créé une base avant de taper les commandes suivantes: Il faut avoir ouvert ou créé une base avant de taper les commandes suivantes:
- +<​code>​ 
- +sqlite> CREATE TABLE bandedessinée (id integer primary key, titre VARCHAR(30),​ auteur VARCHAR(30),​ resume TEXT, num double, date_creation date); 
- +</​code>​
- sqlite> CREATE TABLE bandedessinée (id integer primary key, titre VARCHAR(30),​ auteur VARCHAR(30),​ resume TEXT, num double, date_creation date);+
  
 <​note>​ Si '' ​  ​...>''​ apparait après avoir tapé la commande, c'est qu'il manque tout simplement le '';''​ à la fin de la requête. Ajoutez-le juste après le '' ​  ​...>;''​ et validez.</​note>​ <​note>​ Si '' ​  ​...>''​ apparait après avoir tapé la commande, c'est qu'il manque tout simplement le '';''​ à la fin de la requête. Ajoutez-le juste après le '' ​  ​...>;''​ et validez.</​note>​
- +<​note>​Les types de données SQLite3 sont tels qu'​expliqué [[http://​www.sqlite.org/​datatype3.html|ici]] à savoir: //NULL, INTEGER, REAL, TEXT// et //BLOB//. Ce qui donne par exemple : 
 +<​code>​ 
 +sqlite> CREATE TABLE bandedessinée (id integer primary key, titre TEXT, auteur TEXT, resume TEXT, num REAL, date_creation INTEGER); 
 +</​code>​ 
 +</​note>​
  
 === Lister les tables === === Lister les tables ===
- +<​code>​ 
- sqlite> .tables +sqlite> .tables 
 +</​code>​
  
 === Insérer des valeurs dans la table === === Insérer des valeurs dans la table ===
- +Un exemple d'​insertion de valeurs: 
- +<​code>​ 
- sqlite> INSERT INTO "​bandedessinée"​ VALUES(1, '​tintin au congo',​ '​hergé',​ '​Tintin est au congo.',​ 5.0, NULL); +sqlite> INSERT INTO "​bandedessinée"​ VALUES(1, '​tintin au congo',​ '​hergé',​ '​Tintin est au congo.',​ 5.0, NULL); 
- sqlite> INSERT INTO "​bandedessinée"​ VALUES(2, 'le nid des marsupilamis',​ '​franquin',​ 'Un reportage incroyable',​ 6.0, date('​now'​));​ +sqlite> INSERT INTO "​bandedessinée"​ VALUES(2, 'le nid des marsupilamis',​ '​franquin',​ 'Un reportage incroyable',​ 6.0, date('​now'​));​ 
- sqlite> INSERT INTO "​bandedessinée"​ VALUES(3, 'la déesse',​ '​moebius',​ 'une aventure géniale',​ 7.0, strftime("​%Y-%m-%d %H:​%M:​%S",'​now','​localtime'​));​ +sqlite> INSERT INTO "​bandedessinée"​ VALUES(3, 'la déesse',​ '​moebius',​ 'une aventure géniale',​ 7.0, strftime("​%Y-%m-%d %H:​%M:​%S",'​now','​localtime'​));​ 
- +</​code>​
  
 === Simple requête pour visualiser le contenu de la table === === Simple requête pour visualiser le contenu de la table ===
- +<​code>​ 
- +sqlite> select * from bandedessinée;​ 
- sqlite> select * from bandedessinée;​+</​code>​
  
 Affichera: Affichera:
- +<​code>​ 
- +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 
- 1|tintin au congo|hergé|Tintin est au congo.|5.0| +3|la déesse|moebius|une aventure extraordinaire|7.0|2011-02-03 18:36:25 
- 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|2011-02-03 +</​code>​
- 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 == == Requête de visualisation d'une table formatée en sortie COMME une insertion de valeur ==
- +<​code>​sqlite> .mode insert bandedessinée 
- sqlite> .mode insert bandedessinée +sqlite> select * from bandedessinée;​ 
- sqlite> select * from bandedessinée;​+</​code>​
  
 Affichera: Affichera:
- +<​code>​ 
- INSERT INTO '​bandedessinée'​ VALUES(1,'​tintin au congo','​hergé','​Tintin est au congo.',​5.0,​NULL);​ +INSERT INTO '​bandedessinée'​ VALUES(1,'​tintin au congo','​hergé','​Tintin est au congo.',​5.0,​NULL);​ 
- INSERT INTO '​bandedessinée'​ VALUES(2,'​le nid des marsupilamis','​franquin','​Un reportage incroyable',​6.0,'​2011-02-03'​);​ +INSERT INTO '​bandedessinée'​ VALUES(2,'​le nid des marsupilamis','​franquin','​Un reportage incroyable',​6.0,'​2011-02-03'​);​ 
- INSERT INTO '​bandedessinée'​ VALUES(3,'​la déesse','​moebius','​une aventure extraordinaire',​7.0,'​2011-02-03'​);​ +INSERT INTO '​bandedessinée'​ VALUES(3,'​la déesse','​moebius','​une aventure extraordinaire',​7.0,'​2011-02-03'​);​ 
 +</​code>​
  
 == Quelques exemples de requêtes == == Quelques exemples de requêtes ==
  
-  * Limiter une requête par nombre d'​éléments +  * Limiter une requête par nombre d'​éléments: <​code>​ 
- +sqlite> sqlite> select * from bandedessinée limit 2;</​code><​code>​ 
- 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||</code>
- 1|tintin au congo|hergé|Tintin est au congo.|5.0||casterman +
- 2|le nid des marsupilamis|franquin|Un reportage incroyable|6.0|| +
- +
-* Séléctionner les titres de la table bandedessinée enregistrés depuis février +
- +
- sqliteselect titre from bandedessinée where strftime('​%m',​ date_creation)='​02';​ +
- +
- le nid des marsupilamis +
- la déesse +
  
 +  * Sélectionner les titres de la table bandedessinée enregistrés depuis février: <​code>​
 +sqlite> select titre from bandedessinée where strftime('​%m',​ date_creation)='​02';</​code><​code>​
 +le nid des marsupilamis
 +la déesse</​code>​
  
 === Effacer une valeur dans la table === === Effacer une valeur dans la table ===
- +<​code>​ 
- +sqlite> DELETE FROM "​bandedessinée"​ WHERE id = 3; 
- sqlite> DELETE FROM "​bandedessinée"​ WHERE id = 3;   +</​code>​
- +
- +
  
 === Ajouter une colonne à la table === === Ajouter une colonne à la table ===
- +<​code>​ 
- +sqlite> ALTER TABLE "​bandedessinée"​ add column "​éditeur";​ 
- sqlite> ALTER TABLE "​bandedessinée"​ add column "​éditeur"; ​+</​code>​
  
  
 === Mettre à jour une valeur à la table === === Mettre à jour une valeur à la table ===
- +<​code>​ 
- +sqlite> UPDATE "​bandedessinée"​ SET éditeur ='​casterman'​ WHERE id = 1; 
- sqlite> UPDATE "​bandedessinée"​ SET éditeur ='​casterman'​ WHERE id = 1;   +</​code>​
  
 === Modifier le nom d'une table === === Modifier le nom d'une table ===
 +<​code>​
 +alter table '​bandedessinée'​ rename to '​bd';​
 +</​code>​
  
- alter table '​bandedessinée'​ rename to '​bd';​ +=== Écrire ​la sortie des résultats dans un fichier === 
- +<​code>​ 
- +sqlite> .output bd.txt 
-=== Ecrire ​la sortie des résultats dans un fichier === +sqlite> select * from bd; 
- +sqlite> .quit 
- sqlite> .output bd.txt +</​code>​
- sqlite> select * from bd; +
- sqlite> .quit+
  
   * Visualiser dans le terminal le fichier créé:   * Visualiser dans le terminal le fichier créé:
- +<​code>​ 
- cat bd.txt +cat bd.txt 
 +</​code>​
  
 === Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque === === 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 == == Voir le résultat de la commande .dump ==
 +<​code>​
 +sqlite> .dump bd
  
- sqlite> .dump bd +PRAGMA foreign_keys=OFF;​ 
- +BEGIN TRANSACTION;​ 
- PRAGMA foreign_keys=OFF;​ +CREATE TABLE "​bd"​ (id integer primary key, titre VARCHAR(30),​ auteur VARCHAR(30),​ resume TEXT, num double, date_creation date); 
- BEGIN TRANSACTION;​ +INSERT INTO "​bd"​ VALUES(1,'​tintin au congo','​hergé','​Tintin est au congo.',​5.0,​NULL);​ 
- CREATE TABLE "​bd"​ (id integer primary key, titre VARCHAR(30),​ auteur VARCHAR(30),​ resume TEXT, num double, date_creation date); +INSERT INTO "​bd"​ VALUES(2,'​le nid des marsupilamis','​franquin','​Un reportage incroyable',​6.0,'​2011-02-04'​);​ 
- INSERT INTO "​bd"​ VALUES(1,'​tintin au congo','​hergé','​Tintin est au congo.',​5.0,​NULL);​ +INSERT INTO "​bd"​ VALUES(3,'​la déesse','​moebius','​une aventure géniale',​7.0,'​2011-02-04 17:​06:​23'​);​ 
- INSERT INTO "​bd"​ VALUES(2,'​le nid des marsupilamis','​franquin','​Un reportage incroyable',​6.0,'​2011-02-04'​);​ +COMMIT; 
- INSERT INTO "​bd"​ VALUES(3,'​la déesse','​moebius','​une aventure géniale',​7.0,'​2011-02-04 17:​06:​23'​);​ +</​code>​
- COMMIT; +
- +
  
 == Rediriger la sortie vers un fichier puis dumper la table depuis SQLite == == Rediriger la sortie vers un fichier puis dumper la table depuis SQLite ==
- +<​code>​ 
- +sqlite> .output bd.sql 
- sqlite> .output bd.sql +sqlite> .dump bd 
- sqlite> .dump bd+</​code>​
  
 Le résultat n'est plus affiché dans le terminal, mais redirigé vers le fichier ''​bd.sql''​. Pour le vérifier il suffit d'​afficher le contenu du fichier: Le résultat n'est plus affiché dans le terminal, mais redirigé vers le fichier ''​bd.sql''​. Pour le vérifier il suffit d'​afficher le contenu du fichier:
- +<​code>​ 
- sqlite> .quit +sqlite> .quit 
- cat bd.sql +cat bd.sql 
 +</​code>​
  
 == Lire directement un fichier dumpé depuis sqlite == == Lire directement un fichier dumpé depuis sqlite ==
  
-Tout d'​abord ​on va effacer ​la table de la base:+Tout d'​abord ​effacez ​la table de la base: 
 +<​code>​ 
 +sqlite> drop table bd; 
 +</​code>​
  
- sqlite> drop table bd; +Puis lisez le fichier sauvegardé:​ 
- +<​code>​ 
-Puis on va lire le fichier sauvegardé:​ +sqlite> .read bd.sql 
- +sqlite> select * from bd; 
- sqlite> .read bd.sql +</​code>​
- sqlite> select * from bd;+
  
 Affichera: Affichera:
- +<​code>​ 
- 1|tintin au congo|hergé|Tintin est au congo.|5.0| +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 +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+3|la déesse|moebius|une aventure géniale|7.0|2011-02-04 17:06:23 
 +</​code>​
  
 === Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données === === Dumper une base en format SQL pour sauvegarder sa structure, ses tables et ses données ===
- 
  
 == Dumper la base == == Dumper la base ==
- +<​code>​ 
- +sqlite3 livres.db .dump > livres.sql 
- sqlite3 livres.db .dump > livres.sql+</​code>​
  
 == Récupérer un fichier dumpé pour recréer la base == == 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:
 +<​code>​
 +rm -r livres.db #​ Effacer la base originale
 +sqlite3 livres.db < livres.sql #​ Récuperer la base depuis le fichier de svg
 +sqlite3 livres.db #​ Se connecter à la base
  
-On va d'​abord effacer le fichier original avant de procéder à la récupération de la base. +sqlite> select * from bd; # Faire un requête pour vérification 
- +</​code>​
- rm -r livres.db #​ Effacer la base originale +
- sqlite3 livres.db < livres.sql #​ Récuperer la base depuis le fichier de svg +
- sqlite3 livres.db #​ Se connecter à la base +
- +
- sqlite> select * from bd; # Faire un requête pour vérification+
  
 Affichera: Affichera:
 +<​code>​
 +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
 +</​code>​
  
- 1|tintin au congo|hergé|Tintin est au congo.|5.0| +===== Utilisation avec un client graphique =====
- 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+
  
 +Liste de clients graphiques libres disponible sous Linux :
  
-==== Utiliser un client graphique ====+  * [[http://​sqlitebrowser.sourceforge.net/​|Sqlite Browser]]. 
 +  * [[http://​mbg-sqlclient.developpez.com/​|Ohraimeur]]. 
 +  * [[https://​addons.mozilla.org/​fr/​firefox/​addon/​sqlite-manager/​|Sqlite manager]] (extension pour [[:​Firefox]]).
  
-FIXME ajout d'​interfaces graphiques+===== Utiliser Sqlite avec Python =====
  
-==== Utiliser Sqlite avec Python ==== +Exemple d'​utilisation de SQLite avec un script python.\\ 
- +[[:​tutoriel:​comment_modifier_un_fichier|Créez ​un fichier]] **test-python.py**. Par exemple avec [[:gedit]] vous saisirez dans un [[:​terminal]]
- +<​code>​gedit test-python.py</​code>​
-Exemple d'​utilisation de SQLite avec un script python. +
-Ouvrez ​un fichier ​''​test-python.py''​+
- +
-gedit test-python.py+
  
 Et ajoutez le code ci-dessous: Et ajoutez le code ci-dessous:
  
 <file python test-python.py>​ <file python test-python.py>​
- +#​!/​usr/​bin/​env python 
-<code python>​ +#-*- coding: utf-8 -*-
- +
- #​!/​usr/​bin/​env python +
- #-*- coding: utf-8 -*-+
                    
- import sqlite3 +import sqlite3 
-         ​ +         
- class Mabase(): +class Mabase(): 
-         ​ +         
- def __init__(self):​ + def __init__(self):​ 
-  +  
- self.conn = sqlite3.connect('​mabase.db'​)+ self.conn = sqlite3.connect('​mabase.db'​) 
 +                  
 + def creer(self):​ 
 + """​ Créer une simple base. 
 + Renvoi True si reussie, False si déjà créée. """​
                   ​                   ​
- def creer(self): + # Obtention d'un curseur 
- """​ Créer une simple base. + c = self.conn.cursor()
- Renvoi True si reussie, False si déjà créée"""​+
                   ​                   ​
- # Obtention d'un curseur + # Créer une table 
- c = self.conn.cursor() + try: 
-                    + c.execute('​create table comptes (id INTEGER PRIMARY KEY,​signature VARCHAR(50),​ compteur INTEGER)'​) 
- # Créer une table + # Inserer deux lignes de données 
- try: + c.execute('​insert into comptes values (null,"​gffgdfgd","​0"​)'​) 
- c.execute('​create table comptes (id INTEGER PRIMARY KEY,​signature VARCHAR(50),​ compteur INTEGER)'​) + c.execute('​insert into comptes values (null,"​Martin","​1"​)'​)
- # Inserer deux lignes de données +
- c.execute('​insert into comptes values (null,"​gffgdfgd","​0"​)'​) +
- c.execute('​insert into comptes values (null,"​Martin","​1"​)'​)+
                                     ​                                     ​
- # Sauvegarder les modifications + # Sauvegarder les modifications 
- self.conn.commit()+ self.conn.commit()
                                     ​                                     ​
- # Fermer le curseur + # Fermer le curseur 
- c.close() + c.close() 
- print "​Création de la base réussie."​ + print "​Création de la base réussie."​ 
- return True+ return True
                                     ​                                     ​
- except: + except: 
- # Fermer le curseur + # Fermer le curseur 
- c.close() + c.close() 
- return False+ return False
                                     ​                                     ​
- def lire(self):​ + def lire(self):​ 
- """​ """​ + """​ """​ 
- c = self.conn.cursor() + c = self.conn.cursor() 
- c.execute("​SELECT * FROM comptes"​) + c.execute("​SELECT * FROM comptes"​) 
- for row in c: + for row in c: 
- print row + print row 
- c.close() + c.close() 
-                           ​ +                           
- # Création de l'​instance de classe +# Création de l'​instance de classe 
- mabase = Mabase() +mabase = Mabase() 
- if not mabase.creer():​ #​ Si la méthode creer() renvoi False, lire la base +if not mabase.creer():​ #​ Si la méthode creer() renvoi False, lire la base 
- mabase.lire() + mabase.lire()
-</​code>​+
 </​file>​ </​file>​
  
-Modifiez les [[:​permissions|permissions]] du script ''​test-python.py''​ afin de le rendre ​executable, puis lancez-le dans le terminal en tapant:+Modifiez les [[:​permissions|permissions]] du script ''​test-python.py''​ afin de le rendre ​exécutable, puis lancez-le dans le terminal en tapant: 
 +<​code>​ 
 +./​test-python.py 
 +</​code>​
  
- $ ./test-python.py+---- 
 +//​Contributeurs:​ FIXME//
  • utilisateurs/nuxos/sqlite.1297786995.txt.gz
  • Dernière modification: Le 18/04/2011, 14:43
  • (modification externe)