Créer ou modifier des tables ou index à l’aide d’une requête Définition des données

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Dans Microsoft Office Access 2007, il est facile de créer et modifier des tables, des contraintes et des index en mode Création et créer des relations à l'aide de la fenêtre Relations. Par ailleurs, vous pouvez créer et modifier ces mêmes entités en écriture de requêtes Définition des données en mode SQL.

Cet article décrit les requêtes de définition de données et explique comment utiliser ces requêtes pour créer des tables, des index, des contraintes et des relations. Cet article peut également vous aider à décider quand utiliser une requête de définition de données.

Que voulez-vous faire ?

Apprendre à utiliser une requête de définition de données au moment opportun

Créer ou modifier une table

Créer un index

Créer une contrainte ou une relation

Apprendre à utiliser une requête de définition de données au moment opportun

Contrairement aux autres requêtes, une requête Définition des données ne récupère pas les données. La plupart des requêtes utilisez langage DML (Data Manipulation), qui comprend des commandes de langage SQL (Structured Query) qui spécifient comment les données à partir d'objets de base de données existante sont combinées et manipuler pour générer les résultats de données que vous voulez. Requêtes Définition des données utilisent le langage DDL (Data Definition), qui comprend les commandes SQL qui spécifient la définition d'objets de base de données qui stockent ou indexer des données et les commandes SQL qui contrôlent l'accès utilisateur aux objets de base de données. Dans Office Access 2007, une requête Définition des données définit ou modifie la définition d'un objet de base de données.

En règle générale, vous devez utiliser les interfaces de conception graphique ce Office Access 2007 fournit (par exemple, en mode Création et la fenêtre Relations) pour créer des tables, des contraintes, des index et des relations. Toutefois, si vous avez des tables que vous supprimez et recréez régulièrement, à l'aide de ces interfaces peut être beaucoup de temps. En utilisant une requête Définition des données, vous pouvez écrire une requête une seule fois, puis exécutez-le à nouveau lorsque cela est nécessaire. Envisagez d'utiliser une requête Définition des données uniquement si vous connaissez les instructions SQL et si vous souhaitez supprimer et recréer des tables, contraintes ou à partir d'index régulièrement.

Important : L'utilisation de requêtes de définition de données pour modifier des objets de base de données peut se révéler risquée, car les actions ne sont pas accompagnées de boîtes de dialogue de confirmation. Si vous faites une erreur, vous pouvez perdre des données ou modifier par inadvertance la structure d'une table. Soyez prudent lorsque vous utilisez une requête de définition de données pour modifier des objets dans votre base de données. Si vous n'êtes pas responsable de la gestion de la base de données que vous utilisez, vous devez contacter l'administrateur de la base de données avant d'exécuter une requête de définition de données. En outre, il est judicieux d'effectuer une copie de sauvegarde de toutes les tables sur lesquelles vous êtes sur le point d'exécuter une telle requête.

Haut de la page

Créer ou modifier une table

Pour créer une table, il faut utiliser la commande CREATE TABLE. Une commande CREATE TABLE a la syntaxe suivante :

CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2]
[, ...][, CONSTRAINT constraint1 [, ...]])

Les seuls éléments requis d'une commande CREATE TABLE sont la commande Créer un tableau elle-même, le nom de la table, au moins un champ et le type de données de chaque champ. Examinons un exemple simple.

Supposez que vous souhaitez créer une table pour stocker le nom, l’année et le prix de véhicules d’occasion que vous avez sélectionnés en vue d’un achat. Vous souhaitez autoriser jusqu’à 30 caractères pour le nom et 4 caractères pour l’année. Pour utiliser une requête Définition des données pour créer la table, procédez comme suit :

Remarque : Vous devez d'abord activer le contenu de la base de données afin d'exécuter une requête de définition de données.

  1. Dans la Barre des messages, cliquez sur Options, puis sur Activer ce contenu.

  2. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  3. Fermez la boîte de dialogue Afficher la table.

  4. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  5. Tapez l’instruction SQL suivante :

    CREATE TABLE Véhicules (Nom TEXT(30), Année TEXT(4), Prix CURRENCY)

  6. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Modifier une table

Pour modifier une table, il faut utiliser la commande ALTER TABLE. Vous pouvez utiliser une commande ALTER TABLE pour ajouter, modifier ou supprimer des colonnes ou des contraintes. Une commande ALTER TABLE a la syntaxe suivante :

ALTER TABLE table_name predicate

où predicate peut correspondre à n'importe lequel des éléments suivants :

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Supposez que vous souhaitez ajouter un champ de texte à 10 caractères pour stocker des informations concernant l’état de chaque véhicule. Vous pouvez effectuer les opérations suivantes :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    ALTER TABLE Véhicules ADD COLUMN État TEXT(10)

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Haut de la page

Créer un index

Pour créer un index sur une table existante, il faut utiliser la commande CREATE INDEX. Une commande CREATE INDEX a la syntaxe suivante :

CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...])
[WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

Les seuls éléments requis sont la commande CREATE INDEX, le nom de l’index, l’argument ON, le nom de la table qui contient les champs à indexer et la liste des champs à inclure dans l’index.

  • L’argument DESC fait en sorte que l’index soit créé par ordre décroissant, ce qui peut être utile si vous exécutez fréquemment des requêtes qui recherchent des valeurs supérieures pour le champ indexé ou qui trient le champ indexé par ordre décroissant. Par défaut, un index est créé par ordre décroissant.

  • L'argument WITH PRIMARY définit l'ou les champs indexés comme clé primaire de la table.

  • L’argument WITH DISALLOW NULL fait en sorte que l’index requiert l’entrée d’une valeur pour le champ indexé ; autrement dit, les valeurs nulles ne sont pas autorisées.

Supposez que vous avez une table nommée Véhicules avec des champs contenant le nom, l’année, le prix et l’état de véhicules d’occasion que vous avez sélectionnés en vue d’un achat. Supposez également que la table est devenue volumineuse et que vous incluez fréquemment le champ d’année dans les requêtes. Vous pouvez créer un index sur le champ Année afin d’aider à ce que vos requêtes retournent des résultats plus rapidement en appliquant la procédure suivante :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    CREATE INDEX IndexAnnée ON Véhicules (Année)

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Haut de la page

Créer une contrainte ou une relation

Une contrainte établit une relation logique qu’un champ ou une combinaison de champs doivent satisfaire lorsque des valeurs sont insérées. Par exemple, une contrainte UNIQUE empêche le champ contraint d’accepter une valeur qui dupliquerait une valeur existante pour ce champ.

Une relation est un type de contrainte qui fait référence aux valeurs d'un champ ou d'une combinaison de champs dans une autre table, afin de déterminer si une valeur peut être insérée dans le champ ou la combinaison de champs contraints.

Pour créer une contrainte, il faut utiliser une clause CONSTRAINT dans une commande CREATE TABLE ou ALTER TABLE. Il existe deux types de clauses CONSTRAINT : une pour créer une contrainte sur un seul champ et une autre pour créer une contrainte sur plusieurs champs.

Contraintes sur champ unique

Une clause CONSTRAINT sur un champ unique suit immédiatement la définition du champ qu’elle contraint. Sa syntaxe est la suivante :

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Supposez que vous avez une table nommée Véhicules avec des champs contenant le nom, l’année, le prix et l’état de véhicules d’occasion que vous avez sélectionnés en vue d’un achat. Supposez également que vous oubliez fréquemment d’entrer une valeur pour l’état du véhicule et que vous souhaitez toujours consigner ces informations dans la table. Vous pouvez créer une contrainte sur le champ d’état qui vous empêche de laisser ce champ vide. Pour cela, procédez comme suit :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    ALTER TABLE Véhicules ALTER COLUMN État TEXT CONSTRAINT ÉtatRequis NOT NULL

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Supposons maintenant qu'après un certain temps, vous remarquiez qu'il existe de nombreuses valeurs semblables dans le champ État qui doivent correspondre à la même. Par exemple, une partie des voitures possède une valeur État passable et une autre partie a une valeur mauvais. Une fois que vous nettoyez les valeurs pour plus de cohérence, vous pouvez créer une table, nommée ÉtatVoiture, avec un champ nommé État, qui contient toutes les valeurs que vous voulez utiliser pour l'état des voitures :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    CREATE TABLE ÉtatVéhicule (État TEXT(10))

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

  6. Pour insérer les valeurs du champ État de la table Véhicules dans la nouvelle table ÉtatVéhicule, tapez l’instruction SQL suivante sous l’onglet Mode SQL de l’objet :

    INSERT INTO ÉtatVéhicule SELECT DISTINCT État FROM Véhicules;

    Remarque : L'instruction SQL dans cette étape est un requête Ajout. Contrairement à une requête Définition des données, une requête Ajout se termine par un point-virgule.

  7. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Pour exiger que toute valeur insérée dans le champ État de la table Véhicules corresponde à une valeur du champ État dans la table ÉtatVéhicule, vous pouvez ensuite créer une relation entre ÉtatVéhicule et Véhicules sur le champ nommé État en appliquant la procédure suivante :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    ALTER TABLE Véhicules ALTER COLUMN État TEXT CONSTRAINT FKeyÉtat REFERENCES ÉtatVéhicule (État)

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Contraintes sur plusieurs champs

Une clause CONSTRAINT de champs multiples peut être uniquement utilisée en dehors d'une clause de définition de champ et utilise la syntaxe suivante :

CONSTRAINT constraint_name 
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) |
UNIQUE (unique1[, unique2[, ...]]) |
NOT NULL (notnull1[, notnull2[, ...]]) |
FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])
REFERENCES foreign_table
[(fk_field1[, fk_field2[, ...]])] |
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Examinons à présent un autre exemple avec la table Voitures. Supposons que vous souhaitiez vous assurer qu'il n'existe pas deux enregistrements dans la table Voitures avec le même jeu de valeurs pour Nom, Année, État et Prix. Vous pouvez créer une contrainte UNIQUE qui s'applique à ces champs, en utilisant la procédure suivante :

  1. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Sous l’onglet Créer, dans le groupe Type de requête, cliquez sur Définition des données.

    La grille de création est masquée et l’onglet Mode SQL de l’objet est affiché.

  4. Tapez l’instruction SQL suivante :

    ALTER TABLE Véhicules ADD CONSTRAINT AucunDouble UNIQUE (Nom, Année, État, Prix)

  5. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Haut de la page

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×