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.

Vous pouvez créer et modifier des tables, des contraintes, des index et des relations en écrivant des requêtes Définition des données en mode SQL.

Cet article explique ce que sont les requêtes Définition des données et comment les utiliser pour créer des tables, des contraintes, des index et des relations. Il peut également vous aider à identifier quand utiliser une requête Définition des données.

Remarque : Vous ne pouvez pas appliquer ces procédures dans une base de données Web.

Dans cet article

Vue d’ensemble

Créer ou modifier une table

Créer un index

Créer une contrainte ou une relation

Vue d’ensemble

Contrairement aux autres requêtes, les requêtes Définition des données n’extraient pas de données. Au lieu de cela, elles utilisent le langage DDL (Data Definition Language) pour créer, modifier ou supprimer des objets de base de données.

Remarque : Le langage DDL (Data Definition Language) fait partie du langage SQL (Structured Query Language).

Les requêtes Définition des données peuvent être très commodes. Vous pouvez régulièrement supprimer et recréer des parties de votre schéma de base de données simplement en exécutant certaines requêtes. Utilisez une requête Définition des données si vous avez une bonne connaissance des instructions SQL et que vous prévoyez de supprimer et recréer des tables, contraintes, index ou relations spécifiques.

Avertissement : L’utilisation de requêtes Définition des données pour modifier des objets de base de données peut être 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 accidentellement la structure d’une table. Procédez avec prudence lorsque vous utilisez une requête Définition des données pour modifier des objets de votre base de données. Si vous n’êtes pas responsable de la maintenance de la base de données que vous utilisez, contactez l’administrateur de la base de données avant d’exécuter une requête Définition des données.

Important : Effectuez une copie de sauvegarde de toute table concernée avant d’exécuter une requête Définition des données.

Mots clés DDL

Mot clé

Utilisation

CREATE

Créer un index ou une table qui n’existe pas encore.

ALTER

Modifier une table ou une colonne existante.

DROP

Supprimer une table, une colonne ou une contrainte existante.

ADD

Ajouter une colonne ou une contrainte à une table.

COLUMN

Utiliser avec ADD, ALTER ou DROP

CONSTRAINT

Utiliser avec ADD, ALTER ou DROP

INDEX

Utiliser avec CREATE

TABLE

Utiliser avec ALTER, CREATE ou DROP

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 CREATE TABLE proprement dite et le nom de la table, mais il est plutôt habituel de définir certains champs ou autres aspects de la table. Considérez le simple exemple suivant.

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 devrez peut-être d’abord activer le contenu de la base de données afin que la requête Définition des données puisse s’exécuter :

  • Dans la barre des messages, cliquez sur Activer le contenu.

Créer une table

  1. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures (Nom TEXT(30), Année TEXT(4), Prix CURRENCY)

  5. 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ù prédicat peut être l’une des opérations suivantes :

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. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures 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. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures (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 contraint(e). Vous ne devez pas utiliser de mot clé spécial pour indiquer qu’une contrainte est une relation.

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. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures ALTER COLUMN État TEXT CONSTRAINT ÉtatRequis NOT NULL

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

Supposons maintenant que vous constatez, après un certain moment, qu’il existe de nombreuses valeurs similaires dans le champ d’état qui devraient être identiques. Par exemple, certains véhicules ont un état avec la valeur médiocre et d’autres avec la valeur mauvais.

Remarque : Si vous souhaitez suivre les procédures restantes, ajoutez quelques données fausses à la table Véhicules que vous avez créée lors des étapes précédentes.

Après avoir nettoyé les valeurs pour qu’elles soient plus cohérentes, vous pouvez créer une table nommée ÉtatVéhicule contenant un seul champ, nommé État, qui contient toutes les valeurs que vous souhaitez utiliser pour l’état des véhicules :

  1. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 ÉtatVoiture (État TEXT(10))

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

  6. Créez une clé primaire pour la table à l’aide d’une instruction ALTER TABLE :

    ALTER TABLE CarCondition ALTER COLONNE Condition TEXTE CONTRAINTE CarConditionPK CLÉ PRIMAIRE

  7. 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 ÉtatVoiture SELECT DISTINCT État FROM Voitures;

    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.

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

Créer une relation à l’aide d’une contrainte

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. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures ALTER COLUMN État TEXT CONSTRAINT ÉtatToucheF REFERENCES ÉtatVoiture (État)

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

Contraintes sur plusieurs champs

Une clause CONSTRAINT sur plusieurs champs peut être utilisée uniquement en dehors d’une clause de définition de champ. Sa syntaxe est la 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}]}

Prenons un autre exemple qui utilise la table Véhicules. Supposez que vous souhaitez vous assurer que deux enregistrements de la table Véhicules ne possèdent pas le même jeu de valeurs pour Nom, Année, État et Prix. Vous pouvez pour cela créer une contrainte UNIQUE qui s’applique à ces champs en utilisant la procédure suivante :

  1. Sous l’onglet Créer, dans le groupe Macros et code, cliquez sur Création de requête.

  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 Voitures ADD CONSTRAINT AucunDoublon 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.

×