Summary : dans ce tutoriel, vous apprendrez à utiliser l’instruction Oracle ALTER TABLE ADD
column pour ajouter une ou plusieurs colonnes à une table.
Pour ajouter une nouvelle colonne à une table, vous utilisez l’instruction ALTER TABLE
comme suit :
ALTER TABLE table_name ADD column_name data_type constraint;
Dans cette instruction :
- D’abord, vous spécifiez le nom de la table, à laquelle vous voulez ajouter la nouvelle colonne, après la clause
ALTER TABLE
. - Deuxièmement, vous spécifiez le nom de la colonne, le type de données et sa contrainte.
Notez que vous ne pouvez pas ajouter une colonne qui existe déjà dans la table ; essayer de le faire provoquera une erreur. En outre, l’instruction ALTER TABLE ADD
colonne ajoute la nouvelle colonne à la fin de la table. Oracle ne fournit aucun moyen direct pour vous permettre de spécifier la position de la nouvelle colonne comme d’autres systèmes de base de données tels que MySQL.
Dans le cas où vous souhaitez ajouter plus d’une colonne, vous utilisez la syntaxe suivante :
ALTER TABLE table_name ADD ( column_name_1 data_type constraint, column_name_2 data_type constraint, ...);
Dans cette syntaxe, vous séparez deux colonnes par une virgule.
Oracle ALTER TABLE ADD column examples
Créons une table nommée members
pour la démonstration.
CREATE TABLE members( member_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50), last_name VARCHAR2(50), PRIMARY KEY(member_id));
L’instruction suivante ajoute une nouvelle colonne nommée birth_date
à la table members
:
ALTER TABLE members ADD birth_date DATE NOT NULL;
Dans cet exemple, la colonne birth_date
est une colonne DATE
et elle n’accepte pas les nullités.
Supposons que vous souhaitiez enregistrer l’heure à laquelle une ligne est créée et mise à jour. Pour ce faire, vous devez ajouter deux colonnes created_at
et updated_at
comme suit :
ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );
Les types de données des colonnes created_at
et updated_at
sont TIMESTAMP WITH TIME ZONE
. Ces colonnes n’acceptent pas non plus null.
Pour vérifier si une colonne existe dans une table, vous interrogez les données à partir de la vue user_tab_cols
. Par exemple, l’instruction suivante vérifie si la table members
possède la colonne first_name
.
SELECT COUNT(*)FROM user_tab_colsWHERE column_name = 'FIRST_NAME' AND table_name = 'MEMBERS';
Cette requête est pratique lorsque vous voulez vérifier si une colonne existe dans une table avant de l’ajouter.
Par exemple, le bloc PL/SQL suivant vérifie si la table members
possède la colonne effective_date
avant de l’ajouter.
SET SERVEROUTPUT ON SIZE 1000000DECLARE v_col_exists NUMBER BEGIN SELECT count(*) INTO v_col_exists FROM user_tab_cols WHERE column_name = 'EFFECTIVE_DATE' AND table_name = 'MEMBERS'; IF (v_col_exists = 0) THEN EXECUTE IMMEDIATE 'ALTER TABLE members ADD effective_date DATE'; ELSE DBMS_OUTPUT.PUT_LINE('The column effective_date already exists'); END IF;END;/
Si vous exécutez le bloc la première fois, la colonne effective_date
est ajoutée à la fin du tableau members
. Cependant, une fois que vous l’exécutez de la deuxième fois, vous verrez le message suivant:
The column effective_date already exists
ce qui est ce que nous attendions.
Dans ce tutoriel, vous avez appris à utiliser l’instruction de colonne Oracle ALTER TABLE ADD
pour ajouter une ou plusieurs colonnes à une table existante.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.