Next Previous Up Top Contents Index

2. Opérations de base

2-3 Créer des tables

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.

2-3.1 Fichier de commande

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:

Table 1: Types de champs

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:

    • "one"
    • "two"
    • "three"

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:

    • ""
    • "one"
    • "two"
    • "one,two"

1-8

2-3.2 Soumettre le fichier de commande à mSQL

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:

Exemple

  1. mysql -h tecfasun1 test < /comm/tecfa/www/swiss-edu/mysql/table-exemple.mysql
    Crée une table nommée phase_3 dans la base de données test sur la machine tecfasun1. Les commandes SQL qui définissent la table sont dans le fichier table-exemple.mysql.

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.

2-3.1 - Fichier de commande
2-3.2 - Soumettre le fichier de commande à mSQL

Memo mySQL - 29 Apr 1998

Next Previous Up Top Contents Index

Generated with Harlequin WebMaker