ouvert_a_tous:prepas:bdd:sqlite_ligne_de_commande_suite

Ceci est une ancienne révision du document !


~~ stoggle ~~ SQLite en "Ligne de commandes"

Remarque : tout ce qui permet de gérer l'affichage, les sauvegardes, l'imortation et l'exportation de données n'est pas dans le standard SQL 92 mais spécifique à SQLite. On pourra retrouver des équivalents, sous d'autres formes, dans d'autres logiciels de type SGBDR.

sqlite> .mode column
sqlite>SELECT * FROM livre;
 ABC 2001 XYZ 2002
sqlite> .headers on
sqlite> SELECT * FROM livre;
vr_titre  lvr_annee_parution
---------  ------------------
ABC               2001
XYZ               2002 
sqlite> UPDATE livre SET lvr_titre='Apprendre à programmer avec Python 3'  WHERE lvr_annee_parution=2001;
sqlite> SELECT * FROM livre; Apprendre à programmer avec Python 3|2001 XYZ|2002
sqlite> UPDATE livre SET lvr_annee_parution=2012 WHERE lvr_annee_parution=2001;
sqlite> SELECT * FROM livre; Apprendre à programmer avec Python 3|2012 XYZ|2002 
sqlite> DELETE FROM livre WHERE lvr_annee_parution=2002; 
sqlite> SELECT * FROM livre; Apprendre à programmer avec Python 3|2012
sqlite> 

Pour supprimer toutes les lignes d'une table :

DELETE FROM la_table;
sqlite> .exit
C:\pgms\sqlite3>dir /w
[.] [..] base_livre.db  
 sqlite3.exe
C:\pgms\sqlite3> 
sqlite> CREATE TABLE livre(lvr_titre VARCHAR(50), lvr_annee_parution INT);
sqlite> SELECT * FROM livre;
sqlite> INSERT INTO livre VALUES('ABC',2001); sqlite> SELECT * FROM livre; ABC|2001 sqlite> INSERT INTO livre VALUES('XYZ',2002);
sqlite> SELECT * FROM livre; ABC|2001 XYZ|2002
sqlite> UPDATE livre SET lvr_titre='' WHERE lvr_annee_parution=2001;
sqlite>  SELECT * FROM livre; |2001 XYZ|2002
sqlite> UPDATE livre SET lvr_titre='Apprendre à programmer avec Python 3'  WHERE lvr_annee_parution=2001;
sqlite> SELECT * FROM livre; Apprendre à programmer avec Python 3|2001 XYZ|2002
sqlite> UPDATE livre SET lvr_annee_parution=2012 WHERE lvr_annee_parution=2001;
sqlite>  SELECT * FROM livre;
 Apprendre à programmer avec Python 3|2012 XYZ|2002
sqlite> DELETE FROM livre WHERE lvr_annee_parution=2002;
sqlite>SELECT * FROM livre;
 Apprendre à programmer avec Python 3|2012
sqlite> .mode COLUMN
sqlite> SELECT * FROM livre;
 Apprendre à programmer avec Python 3  2012
sqlite> .headers ON
sqlite> >SELECT * FROM livre;
lvr_titre                             lvr_annee_parution
------------------------------------  ------------------
Apprendre à programmer avec Python 3  2012 sqlite>
.exit

Remarques

  • Utilisez les flèches vers le haut ↑ et vers le bas ↓ pour rappeler les commandes saisies précédemment.
  • Attention : pensez à la clause WHERE dans UPDATE ou DELETE, sinon ce sont toutes les lignes qui seront modifiées !!!
.mode csv 
.header on 
.out livres1.csv
select * from livre;
.output stdout
.mode csv
.separator ","
.import livres1.csv livre

Amélioration en ligne de commandes

C:\pgms\sqlite3\livre\v1>set path=%PATH%;c:\pgms\sqlite3

C:\pgms\sqlite3\livre\v1>sqlite3
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
C:\pgms\sqlite3\livre>mkdir v2

C:\pgms\sqlite3\livre>cd v2

C:\pgms\sqlite3\livre\v2>sqlite3 livre2.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

C:\pgms\sqlite3\livre\v2>sqlite3 livre2.db <livresV2.sql

