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