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 mySQL>. 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 d'une base de données" à la page 4 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 mysql 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 3.
Voici un exemple de fichier de commandes qui sert à créer une table. (http://agora.unige.ch/mysql/table-exemple.mysql). 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. Chaque champ est défini en donnant d'abord son nom puis son type.
# MySQL dump 4.0 # # Host: tecfa Database: test #-------------------------------------------------------- # # Table structure for table 'phase_3' # DROP TABLE phase_3; CREATE TABLE phase_3 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, when_date DATE, when_time TIME, authors VARCHAR(25) NOT NULL, parents VARCHAR(25), title VARCHAR(80) NOT NULL, description TEXT NOT NULL, thumb_url VARCHAR(255) NOT NULL ) ;
Notez que la première commande du fichier est 'DROP TABLE phase_3'. Cette commande efface la table phase_3 si elle existe déjà. L'exécution de la commande DROP provoque une erreur si la table visée n'existe pas. Dans ce cas il suffit de mettre cette ligne en commentaire (ajouter un # devant).
Les types de champ possibles sont décrits en détail dans le manuel de référence : http://tecfa.unige.ch/guides/mysql/ref-3.21.22-beta/manual.html#Column types. Voici néanmoins les types les plus utilisés:
Nom | Description | Taille |
---|---|---|
CHAR(M) [binary] | Une chaîne de caractères de taille fixe qui utilise des espaces pour remplir le champ jusqu'à concurrence de M caractères. La taille M est comprise entre 1 et 255 caractères. Tous les espaces supplémentaires sont enlevés lorsqu'on récupère la valeur. Le tri et la comparaison de valeurs se fait indifféremment de la casse a moins que le mot-clé 'binary' soit spécifié. | M |
VARCHAR(M) [binary] | Une chaîne de caractères de taille variable qui est stockée avec sa longueur (L+1). La taille M maximale est comprise entre 1 et 255 caractères. Le tri et la comparaison de valeurs se fait indifféremment de la casse a moins que le mot-clé 'binary' soit spécifié. | L+1 |
TEXT and BLOB | Un TEXT/BLOB avec une longueur maximale de 65535 caractères. Ces champs ne peuvent pas servir de clé d'index. | L+2 |
INT[(D)] [UNSIGNED] [ZEROFILL] | Un entier normal. Intervalle signé: -2147483648 à 2147483647. Intervalle non-signé: 0 à 4294967295. | 4 |
DATE | Un type permettant de stocker des dates. Utilise la syntaxe "YYYY-MM-DD", mais peut être mis a jour par un nombre ou une chaîne de caractères. Comprend au moins les syntaxes suivantes: 'YY-MM-DD', 'YYYY-MM-DD', 'YYMMDD', 'YYMM', 'YY'. Intervalle de 0000-00-00 à 9999-12-31. | 4 |
TIME | Un type permettant de stocker des heures.Utilise la syntaxe "HH:MM:SS", mais peut être mis à jour avec un nombre ou une chaîne de caractères. Comprend au moins les syntaxes suivantes: 'HH:MM:DD, 'HHMMDD', 'HHMM', 'HH'. | 3 |
ENUM('value','value2',...) | Une chaîne de caractères qui peut avoir une valeur parmi un ensemble de valeurs spécifiques. Par exemple la colonne test ENUM("one","two", "three") peut avoir une des valeurs suivantes:
|
1 ou 2 |
SET('value','value2',...) | Une châine de caractères qui peut avoir une ou plusieurs valeurs d'un ensemble de valeurs possibles. Par exemple, la colonne test SET("one","two") peut avoir une des valeurs suivantes:
|
1-8 |
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 mysql avec une redirection. On donne en argument, la machine sur laquelle se trouve le serveur mSQL (-h tecfasun1), le nom de la base de données (test) et le fichier contenant les commandes SQL:
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.
Generated with Harlequin WebMaker