Articles

Oracle ALTER TABLE ADD Column By Examples

Posted on

Summary: in questo tutorial, imparerete ad usare l’istruzione Oracle ALTER TABLE ADD column per aggiungere una o più colonne ad una tabella.

Per aggiungere una nuova colonna ad una tabella, si usa l’istruzione ALTER TABLE come segue:

ALTER TABLE table_name ADD column_name data_type constraint;

In questa istruzione:

  • Prima, si specifica il nome della tabella, a cui si vuole aggiungere la nuova colonna, dopo la clausola ALTER TABLE.
  • Secondo, si specifica il nome della colonna, il tipo di dati e il suo vincolo.

Nota che non puoi aggiungere una colonna che esiste già nella tabella; il tentativo di farlo causerà un errore. Inoltre, l’istruzione ALTER TABLE ADD colonna aggiunge la nuova colonna alla fine della tabella. Oracle non fornisce un modo diretto per permetterti di specificare la posizione della nuova colonna come altri sistemi di database come MySQL.

Nel caso tu voglia aggiungere più di una colonna, usa la seguente sintassi:

In questa sintassi, separi due colonne con una virgola.

Oracle ALTER TABLE ADD column esempi

Creiamo una tabella chiamata members per la dimostrazione.

CREATE TABLE members( member_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50), last_name VARCHAR2(50), PRIMARY KEY(member_id));

La seguente istruzione aggiunge una nuova colonna chiamata birth_date alla tabella members:

ALTER TABLE members ADD birth_date DATE NOT NULL;

In questo esempio, la colonna birth_date è una colonna DATE e non accetta null.

Supponiamo di voler registrare il tempo in cui una riga viene creata e aggiornata. Per farlo, dovete aggiungere due colonne created_at e updated_at come segue:

ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );

I tipi di dati delle colonne created_at e updated_at sono TIMESTAMP WITH TIME ZONE. Anche queste colonne non accettano null.

Per controllare se una colonna esiste in una tabella, si interrogano i dati dalla vista user_tab_cols. Per esempio, la seguente dichiarazione controlla se la tabella members ha la colonna first_name.

SELECT COUNT(*)FROM user_tab_colsWHERE column_name = 'FIRST_NAME' AND table_name = 'MEMBERS';

Questa query è utile quando si vuole controllare se una colonna esiste in una tabella prima di aggiungerla.

Per esempio, il seguente blocco PL/SQL controlla se la tabella members ha una colonna effective_date prima di aggiungerla.

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;/

Se si esegue il blocco la prima volta, la colonna effective_date viene aggiunta alla fine della tabella members. Tuttavia, una volta che lo eseguite per la seconda volta, vedrete il seguente messaggio:

The column effective_date already exists

che è quello che ci aspettavamo.

In questo tutorial, hai imparato ad usare l’istruzione di colonna Oracle ALTER TABLE ADD per aggiungere una o più colonne ad una tabella esistente.

  • Questo tutorial è stato utile?
  • SìNo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *