Todos os produtos
Search
Central de documentação

PolarDB:Crie uma tabela

Última atualização: Jun 28, 2026

O comando CREATE TABLE cria uma nova tabela vazia no banco de dados atual. O usuário que executa a instrução torna-se o proprietário da tabela. Após criar a tabela, utilize INSERT para adicionar linhas e ALTER TABLE para modifique sua estrutura ou adicionar restrições.

Sintaxe

CREATE [ GLOBAL TEMPORARY ] TABLE table_name (
  { column_name data_type [ DEFAULT default_expr ]
  [ column_constraint [ ... ] ] | table_constraint } [, ...]
  )
  [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ]
  [ TABLESPACE tablespace ]

Em que column_constraint é um dos seguintes:

[ CONSTRAINT constraint_name ]
{ NOT NULL
  | NULL
  | UNIQUE [ USING INDEX TABLESPACE tablespace ]
  | PRIMARY KEY [ USING INDEX TABLESPACE tablespace ]
  | CHECK (expression)
  | REFERENCES reftable [ ( refcolumn ) ]
      [ ON DELETE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

E table_constraint é um dos seguintes:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ...] )
    [ USING INDEX TABLESPACE tablespace ]
  | PRIMARY KEY ( column_name [, ...] )
      [ USING INDEX TABLESPACE tablespace ]
  | CHECK ( expression )
  | FOREIGN KEY ( column_name [, ...] )
      REFERENCES reftable [ ( refcolumn [, ...] ) ]
      [ ON DELETE action ] }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

Parâmetros

Parâmetro

Descrição

GLOBAL TEMPORARY

Cria uma tabela temporária que é automaticamente removida ao final da sessão atual. Os índices criados em uma tabela temporária também são temporários. Se uma tabela temporária tiver o mesmo nome de uma tabela permanente, a tabela permanente não ficará visível na sessão atual, a menos que seja referenciada pelo nome qualificado com schema.

table_name

Nome da tabela. Utilize o nome qualificado com schema para referenciar a tabela quando necessário.

column_name

Nome de uma coluna na tabela.

data_type

Tipo de dados da coluna. O valor pode incluir especificadores de array.

DEFAULT default_expr

Expressão de valor padrão para a coluna. A expressão não pode conter subconsultas ou referências a outras colunas da tabela, e seu tipo de dados deve corresponder ao tipo de dados da coluna. Se nenhum valor for inserido e nenhum padrão estiver definido, NULL será utilizado.

CONSTRAINT constraint_name

Nome opcional para a restrição de coluna ou de tabela. Se omitido, o sistema gera um nome automaticamente.

NOT NULL

Impede que a coluna contenha valores NULL.

PRIMARY KEY (restrição de coluna)

Exige que os valores da coluna identifiquem exclusivamente cada linha e sejam não nulos. Uma tabela pode ter apenas uma chave primária. As colunas da chave primária não podem aparecer também em uma restrição UNIQUE. O PolarDB cria automaticamente um índice para impor a chave primária.

PRIMARY KEY ( column_name [, ...] ) (restrição de tabela)

Defina uma chave primária composta em várias colunas.

CHECK (expression)

Expressão booleana que deve ser avaliada como true ou desconhecida para que uma operação INSERT ou UPDATE tenha êxito. A expressão não pode conter subconsultas ou referências a variáveis fora da linha atual.

REFERENCES reftable [ ( refcolumn ) ] [ ON DELETE action ] (restrição de coluna)

Defina uma restrição de chave estrangeira. Se refcolumn for omitido, a chave primária de reftable será utilizada. As colunas referenciadas devem pertencer a uma restrição UNIQUE ou PRIMARY KEY da tabela referenciada. Se as colunas referenciadas forem alteradas com frequência, adicione um índice na coluna de chave estrangeira para manter as ações referenciais eficientes.

FOREIGN KEY ( column [, ...] ) REFERENCES reftable [ ( refcolumn [, ...] ) ] [ ON DELETE action ] (restrição de tabela)

Defina uma restrição de chave estrangeira em várias colunas.

ON DELETE action

Ação a ser executada quando uma linha referenciada for excluída. As ações referenciais não podem ser adiadas, mesmo que a restrição seja adiável. Ações suportadas: CASCADE (exclua ou atualize linhas que referenciam a linha excluída) e SET NULL (defina os valores das colunas referenciadoras como NULL).

DEFERRABLE / NOT DEFERRABLE