C:\pgms\sqlite3\livre\v2>sqlite3 livre2.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM livre2;
Apprendre à programmer avec Python 3|Swinnen|2002
AppreNdre à programmer avec Python 3|Swinnen|2001
Apprendre à programmer avec Python 3|Swinnen|2001
apprendre à programmer avec Python 3|Swinnen|2002
Python Les Fondamentaux du langage - La Programmation pour les scientifiques|Matthieu Bruc
her|2003
wxPython IN Action|Noel Rappin, Robin Dunn|2006
Python pr├®cis et concis|Mark Lutz|2005
Programmation avec le langage Python|Xavier Dupr├®|2011
Programmation Python|Tarek Ziad├®|2009
Au coeur de Python - volume 2|Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Ann
e Bohy (Traduction)|2007
Au coeur de Python - volume 1|Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Ann
e Bohy (Traduction)|2007
Python en Concentr├® Manuel de r├®f├®rence|Alex Martelli|2007
Bases de donn├®es - de la MOD├®lisation au SQL|Audibert Laurent|2009
UML 2 - De l'apprentissage à la pratique|Audibert Laurent|2011
Design Patterns: Elements of Reusable Object-Oriented Software|Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides|1994
UML 2 en action , De l'analyse des besoins ├á la conception|Pascal Roques, Franck Vall├®e|
2007
UML en action , De l'analyse des besoins ├á la conception|Pascal Roques, Franck Vall├®e|20
00
UML pour les d├®cideurs|Franck Vall├®e (Auteur), Pascal Roques (Pr├®face)|2005

Amélioration de l'affichage

sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM livre2;
titre                                  auteur      annee_parution
-------------------------------------  ----------  --------------
Apprendre à programmer avec Python 3  Swinnen     2002
AppreNdre à programmer avec Python 3  Swinnen     2001
Apprendre à programmer avec Python 3  Swinnen     2001
apprendre à programmer avec Python 3  Swinnen     2002
Python Les Fondamentaux du langage -   Matthieu B  2003
wxPython IN Action                     Noel Rappi  2006
Python pr├®cis et concis               Mark Lutz   2005
Programmation avec le langage Python   Xavier Dup  2011
Programmation Python                   Tarek Ziad  2009
Au coeur de Python - volume 2          Wesley Chu  2007
Au coeur de Python - volume 1          Wesley Chu  2007
Python en Concentr├® Manuel de r├®f├®  Alex Marte  2007
Bases de donn├®es - de la MOD├®lisati  Audibert L  2009
UML 2 - De l'apprentissage à la prat  Audibert L  2011
Design Patterns: Elements of Reusable  Erich Gamm  1994
UML 2 en action , De l'analyse des be  Pascal Roq  2007
UML en action , De l'analyse des beso  Pascal Roq  2000
UML pour les d├®cideurs                Franck Val  2005
sqlite> .exit
sqlite> .width 50 50,5
sqlite> select * from livre2 where annee=2007;
Error: no such column: annee
sqlite> select * from livre2 where titre like 'UML%';
titre                                               auteur
              annee_parution
--------------------------------------------------  --------------------------------------
------------  --------------
UML 2 - De l'apprentissage à la pratique           Audibert Laurent
              2011
UML 2 en action , De l'analyse des besoins ├á la c  Pascal Roques, Franck Vall├®e
              2007
UML en action , De l'analyse des besoins ├á la con  Pascal Roques, Franck Vall├®e
              2000
UML pour les d├®cideurs                             Franck Vall├®e (Auteur), Pascal Roques
 (Pr├®face)   2005
sqlite> select auteur from livre2 where titre like 'UML%';
auteur
--------------------------------------------------
Audibert Laurent
Pascal Roques, Franck Vall├®e
Pascal Roques, Franck Vall├®e
Franck Vall├®e (Auteur), Pascal Roques (Pr├®face)

Afficher les auteurs

sqlite> SELECT auteur FROM livre2
   ...> ;
