Mécanisme de redirection
Pour des opérations comme la création d'une nouvelle table, une requête SQL peut occuper plusieurs lignes. Il est malaisé de les saisir une à une à l'invite mSQL>. C'est pourquoi il est nécessaire d'utiliser un fichier de commande, qui consiste en une ou plusieurs requêtes SQL. Celui-ci est ensuite soumis en une fois au serveur en utilisant le mécanisme de redirection. Le signe < est utilisé pour 'donner à manger' à une commande. Dans l'exemple fictif qui suit, la commande mouline va prendre comme entrée le fichier de commande mes_commandes:
mouline < mes_commandes
Le mécanisme de redirection est également utilisé pour récupérer le résultat d'une commande dans un fichier. La redirection s'exprime avec le signe >. L'exemple fictif ci-dessous sauve le résultat de la commande mouline dans un fichier resultats.txt. Voir "Backup des bases de données" à la page 11 pour un exemple concret.
mouline > resultats.txt
On crée des tables en écrivant une requête CREATE TABLE dans un fichier de commande et en appelant msql avec ce fichier en argument. La base de données pour laquelle on veut créer une table doit exister! Si ce n'est pas le cas, voir "Créer une base de données" à la page 12.
Voici un exemple de fichier de commandes qui sert à créer une table. (http://agora.unige.ch/msql/table-exemple.sql). Un éditeur de texte minimal suffit pour composer un tel fichier (Notepad, Simple Text). Les lignes précédées de # sont des commentaires et ne produisent aucun effet.
Les types de champ possibles sont décrits ci-dessous. Notez qu'il n'est pas impératif d'utiliser le type MONEY pour stocker des valeurs monétaires. Une chaîne de caractères CHAR ou un entier INT peuvent faire l'affaire. Néanmoins, la recherche de valeurs précises peut être facilitée par l'utilisation de ces types. Avec le type MONEY par exemple, on sait à priori que les chiffres n'auront jamais plus de deux décimales.
CHAR(len): Une chaîne de caractères de longueur 'len'. Ce type de champ peut faire l'objet d'une recherche par mots-clé.
TEXT(len): Une chaîne de caractères de longueur variable. Le paramètre 'len' permet de définir la longueur attendue de la chaîne et réserve de l'espace disque en fonction. Il est néanmoins possible de stocker un nombre de caractères supérieur à 'len' dans ce type de champ. Il n'est pas possible d'effectuer une recherche par mots-clé sur un champ de type TEXT.
INT: valeurs entières (..., -1,-3, ..., 5,..., 777, ...).
REAL: valeurs réelles (..., -3.456, ...., 34.567, ...).
UINT: (0, 1, 2, ....).
DATE: Dates dans le format, DD-Mon-YYYY, comme par exemple 1-Jan-1987.
TIME: Heures en format 24 heures, par exemple 14:56:34
MONEY: Argent sous la forme de nombres à deux décimales, par exemple, 34.05
Pour ne pas abîmer les bases de données installées sur nos machines, une base de donnée nommée 'test' a été créée sur la machine tecfasun1. Utilisez la pour faire vos essais.
Une fois le fichier de commande terminé, lancer la commande msql avec une redirection. On donne en argument, la machine sur laquelle se trouve le serveur mSQL (-h tecfasun2), le nom de la base de données (test) et le fichier contenant les commandes SQL:
tecfasun2:bin 338) msql -h tecfasun1 test < /comm/tecfa/www/swiss-edu/msql/table-exemple.sql Welcome to the miniSQL monitor. Type \h for help. mSQL > -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Query OK. 1 row(s) modified or retrieved.
Remarque:
Si vous obtenez des messages, d'erreur c'est que votre fichier de commande comporte une faute de syntaxe, ou que la base de données n'existe pas, ou encore que vous n'avez pas la permission de modifier cette base de données.