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

Améliorez l'affichage

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

Modifiez des lignes

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

Supprimez des lignes

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;

Quittez sqlite

sqlite> .exit
C:\pgms\sqlite3>dir /w
[.] [..] base_livre.db
sqlite3.exe
C:\pgms\sqlite3>

Session de travail complète

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 !!!

Exportation d'une table au format CSV

.mode csv
.header on
.out livres1.csv
select * from livre;
.output stdout

Importation d'une table au format CSV

.mode csv
.separator ","
.import livres1.csv livre

Importation de données au format SQL

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

Modifier la largeur des colonnes

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 ?

Modification de la table livre2

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)

Exécution d'un programme Python

>>> (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 ?