truc2geek

2012/04/24

SQLite part 3 : créer une vue, modes d’affichage…

Filed under: SQLite — Étiquettes : , , , , , , — truc2geek @ 21:45

ouvrir une BD existante et la modifier

ouvrir la BD créée dans l’article précédent :
c’est la même commande que pour créer la BD : simplement cette fois, sqlite va trouver la BD et l’ouvrir.
C:\SQLite\v-3-7-11\sqlite3 D:\BaseTest2.db

on active la gestion de l’intégrité référentielle :
PRAGMA foreign_keys = ON;

ajouter une société :
INSERT INTO T_Societe
(nom, info)
VALUES (‘Le Verger’, ‘gros client’);

lister le contenu de la table pour vérifier :
SELECT * FROM T_Societe;
1:AlimPlus:1er client
3:Le Verger:gros client

on peut ne pas fournir de valeur pour les champs qui n’ont pas été créés avec le mot-clé « NOT NULL », exemple le champ « info » :
INSERT INTO T_Societe
(nom)
VALUES (‘Fast Courses’);

les apostrophes dans les chaînes SQL

si une valeur contient un apostrophe, il faut la doubler : par exemple pour un client nommé L’Epicerie du Centre
INSERT INTO T_Societe
(nom)
VALUES (‘L »Epicerie du Centre’);

on vérifie :
SELECT * FROM T_Societe;
1:AlimPlus:1er client
3:Le Verger:gros client
4:Fast Courses:
5:L’Epicerie du Centre
ok.

créer une vue

on ajoute d’abord quelques contrats : volontairement, deux contrats liés à une société (Le Verger) et aucun à une autre (Fast Courses), ce qui permettra de vérifier que la vue qui sera créée ensuite se comporte comme on le souhaite.

INSERT INTO T_Contrat
(id_societe, date_sign)
VALUES (3, ‘2012-03-17’);

INSERT INTO T_Contrat
(id_societe, date_sign)
VALUES (5, ‘2012-04-01’);

INSERT INTO T_Contrat
(id_societe, date_sign)
VALUES (3, ‘2012-04-08’);

on vérifie :
SELECT * FROM T_Contrat;
3:1:2012-03-14
4:3:2012-03-17
5:5:2012-04-01
6:3:2012-04-08

on a une table « sociétés » et une table « contrats » : on va maintenant créer une vue « contrats », qui va lister les contrats en récupérant pour chacun d’eux, les données sur la société à laquelle il est rattaché.

CREATE VIEW V_Contrat AS
SELECT T_Societe.id_societe, T_Societe.nom, T_Societe.info, T_Contrat.id_contrat, T_Contrat.id_societe, T_Contrat.date_sign
FROM T_Societe NATURAL JOIN T_Contrat;

Dans cette vue, j’ai volontairement sélectionné deux fois le champ « id_societe » :
celui qui constitue la clé primaire dans la table « T_Societe »
et celui qui est présent dans la table « T_Contrat » (en tant que clé étrangère).
C’est simplement pour vérifier que la vue relie chaque contrat à la bonne société.

afficher le contenu de la vue :
SELECT * FROM V_Contrat;
1:AlimPlus:1er client:3:1:2012-03-14
3:Le Verger:gros client:4:3:2012-03-17
5:L’Epicerie du Centre::5:5:2012-04-01
3:Le Verger:gros client:6:3:2012-04-08

on retrouve bien nos 4 contrats.
sur chaque ligne affichée, la valeur est la même pour les deux champs « id_societe » : chaque contrat est rattaché à la bonne société.
par contre les données sont « collées », c’est illisible.

modes d’affichage des données (.mode, .header, .separator, .width, .nullvalue)

quand on consulte le contenu d’une table (ou d’une vue), la manière dont sont affichées par défaut les données n’est pas très lisible, mais on a plusieurs modes d’affichage à disposition :
column, csv, html, insert, line, list, tabs, tcl

le mode « list »

c’est le mode d’affichage par défaut.

SELECT * FROM V_Contrat;
1:AlimPlus:1er client:3:1:2012-03-14
3:Le Verger:gros client:4:3:2012-03-17
5:L’Epicerie du Centre::5:5:2012-04-01
3:Le Verger:gros client:6:3:2012-04-08

.separator

le séparateur par défaut est « : ».
On peut le modifier, et insérer un espace par la même occasion pour améliorer la lisibilité :

.separator « ,  »
SELECT * FROM V_Contrat;
1, AlimPlus, 1er client, 3, 1, 2012-03-14
3, Le Verger, gros client, 4, 3, 2012-03-17
5, L’Epicerie du Centre, , 5, 5, 2012-04-01
3, Le Verger, gros client, 6, 3, 2012-04-08

le mode « line »

chaque enregistrement sera affiché sur autant de lignes que la source de données comporte de champs.
sur chaque ligne, on aura [nom du champ] = [valeur]

.mode line
SELECT * FROM V_Contrat;
id_societe = 1
nom = AlimPlus
info = 1er client
id_contrat = 3
id_societe:1 = 1
date_sign = 2012-03-14