Determina se a verificação da restrição pode ser adiada para o final de uma transação. Utilize SET CONSTRAINTS para adiar uma restrição adiável. Apenas restrições de chave estrangeira suportam essa opção; todas as outras restrições não são adiáveis. Padrão: NOT DEFERRABLE.

INITIALLY IMMEDIATE / INITIALLY DEFERRED

Defina quando uma restrição adiável é verificada. INITIALLY IMMEDIATE verifica a restrição após cada instrução (padrão). INITIALLY DEFERRED a verifica no final da transação. Utilize SET CONSTRAINTS para substituir esse comportamento em tempo de execução.

ON COMMIT

Ação a ser executada em uma tabela temporária no final de um bloco de transação. PRESERVE ROWS (padrão) retém todas as linhas. DELETE ROWS exclua todas as linhas, equivalente a executar TRUNCATE em cada commit.

TABLESPACE tablespace

Tablespace no qual a tabela será criada.

Notas de uso

  • Se um nome de schema for incluído (por exemplo, CREATE TABLE myschema.mytable), a tabela será criada nesse schema; caso contrário, ela será criada no schema atual.

  • Tabelas temporárias sempre existem em um schema dedicado; não especifique um schema ao criar uma.

  • O nome da tabela deve ser exclusivo dentro do schema — ele não pode duplicar o nome de nenhuma tabela, sequência, índice ou visualização existente.

  • O comando CREATE TABLE também cria um tipo de dados composto que representa uma linha da tabela. O nome da tabela não pode corresponder ao nome de um tipo de dados existente no mesmo schema.

  • Uma tabela pode ter até 1.600 colunas. Na prática, o limite efetivo pode ser menor devido a restrições de comprimento de tupla.

  • Uma restrição de coluna aplica-se a uma única coluna. Uma restrição de tabela aplica-se a várias colunas. Para facilitar o gerenciamento, uma restrição de coluna única pode ser escrita em qualquer uma das formas.

  • O PolarDB cria automaticamente um índice para cada restrição UNIQUE e PRIMARY KEY; não é necessária a criação explícita de índice.

Notas de compatibilidade

O comando CREATE TABLE do PolarDB for Oracle comporta-se de maneira diferente dos bancos de dados Oracle nas seguintes formas:

  • Temporary table visibility: Tabelas temporárias são visíveis apenas na sessão atual. Esse mecanismo difere do mecanismo de tabela temporária global dos bancos de dados Oracle.

  • **Padrão de ON COMMIT**: O comportamento padrão é PRESERVE ROWS. No Oracle, o padrão é DELETE ROWS.

Exemplos

Criar duas tabelas relacionadas

O exemplo a seguir cria uma tabela dept e uma tabela emp com uma chave estrangeira referenciando dept.

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14),
    loc             VARCHAR2(13)
);

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Adicionar uma restrição UNIQUE

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14) CONSTRAINT dept_dname_uq UNIQUE,
    loc             VARCHAR2(13)
);

Adicionar uma restrição CHECK no nível de coluna

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2) CONSTRAINT emp_sal_ck CHECK (sal > 0),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Adicionar uma restrição CHECK no nível de tabela

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno),
    CONSTRAINT new_emp_ck CHECK (ename IS NOT NULL AND empno > 7000)
);

Definir uma chave primária composta

O exemplo a seguir cria uma tabela jobhist com uma chave primária composta em empno e startdate.

CREATE TABLE jobhist (
    empno           NUMBER(4) NOT NULL,
    startdate       DATE NOT NULL,
    enddate         DATE,
    job             VARCHAR2(9),
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2),
    chgdesc         VARCHAR2(80),
    CONSTRAINT jobhist_pk PRIMARY KEY (empno, startdate)
);

Definir valores padrão de coluna

A coluna job tem como padrão 'SALESMAN'. A coluna hiredate tem como padrão a data em que a linha é inserida.

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9) DEFAULT 'SALESMAN',
    mgr             NUMBER(4),
    hiredate        DATE DEFAULT SYSDATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Criar uma tabela em um tablespace específico

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14),
    loc             VARCHAR2(13)
) TABLESPACE diskvol1;

Próximos passos

  • Para modifique a estrutura ou as restrições de uma tabela existente, utilize ALTER TABLE.

  • Para remover uma tabela, utilize DROP TABLE.

  • Para adicionar índices além daqueles criados automaticamente para chaves primárias e restrições exclusivas, utilize CREATE INDEX.

  • Para popular a tabela com dados, utilize INSERT.