Différences
Ci-dessous, les différences entre deux révisions de la page.
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 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> | + | Une base SQLite3 a la particularité d'être contenue dans un fichier qui porte le même nom. Le 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 contrepartie, certaines fonctionnalités sont absentes, comme 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 SQLite, ouvrez 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 | + | |
- | + | ||
- | sqlite> select 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// |