Instruction CREATE TABLE

L'instruction CREATE TABLE permet de créer une table dans un fichier de base de données. La syntaxe de l'instruction CREATE TABLE est la suivante :

Copier
CREATE TABLE nom_table ( liste_éléments_de_table [, liste_éléments_de_table...] )

Dans cette instruction, vous devez indiquer le nom et le type de données de chaque colonne.

  • nom_table correspond au nom de la table. nom_table possède une limite de 100 caractères. Aucune table portant ce nom ne doit avoir été définie. Le nom de la table doit commencer par un caractère alphabétique. Si le nom de la table commence par un caractère autre qu'un caractère alphabétique ou contient un point (.), placez-le entre des guillemets doubles (identifiant cité).

  • Le format de liste_éléments_table est le suivant :

    Copier
    nom_rubrique type_rubrique [[répétitions]]
    [DEFAULT expr] [UNIQUE | NOT NULL | PRIMARY KEY | GLOBAL]
    [FOREIGN KEY REFERENCES nom_table(nom_colonne)]
    [EXTERNAL chaîne_chemin_relatif [SECURE | OPEN chaîne_chemin_calc] [FEWER_FOLDERS]]
  • nom_rubrique correspond au nom de la rubrique. Les noms de rubriques doivent être uniques. Les noms des rubriques commencent par un caractère alphabétique. Si le nom d'une rubrique commence par un caractère autre qu'un caractère alphabétique ou contient un point (.), placez-le entre des guillemets doubles (identifiant cité).

    Exemple

    L'instruction CREATE TABLE de la rubrique intitulée _NOMFAMILLE est :

    Copier
    CREATE TABLE "_EMPLOYES" (ID INT PRIMARY KEY, "_PRENOM" VARCHAR(20), "_NOMFAMILLE" VARCHAR(20))
  • Pour les répétitions de l'instruction CREATE TABLE, spécifiez une rubrique multivaluée en utilisant un nombre entre 1 et 32000 entre crochets après le type de rubrique.

    Exemple

    Copier
    ID_EMPLOYE INT[4]
    NOMFAMILLE VARCHAR(20)[4]
  • type_rubrique peut être l'un des types suivants : NUMERIC, DECIMAL, INT, DATE, TIME, TIMESTAMP, VARCHAR, CHARACTER VARYING, BLOB, VARBINARY, LONGVARBINARY ou BINARY VARYING. Pour NUMERIC et DECIMAL, vous pouvez définir la précision et l'échelle. Par exemple : DECIMAL(10,0). Pour TIME et TIMESTAMP, vous pouvez définir la précision. Par exemple : TIMESTAMP(6). Pour VARCHAR et CHARACTER VARYING, vous pouvez définir la longueur de la chaîne.

    Exemple

    Copier
    VARCHAR(255)
  • Le mot-clé DEFAULT vous permet de définir une valeur par défaut pour une colonne. Pour expr, vous pouvez utiliser une valeur constante ou une expression. Les expressions autorisées sont les suivantes : USER, USERNAME, CURRENT_USER, CURRENT_DATE, CURDATE, CURRENT_TIME, CURTIME, CURRENT_TIMESTAMP, CURTIMESTAMP et NULL.

  • Quand vous définissez une colonne comme étant UNIQUE, l'option de validation Unique est sélectionnée automatiquement pour la rubrique correspondante dans le fichier de base de données FileMaker Pro.

  • Quand vous définissez une colonne en tant que NOT NULL, l'option de validation Non Vide est sélectionnée automatiquement pour la rubrique correspondante dans le fichier de base de données FileMaker Pro. La rubrique est marquée en tant que Valeur requise dans l'onglet Rubriques de la boîte de dialogue Gérer la base de données de FileMaker Pro.

  • Pour définir une colonne en tant que rubrique Conteneur, utilisez BLOB, VARBINARY, ou BINARY VARYING en guise de type_rubrique.

  • Pour définir une colonne en tant que rubrique Conteneur stockant les données en externe, utilisez le mot-clé EXTERNAL. L'élément chaîne_chemin_relatif définit le dossier dans lequel les données sont stockées en externe, par rapport à l'emplacement de la base de données FileMaker Pro. Ce chemin doit être défini en tant que répertoire de base dans la boîte de dialogue Gérer les conteneurs de FileMaker Pro. Vous devez préciser SECURE pour un stockage sécurisé ou OPEN pour un stockage ouvert. Si vous utilisez un stockage ouvert, l'élément chaîne_chemin_calc correspond au dossier figurant dans le dossier chaîne_chemin_relatif où les objets Conteneur doivent être stockés. Le chemin doit utiliser des barres obliques (/) dans le nom de dossier. Spécifier FEWER_FOLDERS revient à activer l'option Avec moins de dossiers pour la source de données.

  • Pour définir un lien de clé étrangère, utilisez la clause FOREIGN KEY REFERENCES après le type de rubrique. La colonne de clé étrangère doit être de type INT, NUMERIC, DECIMAL ou VARCHAR, et doit correspondre au type de données de la colonne référencée. La table référencée doit déjà exister, et la colonne référencée doit exister dans cette table.

    Avec la clause FOREIGN KEY REFERENCES, l'instruction CREATE TABLE ou ALTER TABLE crée le lien dans le graphe de liens FileMaker. Ces instructions échouent et renvoient l'erreur 8201 si le lien crée une référence circulaire (cycle) dans le graphe de liens.

    Exemple

    Copier
    CREATE TABLE Commandes (
        IDCommande INT PRIMARY KEY,
        IDClient INT FOREIGN KEY REFERENCES Clients(IDClient),
        DateCommande DATE
    )

 