id_societe = 3
nom = Le Verger
info = gros client
id_contrat = 4
id_societe:1 = 3
date_sign = 2012-03-17

id_societe = 5
nom = L’Epicerie du Centre
info =
id_contrat = 5
id_societe:1 = 5
date_sign = 2012-04-01

id_societe = 3
nom = Le Verger
info = gros client
id_contrat = 6
id_societe:1 = 3
date_sign = 2012-04-08

le mode « column »

.mode column
SELECT * FROM V_Contrat;
1         AlimPlus   1er client 3       1       2012-03-14
3         Le Verger  gros clien 4       3       2012-03-17
5         L’Epicerie            5       5       2012-04-01
3         Le Verger  gros clien 6       3       2012-04-08

.width

Par défaut, chaque colonne est large de 10 caractères. Les valeurs plus longues sont tronquées.
Pour indiquer la largeur désirée pour chaque colonne :
.width x1, x2, x3 etc… (pour autant de champs)

.width 2, 20, 15, 2, 2, 10
SELECT * FROM V_Contrat;
1   AlimPlus                       1er client        3  1  2012-03-14
3   Le Verger                      gros client     4  3  2012-03-17
5   L’Epicerie du Centre                          5  5  2012-04-01
3   Le Verger                      gros client     6  3  2012-04-08

.header

Par défaut, l’en-tête des champs n’est pas affiché.
entrer « .header » suivi de « on » ou « off » pour activer ou désactiver l’affichage de l’en-tête

le mode « insert »

ce mode ne peut s’appliquer qu’à une table.
Il permet de générer des instructions SQL de création à partir des données présentes dans la BD,
par exemple pour exécuter ensuite ces instructions SQL dans une autre BD.
il faut indiquer le nom de la table dans laquelle seront créées ces données, ci-dessous « T_AutreTable ».

.mode insert T_AutreTable
SELECT * FROM T_Societe;
INSERT INTO T_AutreTable VALUES(1,’AlimPlus’,’1er client’);
INSERT INTO T_AutreTable VALUES(3,’Le Verger’,’gros client’);
INSERT INTO T_AutreTable VALUES(4,’Fast Courses’,NULL);
INSERT INTO T_AutreTable VALUES(5,’L »Epicerie du Centre’,NULL);

le mode « csv »

.mode csv
SELECT * FROM V_Contrat;
1,AlimPlus, »1er client »,3,1,2012-03-14
3, »Le Verger », »gros client »,4,3,2012-03-17
5, »L’Epicerie du Centre »,,5,5,2012-04-01
3, »Le Verger », »gros client »,6,3,2012-04-08

le mode « html »

affiche les données sous forme de tableau HTML

.header on
SELECT * FROM V_Contrat;
<TR><TH>id_societe</TH>
<TH>nom</TH>
<TH>info</TH>
<TH>id_contrat</TH>
<TH>id_societe:1</TH>
<TH>date_sign</TH>
</TR>
<TR><TD>1</TD>
<TD>AlimPlus</TD>
1er client
<TD>3</TD>
<TD>1</TD>
<TD>2012-03-14</TD>
</TR>
<TR><TD>3</TD>
<TD>Le Verger</TD>
<TD>gros client</TD>
<TD>4</TD>
<TD>3</TD>
<TD>2012-03-17</TD>
</TR>
<TR><TD>5</TD>
L’Epicerie du Centre
<TD></TD>
<TD>5</TD>
<TD>5</TD>
<TD>2012-04-01</TD>
</TR>
<TR><TD>3</TD>
<TD>Le Verger</TD>
<TD>gros client</TD>
<TD>6</TD>
<TD>3</TD>
<TD>2012-04-08</TD>
</TR>

le mode « tabs »

chaque valeur est affichée en entier
SELECT * FROM V_Contrat;
id_societe      nom     info    id_contrat      id_societe:1    date_sign
1       AlimPlus        1er client      3       1       2012-03-14
3       Le Verger       gros client     4       3       2012-03-17
5       L’Epicerie du Centre            5       5       2012-04-01
3       Le Verger       gros client     6       3       2012-04-08

le mode « tcl »

entoure les données de guillemets doubles
SELECT * FROM V_Contrat;
« id_societe »: »nom »: »info »: »id_contrat »: »id_societe:1″: »date_sign »:
« 1 »: »AlimPlus »: »1er client »: »3″: »1″: »2012-03-14″:
« 3 »: »Le Verger »: »gros client »: »4″: »3″: »2012-03-17″:
« 5 »: »L’Epicerie du Centre »: » »: »5″: »5″: »2012-04-01″:
« 3 »: »Le Verger »: »gros client »: »6″: »3″: »2012-04-08″:

.nullvalue

par défaut, les valeurs nulles sont affichées par des espaces
pour définir un autre affichage, entrer .nullvalue x, où x est la valeur par défaut qu’on souhaite voir

exemple avec le mode column :

Publicités

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :