| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| logiciel:sql:sqlite:start [2021/04/05 10:08] – [Commandes SQLite] admin | logiciel:sql:sqlite:start [2022/08/13 21:57] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| ===== Installation ===== | ===== Installation ===== |
| |
| - Installez le paquet **[[apt>sqlite3]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install sqlite3</cli> | * Installez le paquet **[[apt>sqlite3]]** ou en ligne de commande :<cli prompt='$ '>...@...:~$ sudo apt install sqlite3</cli> |
| |
| ===== Configuration ===== | ===== Configuration ===== |
| <cli prompt='> '>sqlite> </cli></cli>Le prompt change et signale que vous êtes dans le **terminal SQlite** : | <cli prompt='> '>sqlite> </cli></cli>Le prompt change et signale que vous êtes dans le **terminal SQlite** : |
| |
| === Commandes SQLite === | === Lister les commandes === |
| |
| <subnumberlist> | * **.help** : Lister les commandes :<cli prompt='> '>sqlite> .help |
| - **.help** : Lister les commandes :<cli prompt='> '>sqlite> .help | |
| .archive ... Manage SQL archives | .archive ... Manage SQL archives |
| .auth ON|OFF Show authorizer callbacks | |
| .backup ?DB? FILE Backup DB (default "main") to FILE | |
| .bail on|off Stop after hitting an error. Default OFF | |
| .binary on|off Turn binary output on or off. Default OFF | |
| .cd DIRECTORY Change the working directory to DIRECTORY | |
| .changes on|off Show number of rows changed by SQL | |
| .check GLOB Fail if output since .testcase does not match | |
| .clone NEWDB Clone data into NEWDB from the existing database | |
| .databases List names and files of attached databases | |
| .dbconfig ?op? ?val? List or change sqlite3_db_config() options | |
| .dbinfo ?DB? Show status information about the database | |
| .dump ?TABLE? ... Render all database content as SQL | |
| .echo on|off Turn command echo on or off | |
| .eqp on|off|full|... Enable or disable automatic EXPLAIN QUERY PLAN | |
| .excel Display the output of next command in spreadsheet | |
| .exit ?CODE? Exit this program with return-code CODE | |
| .expert EXPERIMENTAL. Suggest indexes for queries | |
| .explain ?on|off|auto? Change the EXPLAIN formatting mode. Default: auto | |
| .filectrl CMD ... Run various sqlite3_file_control() operations | |
| .fullschema ?--indent? Show schema and the content of sqlite_stat tables | |
| .headers on|off Turn display of headers on or off | |
| .help ?-all? ?PATTERN? Show help text for PATTERN | |
| .import FILE TABLE Import data from FILE into TABLE | |
| .imposter INDEX TABLE Create imposter table TABLE on index INDEX | |
| .indexes ?TABLE? Show names of indexes | |
| .limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT | |
| .lint OPTIONS Report potential schema issues. | |
| .load FILE ?ENTRY? Load an extension library | |
| .log FILE|off Turn logging on or off. FILE can be stderr/stdout | |
| .mode MODE ?TABLE? Set output mode | |
| .nullvalue STRING Use STRING in place of NULL values | |
| .once (-e|-x|FILE) Output for the next SQL command only to FILE | |
| .open ?OPTIONS? ?FILE? Close existing database and reopen FILE | |
| .output ?FILE? Send output to FILE or stdout if FILE is omitted | |
| .parameter CMD ... Manage SQL parameter bindings | |
| .print STRING... Print literal STRING | |
| .progress N Invoke progress handler after every N opcodes | |
| .prompt MAIN CONTINUE Replace the standard prompts | |
| .quit Exit this program | |
| .read FILE Read input from FILE | |
| .recover Recover as much data as possible from corrupt db. | |
| .restore ?DB? FILE Restore content of DB (default "main") from FILE | |
| .save FILE Write in-memory database into FILE | |
| .scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off | |
| .schema ?PATTERN? Show the CREATE statements matching PATTERN | |
| .selftest ?OPTIONS? Run tests defined in the SELFTEST table | |
| .separator COL ?ROW? Change the column and row separators | |
| .session ?NAME? CMD ... Create or control sessions | |
| .sha3sum ... Compute a SHA3 hash of database content | |
| .shell CMD ARGS... Run CMD ARGS... in a system shell | |
| .show Show the current values for various settings | |
| .stats ?on|off? Show stats or turn stats on or off | |
| .system CMD ARGS... Run CMD ARGS... in a system shell | |
| .tables ?TABLE? List names of tables matching LIKE pattern TABLE | |
| .testcase NAME Begin redirecting output to 'testcase-out.txt' | |
| .testctrl CMD ... Run various sqlite3_test_control() operations | |
| .timeout MS Try opening locked tables for MS milliseconds | |
| .timer on|off Turn SQL timer on or off | |
| .trace ?OPTIONS? Output each SQL statement as it is run | |
| .vfsinfo ?AUX? Information about the top-level VFS | |
| .vfslist List all available VFSes | |
| .vfsname ?AUX? Print the name of the VFS stack | |
| .width NUM1 NUM2 ... Set column widths for "column" mode | |
| </cli> | </cli> |
| - **.exit** ou **.quit** : Quitter le programme sqlite | |
| - **.mode MODE ?TABLE?** : Mode de sortie, MODE est à choisir parmi : | === Quitter sqlite === |
| - **csv** : valeurs séparées par des virgules | |
| - **column** : colonnes alignées à gauche (voir .width) | * **.exit** : Quitter le programme sqlite |
| - **html** : <table> (code HTML)<cli prompt='> '>sqlite> .mode html</cli>affichera :{{materiel:internet:serveur:sqlite-affichage-4.png|}} | * **.quit** : Quitter le programme sqlite |
| - **insert** : commande SQL **insert** pour la table TABLE | |
| - **line** : Une valeur par ligne | === Modifier le format de sortie === |
| - **[__list__]** : Valeurs délimitées par la chaîne de séparation .separator | |
| - **tabs** : valeurs séparées par des tabulations | * **.mode MODE ?TABLE?** : Mode de sortie, MODE est à choisir parmi : |
| - **tcl** : Liste TCL des éléments | * **csv** : valeurs séparées par des virgules |
| - Afficher le nom des colonnes / Changer l'aspect des colonnes (.mode column) : | * **column** : colonnes alignées à gauche (voir .width) |
| - **.header(s) on|[__off__]** : Affiche (ou non) les titres. Par exemple, <cli prompt='> '>sqlite> .header on | * **html** : <table> (code HTML)<cli prompt='> '>sqlite> .mode html</cli>affichera :{{materiel:internet:serveur:sqlite-affichage-4.png|}} |
| | * **insert** : commande SQL **insert** pour la table TABLE |
| | * **line** : Une valeur par ligne |
| | * **[__list__]** : Valeurs délimitées par la chaîne de séparation .separator |
| | * **tabs** : valeurs séparées par des tabulations |
| | * **tcl** : Liste TCL des éléments |
| | |
| | === Afficher le nom des colonnes / Changer l'aspect des colonnes (.mode column) === |
| | |
| | * **.header(s) on|[__off__]** : Affiche (ou non) les titres. Par exemple, <cli prompt='> '>sqlite> .header on |
| sqlite> .mode column</cli>affichera les résultats comme ceci :{{materiel:internet:serveur:sqlite-affichage_tableau.png|}}L'affichage par défaut <cli prompt='> '>sqlite> .header off | sqlite> .mode column</cli>affichera les résultats comme ceci :{{materiel:internet:serveur:sqlite-affichage_tableau.png|}}L'affichage par défaut <cli prompt='> '>sqlite> .header off |
| sqlite> .mode list</cli>affiche comme ceci :{{materiel:internet:serveur:sqlite-affichage-2.png|}} | sqlite> .mode list</cli>affiche comme ceci :{{materiel:internet:serveur:sqlite-affichage-2.png|}} |
| - **.width NUM1 NUM2 ...** : largeur des colonnes pour le mode **column** [par défaut, 10 caractères]. Par exemple,<cli prompt='> '>sqlite> .width 2 15 10 20 3</cli>affichera:{{materiel:internet:serveur:sqlite-affichage-3.png|}} | * **.width NUM1 NUM2 ...** : largeur des colonnes [par défaut, 10 caractères]. Par exemple,<cli prompt='> '>sqlite> .width 2 15 10 20 3</cli>affichera:{{materiel:internet:serveur:sqlite-affichage-3.png|}} |
| - **.separator STRING** : change le séparateur utilisé par le mode de sortie et par .import. En mode liste,<cli prompt='> '>sqlite> .separator ", "</cli>affichera :{{materiel:internet:serveur:sqlite-affichage-2.png|}} | * **.separator STRING** : change le séparateur utilisé par le mode de sortie et par .import. En mode liste,<cli prompt='> '>sqlite> .separator ", "</cli>affichera :{{materiel:internet:serveur:sqlite-affichage-2.png|}} |
| - **.show** Affiche les valeurs actuelles des différents paramètres :<cli prompt='> '>sqlite> .show | |
| | === Rappel des paramètres === |
| | |
| | * **.show** Affiche les valeurs actuelles des différents paramètres :<cli prompt='> '>sqlite> .show |
| echo: off | echo: off |
| eqp: off | eqp: off |
| width: | width: |
| filename: :memory:</cli> | filename: :memory:</cli> |
| - **Gestion des bases** : | |
| - **Lister les bases** : | === Gestion des bases === |
| - **.databases** : Liste les noms et les fichiers des bases de données associées | |
| - **.tables ?TABLE?** : Liste les noms des tables dans la base courante. Si TABLE est spécifié, ne liste que les tables correspondant au motif TABLE. | * **.databases** : Liste les noms et les fichiers des bases de données associées |
| - **Importer les données d'une table** : | * **.tables ?TABLE?** : Liste les noms des tables dans la base courante. Si TABLE est spécifié, ne liste que les tables correspondant au motif TABLE. |
| - **.import FILE TABLE** : Importer les données de FILE dans TABLE | * **.import FILE TABLE** : Importer les données de FILE dans TABLE |
| - **.indices ?TABLE?** : Afficher les noms de tous les indices ; si TABLE est spécifiée, n'affiche que les indices correspondant au motif TABLE | * **.indices ?TABLE?** : Afficher les noms de tous les indices ; si TABLE est spécifiée, n'affiche que les indices correspondant au motif TABLE |
| - **Écrire la sortie des résultats dans un fichier** | * **.output FILENAME** : Envoyer la sortie vers FILENAME<cli prompt='> '>sqlite> .output bd.txt |
| - **.output FILENAME** : Envoyer la sortie vers FILENAME | |
| - **.output stdout** : Envoyer la sortie vers l'écran<WRAP center round info 60%> | |
| <cli prompt='> '>sqlite> .output bd.txt | |
| sqlite> select * from bd; | sqlite> select * from bd; |
| - **Dumper une table** depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque : | sqlite> cat bd.txt |
| - Pour visualiser dans le terminal le fichier créé :<cli prompt='$ '>...@...:~ $ cat bd.txt</cli> | |
| sqlite> .quit</cli> | sqlite> .quit</cli> |
| </WRAP> | * **.output stdout** : Envoyer la sortie vers l'écran |
| - **.dump ?TABLE? ...** : Dump de la base de données dans un format texte SQL. Si TABLE est spécifié, ne dumpe que les tables correspondant au motif TABLE | |
| </subnumberlist><WRAP center round info 60%> | |
| Voir le résultat de la commande .dump<cli prompt='> '>sqlite> .dump bd</cli>{{materiel:internet:serveur:sqlite-10.png|}} | |
| Rediriger la sortie vers un fichier puis dumper la table depuis SQLite<cli prompt='> '>sqlite> .output bd.sql | |
| sqlite> .dump bd</cli> | |
| |
| 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:<cli prompt='> '>sqlite> .quit | === Dumper une table depuis SQLite en format SQL pour sauvegarder la structure et les données sur un disque === |
| <cli prompt='$ '>...@...:~ $ cat bd.sql</cli></cli> | |
| |
| Lire directement un fichier dumpé depuis sqlite : | * **.dump ?TABLE? ...** : Dump de la base de données dans un format texte SQL. Si TABLE est spécifié, ne dumpe que les tables correspondant au motif TABLE<cli prompt='> '>sqlite> .dump bd</cli>{{materiel:internet:serveur:sqlite-10.png|}} |
| - Tout d'abord effacez la table de la base:<cli prompt='> '>sqlite> drop table bd;</cli> | * Rediriger la sortie vers un fichier puis dumper la table depuis SQLite<cli prompt='> '>sqlite> .output bd.sql |
| - Puis lisez le fichier sauvegardé:<cli prompt='> '>sqlite> .read bd.sql | sqlite> .dump bd</cli>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:<cli prompt='> '>sqlite> .quit |
| | <cli prompt='$ '>...@...:~ $ cat bd.sql</cli></cli> |
| | * Lire directement un fichier dumpé depuis sqlite : |
| | * Effacez la table de la base:<cli prompt='> '>sqlite> drop table bd;</cli> |
| | * Puis lisez le fichier sauvegardé:<cli prompt='> '>sqlite> .read bd.sql |
| sqlite> select * from bd;</cli>Affichera:{{materiel:internet:serveur:sqlite-11.png|}} | sqlite> select * from bd;</cli>Affichera:{{materiel:internet:serveur:sqlite-11.png|}} |
| - 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 :<cli prompt='$ '>...:...$ sqlite3 livres.db .dump > livres.sql</cli> |
| - Dumper la base :<cli prompt='> '>sqlite3 livres.db .dump > livres.sql</cli> | * Récupérer un fichier dumpé pour recréer la base : |
| - Récupérer un fichier dumpé pour recréer la base : | * Effacez la base originale :<cli prompt='$ '>...@...:~ $ rm -r livres.db</cli> |
| - Effacez le fichier original avant de procéder à la récupération de la base : | * Récupérez la base depuis le fichier de svg :<cli prompt='$ '>...@...:~ $ sqlite3 livres.db < livres.sql</cli> |
| - Effacer la base originale :<cli prompt='$ '>...@...:~ $ rm -r livres.db</cli> | * Connectez-vous à la base< :<cli prompt='$ '>...@...:~ $ sqlite3 livres.db</cli> |
| - Récuperer la base depuis le fichier de svg :<cli prompt='$ '>...@...:~ $ sqlite3 livres.db < livres.sql</cli> | * Faites un requête pour vérification :<cli prompt='$ '>sqlite> select * from bd;</cli>Affichera:{{materiel:internet:serveur:sqlite-12.png|}} |
| - Se connecter à la base< :<cli prompt='$ '>...@...:~ $ sqlite3 livres.db</cli> | |
| - Faire un requête pour vérification :<cli prompt='$ '>sqlite> select * from bd;</cli>Affichera:{{materiel:internet:serveur:sqlite-12.png|}} | === Manipuler une base === |
| </WRAP> | |
| | * **Créer une base - ouvrir une base** : Lancez sqlite3 avec le nom de la base :<cli prompt='$ '>...@...:~ $ sqlite3 livres.db</cli>Si la base n'existe pas, elle sera créée. Toutes les commandes qui suivront concerneront cette base. |
| | * **Détruire une base** : Il suffit d'effacer son fichier .db :<cli prompt='$ '>...@...:~ $ rm livres.db</cli> |
| | * **Créer une table** : Dans sqlite, dans une base existante, lancer la commande :<cli prompt='> '>sqlite> CREATE TABLE bandedessinée (id integer primary key, titre VARCHAR(30), auteur VARCHAR(30), resume TEXT, num double, date_creation date);</cli>Si le prompt apparaît après avoir tapé la commande, c'est qu'il manque le ";" à la fin de la requête. Ajoutez-le juste après le prompt validez.\\ Les types de données SQLite3 sont : NULL, INTEGER, REAL, TEXT et BLOB. Ce qui donne par exemple :<cli prompt='> '>sqlite> CREATE TABLE bandedessinée (id integer primary key, titre TEXT, auteur TEXT, resume TEXT, num REAL, date_creation INTEGER);</cli> |
| | * **Insérer des valeurs dans la table** : Un exemple :<cli prompt='> '>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(3, 'la déesse', 'moebius', 'une aventure géniale', 7.0, strftime("%Y-%m-%d %H:%M:%S",'now','localtime'));</cli> |
| | * **Simple requête pour visualiser le contenu de la table** : <cli prompt='> '>sqlite> select * from bandedessinée;</cli>affichera :{{materiel:internet:serveur:sqlite-affichage-6.png|}} |
| | * **Requête de visualisation d'une table formatée en sortie COMME une insertion de valeur** : <cli prompt='> '>sqlite> .mode insert bandedessinée |
| | sqlite> select * from bandedessinée;</cli>Affichera :{{materiel:internet:serveur:sqlite-7.png|}}Quelques exemples de requêtes : |
| | * **Limiter une requête par nombre d'éléments** : <cli prompt='> '>sqlite> select * from bandedessinée limit 2;</cli>affiche :{{ materiel:internet:serveur:sqlite-8.png }} |
| | * **Sélectionner les titres de la table bandedessinée enregistrés depuis février** : <cli prompt='> '>sqlite> select titre from bandedessinée where strftime('%m', date_creation)='02';</cli>affiche :{{materiel:internet:serveur:sqlite-9.png|}} |
| | * **Effacer une valeur dans la table** : <cli prompt='> '>sqlite> DELETE FROM "bandedessinée" WHERE id = 3;</cli> |
| | * **Ajouter une colonne à la table** : <cli prompt='> '>sqlite> ALTER TABLE "bandedessinée" add column "éditeur";</cli> |
| | * **Mettre à jour une valeur de la table** : <cli prompt='> '>sqlite> UPDATE "bandedessinée" SET éditeur ='casterman' WHERE id = 1;</cli> |
| | * **Modifier le nom d'une table** : <cli prompt='> '>sqlite> alter table 'bandedessinée' rename to 'bd';</cli> |
| | |
| | === Autres commandes === |
| | |
| | * **.backup ?DB? FILE** : Sauvegarde DB (par défaut "main") vers FILE |
| | * **.bail ON|[__OFF__]** : Stop après une erreur |
| | * **.echo ON|OFF** : Bascule la commande d'écho ON/OFF |
| | * **.explain ?ON|OFF?** : Bascule le mode de sortie approprié pour EXPLIQUER on or off\\ Sans argument, on |
| | * **.load FILE ?ENTRY?** : Charger une bibliothèque d'extension |
| | * **.log FILE|off** : Activer ou désactiver la journalisation. FILE peut être stderr/stdout |
| | * **.nullvalue STRING** : Imprime STRING à la place des valeurs NULL |
| | * **.prompt MAIN CONTINUE** : Remplace les prompts standards |
| | * **.read FILENAME** : Exécuter SQL dans FILENAME |
| | * **.restore ?DB? FILE** : Restaurer le contenu de la DB (par défaut "main") à partir de FILE |
| | * **.schema ?TABLE?** : Afficher les déclarations CREATE. Si TABLE est spécifié, ne montrer que les tables correspondant au motif TABLE |
| | * **.stats ON|OFF** : Active ou désactive les stats |
| | * **.timeout MS** : Essayer d'ouvrir les tables verrouillées durant MS millisecondes |
| | * **.trace FILE|off** : afficher chaque instruction SQL au moment de son exécution |
| | * **.vfsname ?AUX?** : afficher le nom de la pile VFS |
| | * **.timer ON|OFF** : activer ou désactiver la minuterie du CPU |
| |
| ===== Désinstallation ===== | ===== Désinstallation ===== |