Retour à la page d'accueil Retour au sommaire de l'aide

Mises à jour (3)

Pour les utilisateurs avancés...

Il y a une troisième manière de modifier la base de données : les instructions SQL.
La syntaxe est la suivante :

sql: [instructions dans le langage SQL]

C'est un mode très puissant qui permet de faire tout ce qu'on veut. A vous les bouquins de 1000 pages sur les possibilités du SQL !
A titre d'exemple voici une instruction qui ajoute votre nom en tête de la liste des personnages :

sql:INSERT INTO tblpersonnages (Nom, Nomcourt,Clé) VALUES ('HOCHON, Paul', 'hochon', 0.5)

Je vous rappelle que l'instruction doit figurer sur une seule ligne.
Dans certains cas, l'utilisation d'instructions SQL est indispensable. Par exemple lorqu'il s'agit d'ajouter des enregistrements dans la table Sommaire consacrée aux magazines. Imaginons que vous téléchargiez deux fois la même mise à jour : vous aurez dans ce cas deux fois les mêmes enregistrements. Il faut donc mettre en tête du fichier (s'il concerne la mise à jour d'un numéro entier) :

sql:DELETE FROM tblSommaire WHERE NumJournal = [numéro en chiffres] AND Année = [numéro en chiffres]

Soyez prudent avec l'instruction DELETE : vous pouvez effacer une table entière par mégarde !

Si vous êtes un "pro" du SQL cliquez sur le bouton "Exporter" et sélectionnez "Renseignements sur la base de données". Vous aurez de précieuses indications sur le nom des tables et les caractéristiques de chaque champ.

Lorsque vous effectuez une mise à jour à l'aide d'un fichier texte, le programme crée automatiquement un fichier back-up de sauvegarde des données précédentes dans le même répertoire que votre fichier de MAJ. Il porte le même nom, précédé de "BACKUP_".
En cas d'instructions SQL la fiabilité de ce fichier back-up n'est pas garantie !
Pour désactiver cette fonction vous pouvez rajouter en haut : "no backup" (sans les guillemets).

Petit cours de SQL

Le langage SQL comporte trois instructions principales :
DELETE : pour supprimer des données.
UPDATE : pour modifier des données existantes.
INSERT : pour insérer de nouvelles données.
Très important : la clause WHERE, si vous l'oubliez vous risquez de tout perdre, ou de modifier TOUTES les données au lieu d'une !
Pour être concret commençons par la table Dessins. Elle comporte deux champs principaux : "Description" et "Clé" (numéro de vignette).
Imaginons que vous vouliez modifier la description de la case 23 de l'Espadon et rajouter le mot "lunettes". Vous écrirez votre instruction comme suit (sur une seule ligne) :

sql:update tbldessins set description = " hasso téléphoner radio lunettes " where clé = 23 and album = "Le Secret de l'Espadon (1)"

Si vous oubliez le "Where" TOUTES les cases auront cette description...
N'oubliez pas l'espace avant et après chaque mot-clé.
Imaginons que vous vouliez juste rajouter le mot "lunettes", l'instruction deviendra :

sql:update tbldessins set description = decription + "lunettes " where clé = 23 and album = "Le Secret de l'Espadon (1)"

C'est plus subtil... notez qu'il n'y a pas d'espace avant "lunettes" car, en principe, le champ description se termine toujours par un espace.
Il n'est pas conseillé d'utiliser l'instruction DELETE avec la table Dessins car chaque clé est unique. Néanmoins si vous voulez le faire voici une petite illustration des deux commandes DELETE et INSERT :
Pour supprimer entièrement la description liée à la case 1 :

sql:delete from tbldessins where clé = 23 and album = "Le Secret de l'Espadon (1)"

Et pour rajouter l'enregistrement (toujours sur une seule ligne):

sql:insert into tbldessins (Album, Page, Strip, Case, Clé, Description) values ("Le Secret de l'Espadon (1)", 5, 2, 4, 23, " hasso téléphoner radio lunettes ")

Vous noterez que les chaînes de caractères doivent être entourées de guillemets, contrairement aux chiffres qui en sont dépourvus.
Vous avez donc compris que l'instruction DELETE doit être suivie de FROM nom_de_la_table ainsi que d'une clause WHERE (sauf si vous voulez effacer toute la table) tandis que l'instruction INSERT se présente sous la forme INSERT INTO nom_de_la_table (noms_des_champs séparés par une virgule) VALUES (valeurs_des_champs séparées par une virgule).

Quelques exemples concrets

Si vous voulez rajouter un mot-clé :

sql:insert into tblmotsclés (MotClé, Catégorie, InfoBulle, Tag) values ("Porteurs de lunettes", "Divers", "Tous les binoclards, sauf le professeur\nTournesol, déjà recensé","lunettes")

Vous avez remarqué que les 4 champs de la table Mots-Clés s'intitulent "MotClé" (l'intitulé dans la zone de liste), "Catégorie" (l'une des catégories pré-définies : elles font partie de la table intitulée "CatégorieMotsClés" modifiable elle aussi), "Infobulle" (ce qui s'affiche quand on le sélectionne - vous noterez au passage le caractère "\n" qui insère un saut de ligne) et "Tag" (le mot-clé qui figure réellement dans la base de données).
Et pour le supprimer :

sql:delete from tblmotsclés where tag = "lunettes"

On choisira donc dans la clause where une valeur unique de préférence, mais on aurait pû écrire :

sql:delete from tblmotsclés where motclé = "Porteurs de lunettes" and catégorie = "Divers" and tag = "lunettes"

Un tel raffinement n'est pas indispensable...

Autre exemple d'instruction UPDATE :

Vous voulez par exemple changer le nombre de pages d'un journal pour une année donnée. Vous écrirez :

sql:update tbljournal set nbpages = 32 where annee = 1957

On rappellera que les chiffres s'écrivent sans guillemets contrairement aux chaînes de caractères. Si vous oubliez la clause WHERE tous les numéros auront 32 pages !

Nouveau à partir de la version 3.6 :

Il est possible d'utiliser l'instruction SELECT dans un fichier de mise à jour ! (pour les utilisateurs avertis)
Toutes les possibilités de tris sont possibles. A titre d'exemple, vous voulez savoir quels numéros sont entrés dans la table Sommaire. En outre vous voulez savoir jusqu'à quelle page vous avez entré le sommaire par rapport au nombre maxi de pages. Vous écrirez :

sql:select distinct annee, tbljournal.numjournal, tbljournal.nbpages, max(page) as nbpages_entrées from tblsommaire right join tbljournal on tblsommaire.numjournal = tbljournal.numjournal and tblsommaire.année = tbljournal.annee group by annee, tbljournal.numjournal, tbljournal.nbpages

Un fichier s'ouvrira sous vos yeux ébahis avec tous les résultats classés par années.

A suivre...

<-- Page précédente Page suivante -->

Accueil    Connexion / Déconnexion