Exemples

Utilisation de

Exemple de code SQL

colonne de texte

Copier
CREATE TABLE T1 (C1 VARCHAR, C2 VARCHAR (50), C3 VARCHAR (1001), C4 VARCHAR (500276))

colonne de type texte, NOT NULL

Copier
CREATE TABLE T1NN (C1 VARCHAR NOT NULL, C2 VARCHAR (50) NOT NULL, C3 VARCHAR (1001) NOT NULL, C4 VARCHAR (500276) NOT NULL)

colonne de type numérique

Copier
CREATE TABLE T2 (C1 DECIMAL, C2 DECIMAL (10,0), C3 DECIMAL (7539,2), C4 DECIMAL (497925,301))

colonne de type date

Copier
CREATE TABLE T3 (C1 DATE, C2 DATE, C3 DATE, C4 DATE)

colonne de type heure

Copier
CREATE TABLE T4 (C1 TIME, C2 TIME, C3 TIME, C4 TIME)

colonne de type horodatage

Copier
CREATE TABLE T5 (C1 TIMESTAMP, C2 TIMESTAMP, C3 TIMESTAMP, C4 TIMESTAMP)

colonne pour rubrique Conteneur

Copier
CREATE TABLE T6 (C1 BLOB, C2 BLOB, C3 BLOB, C4 BLOB)

colonne pour rubrique Conteneur de stockage externe

Copier
CREATE TABLE T7 (C1 BLOB EXTERNAL 'Fichiers/MaBaseDeDonnée/' SECURE) 
CREATE TABLE T8 (C1 BLOB EXTERNAL 'Fichiers/MaBaseDeDonnée/' OPEN 'Objets')

table avec des liens de clés étrangères

Copier
-- Créer d'abord des tables parentes
CREATE TABLE Auteurs (IDAuteur INT PRIMARY KEY, NomAuteur VARCHAR(100) NOT NULL)
CREATE TABLE Genres (IDGenre INT PRIMARY KEY, NomGenre VARCHAR(50) NOT NULL)

-- Créer une table enfant avec des clés étrangères
CREATE TABLE Livres (
    IDLivre INT PRIMARY KEY,
    Titre VARCHAR(255) NOT NULL,
    IDAuteur INT FOREIGN KEY REFERENCES Auteurs(IDAuteur),
    IDGenre INT FOREIGN KEY REFERENCES Genres(IDGenre)
)

-- Créer une table petit-enfant avec une clé étrangère
CREATE TABLE LivresChapitre (
    IDChapitre INT PRIMARY KEY,
    Chapitre VARCHAR(255) NOT NULL,
    ID_Livre INT FOREIGN KEY REFERENCES Livres(IDLivre)
)