auteur
--------------------------------------------------
Swinnen
Swinnen
Swinnen
Swinnen
Matthieu Brucher
Noel Rappin, Robin Dunn
Mark Lutz
Xavier Dupr├®
Tarek Ziad├®
Wesley Chun (Auteur), Marie-C├®cile Baland (Traduc
Wesley Chun (Auteur), Marie-C├®cile Baland (Traduc
Alex Martelli
Audibert Laurent
Audibert Laurent
Erich Gamma, Richard Helm, Ralph Johnson, John Vli
Pascal Roques, Franck Vall├®e
Pascal Roques, Franck Vall├®e
Franck Vall├®e (Auteur), Pascal Roques (Pr├®face)
sqlite>

Questions :

  • Avec quelles valeurs codes hexadécimales (ou binaires) les caractères é et à sont ils stockés par SQLite ?
  • Comment s'appelle ce format ?
  • Requête permettant le nombre total d'auteurs ?

Ajouter deux colonnes : prix (réel) et éditeur (chaîne de 100 caractères) en utilisant le LDD de SQLite. Plus d'infos : ici

Puis ajoutez des valeurs dans ces colonnes.

C:\pgms\sqlite3\livre\v2>sqlite3 livre2.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> insert into livre2 values('titre é','auteur à',2007);
sqlite> select auteur from livre2 where annee_parution=2007;
Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Anne Bohy (Traduction)
Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Anne Bohy (Traduction)
Alex Martelli
Pascal Roques, Franck Vall├®e
auteur à
sqlite> select titre,auteur from livre2 where annee_parution=2007;
Au coeur de Python - volume 2|Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Ann
e Bohy (Traduction)
Au coeur de Python - volume 1|Wesley Chun (Auteur), Marie-C├®cile Baland (Traduction), Ann
e Bohy (Traduction)
Python en Concentr├® Manuel de r├®f├®rence|Alex Martelli
UML 2 en action , De l'analyse des besoins ├á la conception|Pascal Roques, Franck Vall├®e
titre é|auteur à
sqlite>
  • Cette table est elle en première forme normale ?
  • Pourquoi ?
  • Modifications à apporter ? (vous ne tiendrez pas compte, pour l'instant des auteurs)
>>> (executing lines 1 to 45 of "bdd1")
SQLite version: ('3.7.12',)
('Apprendre à programmer avec Python 3', 'Swinnen', 2002)
('AppreNdre à programmer avec Python 3', 'Swinnen', 2001)
('Apprendre à programmer avec Python 3', 'Swinnen', 2001)
('apprendre à programmer avec Python 3', 'Swinnen', 2002)
('Python Les Fondamentaux du langage - La Programmation pour les scientifiques', 'Matthieu Brucher', 2003)
('wxPython In Action', 'Noel Rappin, Robin Dunn', 2006)
('Python précis et concis', 'Mark Lutz', 2005)
('Programmation avec le langage Python', 'Xavier Dupré', 2011)
('Programmation Python', 'Tarek Ziadé', 2009)
('Au coeur de Python - volume 2', 'Wesley Chun (Auteur), Marie-Cécile Baland (Traduction), Anne Bohy (Traduction)', 2007)
('Au coeur de Python - volume 1', 'Wesley Chun (Auteur), Marie-Cécile Baland (Traduction), Anne Bohy (Traduction)', 2007)
('Python en Concentré Manuel de référence', 'Alex Martelli', 2007)
('Bases de données - de la modélisation au SQL', 'Audibert Laurent', 2009)
("UML 2 - De l'apprentissage à la pratique", 'Audibert Laurent', 2011)
('Design Patterns: Elements of Reusable Object-Oriented Software', 'Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides', 1994)
("UML 2 en action , De l'analyse des besoins à la conception", 'Pascal Roques, Franck Vallée', 2007)
("UML en action , De l'analyse des besoins à la conception", 'Pascal Roques, Franck Vallée', 2000)
('UML pour les décideurs', 'Franck Vallée (Auteur), Pascal Roques (Préface)', 2005)
>>> (executing lines 1 to 45 of "bdd1")
SQLite version: ('3.7.12',)
Traceback (most recent call last):
  File "F:\__2012_2013\_PREPAS\python\essais\bdd1", line 40, in <module>
    lignes = curseur.fetchall()
sqlite3.OperationalError: Could not decode to UTF-8 column 'auteur' with text 'auteur �'
>>> 

Quelles sont les valeurs stockées dans la table pour les deux caractères accentués de la dernière ligne ?

  • ouvert_a_tous/prepas/bdd/sqlite_ligne_de_commande_suite.1591779488.txt.gz
  • Dernière modification : 2022/12/03 07:45
  • (modification externe)