IBM PureData System for Analytics, Version 7.1

CREATE TABLE

Use o comando CREATE TABLE para criar uma nova tabela inicialmente vazia no banco de dados atual. O comando CREATE TABLE cria automaticamente um tipo de dado que representa o tipo tupla (tipo de estrutura) correspondente a uma linha da tabela.

Uma tabela não pode ter:
  • O mesmo nome que qualquer tipo de dado existente.
  • O mesmo nome que uma tabela de catálogo do sistema.
  • Mais de 1600 colunas. O limite efetivo é ligeiramente menor devido às restrições de comprimento de tupla.
  • Atributos de tabela ou visualização com os seguintes nomes:
    • cmax
    • cmin
    • createxid
    • ctid
    • datasliceid
    • deletexid
    • oid
    • rowid
    • tableoid
    • xmax
    • xmin

As cláusulas de restrição opcionais especificam restrições (ou testes) que linhas novas ou atualizadas devem satisfazer para que uma operação de inserção ou atualização seja bem-sucedida. Uma restrição é uma regra nomeada; ou seja, um objeto SQL que ajuda a definir conjuntos de valores válidos, limitando os resultados de operações de inserção, atualização ou exclusão que são usados em uma tabela. Netezza não suporta verificações de restrição; se especificar restrições, você deverá realizar a verificação de restrição e integridade referencial.)

É possível definir restrições de tabela e restrições de coluna.
  • Uma restrição de coluna é definida como parte de uma definição de coluna.
  • Uma definição de restrição de tabela não está ligada a uma coluna específica e pode abranger mais de uma coluna.

Também é possível gravar cada restrição de coluna como uma restrição de tabela. Uma restrição de coluna é apenas uma conveniência notacional, se a restrição afetar apenas uma coluna.

Especificação de distribuição
Cada tabela em um banco de dados RDBMS do Netezza tem apenas uma chave de distribuição, que consiste em uma a quatro colunas. É possível usar a seguinte sintaxe SQL para criar chaves de distribuição.
  • Para criar uma chave de distribuição explícita, a sintaxe do Netezza SQL é:
    CREATE TABLE <tablename> [ ( <col>[,<col>… ] ) ] AS 
    <select_clause> [ DISTRIBUTE ON [HASH] ( <col>[<col>,… ] ) ]

    A frase distribute on especifica a chave de distribuição; a palavra hash é opcional.

  • Para criar uma chave de distribuição round-robin, a sintaxe do Netezza SQL é:
    CREATE TABLE <tablename> (col1 int, col2 int, col3 int)
    DISTRIBUTE ON RANDOM;

    A frase distribute on random especifica a distribuição round-robin.

  • Para criar uma tabela sem especificar uma chave de distribuição, a sintaxe do Netezza SQL é:
    CREATE TABLE <tablename> (col1 int, col2 int, col3 int);

    O sistema Netezza escolhe uma chave de distribuição. Não há nenhuma maneira de assegurar o que essa chave será, e isso pode variar dependendo da liberação do software Netezza .

Ação de regra de restrição
É possível especificar as ações a seguir ao atualizar ou excluir uma restrição. Como o sistema não impinge a verificação de restrição, essas regras são apenas aceitas, mas não usadas.
  • CASCADE atualiza o valor da coluna de referência para o novo valor da coluna referida.
  • SET NULL configura a coluna de referência para o novo valor da coluna referida.
  • SET DEFAULT configura a coluna referenciada
  • RESTRICT é o mesmo que NO ACTION
  • NO ACTION produzirá um erro se a chave estrangeira for violada.
Atributos de restrição
As restrições podem ter os seguintes atributos que determinam se a verificação de restrição é imediata ou adiada. Como o sistema não impinge uma verificação de restrição, esses atributos são apenas aceitos, mas não usados.
  • [NOT] DEFERRABLE determina se a restrição é verificada no final da transação.
  • INITIALLY DEFERRED verifica a limitação apenas no final da transação.
  • INITIALLY IMMEDIATE verifica a restrição depois de cada instrução.

Sintaxe

Sintaxe geral para o comando create table:
CREATE [ TEMPORARY | TEMP ] TABLE <table>
( <col> <type> [<col_constraint>][,<col> <type> [<col_constraint>]…]
[<table_constraint>[,<table_constraint>… ] )
[ DISTRIBUTE ON { RANDOM | [HASH] (<col>[,<col>…]) } ]
[ ORGANIZE ON { (<col>) | NONE } ]
[ ROW SECURITY ]
Em que <col_constraint> representa:
[ CONSTRAINT <constraint_name> ] 
{NOT NULL | NULL | UNIQUE | PRIMARY KEY | DEFAULT <value> | <ref>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
Em que <table_constraint> representa:
[ CONSTRAINT <constraint_name> ] 
{UNIQUE (<col>[,<col>…] ) |
PRIMARY KEY (<pkcol_name>[,<pkcol_name>…] ) |
FOREIGN KEY (<fkcol_name>[,<fkcol_name>…] ) <ref>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
Em que <ref> representa:
REFERENCES <reftable> [ (<refcol_name>[,<refcol_name>…] ) ]
[ MATCH FULL ]
[ ON UPDATE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]
[ ON DELETE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]

O sistema permite e mantém a chave primária, padrão, chave estrangeira, exclusiva e referências. O sistema IBM® Netezza não suporta verificação de restrição e integridade referencial. O usuário deve assegurar verificações de restrições e integridade referencial.

Entradas

O comando CREATE TABLE utiliza as seguintes entradas:
Tabela 1. Entradas CREATE TABLE
Entrada Descrição
TEMP[ORARY] A tabela a ser criada deve ser uma tabela temporária.
<table> O nome da tabela a ser criada.
<col> O nome de uma coluna a ser criada na nova tabela.
<type> O tipo de dado da coluna.
DISTRIBUTE ON Cada tabela no banco de dados deve ter uma chave de distribuição que consiste em uma a quatro colunas. O padrão é RANDOM, o que faz com que o sistema selecione uma chave de distribuição aleatória.
HASH Este parâmetro pode ser especificado para esclarecimento, mas não tem efeito sobre o comando.
ORGANIZE ON Em quais colunas (de um a quatro) a tabela deve ser organizada. Elas não podem ser especificadas para tabelas externas. Se colunas forem especificadas, a tabela não poderá ter nenhuma visualização materializada, e todos os tipos de dados de coluna especificados deverão ser mapeáveis por zona. A reorganização de dados da tabela entra em vigor quando GROOM TABLE é executada. Para obter mais informações, consulte "Usando tabelas base em cluster" no IBM Netezza System Administrator’s Guide.
ROW SECURITY Crie a tabela com a segurança em nível de linha.
<constraint_name> O nome que deve ser dado a uma restrição de coluna ou restrição da tabela. Se você não especificar um nome, o sistema gerará um.
NOT DEFERRABLE | DEFERRABLE Controla se a restrição pode ser adiada para o final da transação. NOT DEFERRABLE é o padrão. (Netezza não suporta verificação de restrição e integridade referencial.)
INITIALLY Especifica ou DEFERRED (no final da transação) ou IMMEDIATE (no final de cada instrução).
NOT NULL | NULL Se a coluna pode conter valores nulos. NULL é o padrão.
UNIQUE (restrição de coluna e tabela) Se cada valor na coluna deve ser exclusivo.
PRIMARY KEY (restrição de coluna e tabela) Se as colunas especificadas devem formar a chave primária da tabela.

Essa restrição é essencialmente uma combinação das restrições UNIQUE e NOT NULL, mas a identificação de um conjunto de colunas como uma chave primária também fornece metadados sobre o design do esquema. Uma chave primária significa que outras tabelas podem contar com esse conjunto de colunas como um identificador exclusivo para as linhas.

É possível especificar apenas uma restrição de chave primária para uma tabela, como uma restrição de coluna ou como uma restrição de tabela.

O conjunto de colunas que compõem a chave principal deve ser diferente de qualquer outro conjunto de colunas nomeado por qualquer restrição exclusiva definida para a tabela.

DEFAULT (restrição de coluna) O valor padrão que deve ser colocado em cada linha para esta coluna.
REFERENCES (restrição de coluna) As colunas especificadas da nova tabela devem conter apenas valores que correspondem aos valores nas colunas especificadas da tabela especificada.
Tabela FOREIGN KEY e REFERENCES (restrição de tabela) As colunas especificadas da nova tabela devem conter apenas valores que correspondem aos valores nas colunas especificadas da tabela especificada. Se você não especificar uma coluna, o valor deverá corresponder à chave primária da tabela. As colunas especificadas da tabela de referência devem ter uma restrição de chave exclusiva ou primária nessa tabela.
MATCH FULL MATCH FULL impede que uma coluna de uma chave estrangeira multicolunas seja nula se outras partes da chave estrangeira não forem nulas. Esse é o padrão. MATCH PARCIAL é não suportado.
ON UPDATE | ON DELETE A ação que deve ser executada quando a tabela ou colunas especificadas são atualizadas ou excluídas:
NO ACTION
Emite um erro se a chave estrangeira for violada. Esse é o padrão.
RESTRICT
Mesmo que NO ACTION.
CASCADE
Exclui qualquer linha que faz referência à linha excluída.
SET NULL
Configura os valores da coluna de referência para seus valores padrão.
SET DEFAULT
Configura os valores da coluna de referência para seus valores padrão.

Saídas

O comando tem as seguintes saídas:

Tabela 2. Saídas CREATE TABLE
Saída Descrição
CREATE TABLE O sistema retorna essa mensagem se o comando for concluído com êxito.
ERROR O sistema retorna essa mensagem se a criação de tabelas falhar. A mensagem de erro fornece texto descritivo, como: ERROR: Relation 'table' already exists.

Privilégios

Você deve ser o usuário administrador, o proprietário do banco de dados ou esquema ou sua conta deve ter o privilégio Criar Tabela.

Uso

A seguir está o uso de amostra:



Feedback | Copyright IBM Corporation 2014 | Last updated: 2014-02-28