Resumo: neste tutorial, aprenderá como usar o Oracle declaração de coluna para adicionar uma ou mais colunas a uma tabela.
Para adicionar uma nova coluna a uma tabela, utiliza-se a declaração ALTER TABLE
como se segue:
ALTER TABLE table_name ADD column_name data_type constraint;
Nesta declaração:
- Primeiro, especifique o nome da tabela, que pretende adicionar a nova coluna, após a cláusula
ALTER TABLE
. - Segundo, especifica o nome da coluna, tipo de dados, e a sua restrição.
Nota que não pode adicionar uma coluna já existente na tabela; tentar fazê-lo causará um erro. Além disso, a declaração de coluna adiciona a nova coluna no final da tabela. A Oracle não fornece nenhuma forma directa que lhe permita especificar a posição da nova coluna como outros sistemas de bases de dados como o MySQL.
No caso de querer adicionar mais do que uma coluna, usa a seguinte sintaxe:
ALTER TABLE table_name ADD ( column_name_1 data_type constraint, column_name_2 data_type constraint, ...);
Nesta sintaxe, separa duas colunas por uma vírgula.
Oracle ALTER TABLE ADD exemplos de colunas
Vamos criar uma tabela com o nome members
para a demonstração.
CREATE TABLE members( member_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50), last_name VARCHAR2(50), PRIMARY KEY(member_id));
A seguinte declaração adiciona uma nova coluna chamada birth_date
à tabela members
:
ALTER TABLE members ADD birth_date DATE NOT NULL;
Neste exemplo, a coluna birth_date
é uma coluna DATE
e não aceita nula.
P>Componente, pretende registar o momento em que uma linha é criada e actualizada. Para o fazer, é necessário adicionar duas colunas created_at
e updated_at
como se segue:
ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );
Os tipos de dados do created_at
e updated_at
as colunas são TIMESTAMP WITH TIME ZONE
. Estas colunas também não aceitam null.
Para verificar se existe uma coluna numa tabela, consulta-se os dados da vista user_tab_cols
. Por exemplo, a seguinte declaração verifica se o members
tabela tem o first_name
coluna.
SELECT COUNT(*)FROM user_tab_colsWHERE column_name = 'FIRST_NAME' AND table_name = 'MEMBERS';
Esta consulta vem a calhar quando pretende verificar se uma coluna existe numa tabela antes de a adicionar.
Por exemplo, o seguinte bloco PL/SQL verifica se a coluna members
tabela tem effective_date
antes de a adicionar.
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 executar o bloco na primeira vez, a coluna effective_date
é anexada no final da tabela members
. No entanto, uma vez executado da segunda vez, verá a seguinte mensagem:
The column effective_date already exists
que é o que esperávamos.
Neste tutorial, aprendeu como usar o Oracle declaração de coluna para adicionar uma ou mais colunas a uma tabela existente.
- Este tutorial foi útil?
- Sim Não