Articles

Oracle ALTER TABLE ADD Column By Examples

Posted on

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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *