Anterior Home Page Sumário E-Mail Próximo

Comando CREATE TABLE

Sintaxe

comando_CREATE_TABLE :

       CREATE TABLE tabela

       ( item_def_tabela [ , item_def_tabela ]… )

item_def_tabela : 

       identificador_de_coluna tipo_de_dado [restrição_de_coluna]… |

       restrição_de_unicidade |

       restrição_referencial |

       especificação_de_índice

restrição_de_unicidade : 

       especificação_de_unicidade

       ( identificador_de_coluna [ , identificador_de_coluna ]… )

especificação_de_unicidade : PRIMARY KEY | UNIQUE

restrição_referencial : FOREIGN KEY

       ( identificador_de_coluna [ , identificador_de_coluna ]… )

       especificação_de_referência

restrição_de_coluna : 

       NOT NULL |

       UNIQUE |

       PRIMARY KEY |

       INDEX |

       especificação_de_referência

especificação_de_referência : REFERENCES tabela [ ação_gatilho ]

ação_gatilho : regra_UPDATE [regra_DELETE] |

       regra_DELETE [regra_UPDATE]

regra_UPDATE : ON UPDATE { CASCADE | SET NULL }

regra_DELETE : ON DELETE { CASCADE | SET NULL }

especificação_de_ índice:     INDEX

       ( identificador_de_coluna [ , identificador_de_coluna ] …)

Regras

O comando CREATE TABLE define uma nova tabela cujo nome deve ser diferente de qualquer outro definido no mesmo esquema. Deve-se especificar o nome e o tipo de dados de todas as colunas da tabela, sendo que duas colunas de uma tabela não podem ter o mesmo nome.

Não podem ser definidas colunas do tipo VARCHAR.

A restrição NOT NULL na definição de uma coluna impede a existência de valores nulos em qualquer de suas linhas. Esta restrição é considerada por todos os comandos SQL.

A definição de uma tabela pode conter uma restrição de unicidade UNIQUE ou PRIMARY KEY, obrigando cada linha a ser criada a ter, nas colunas especificadas , uma combinação de valores única, diferente de todas as outras combinações presentes na tabela. Duas combinações são consideradas iguais se o valor de cada coluna na primeira linha não é nulo e é igual ao valor da coluna correspondente na segunda linha.

Apenas uma especificação de unicidade PRIMARY KEY pode ser definida na tabela. A restrição NOT NULL será automaticamente considerada para todas as colunas desta chave.

Se existe uma especificação de unicidade UNIQUE ou PRIMARY KEY em uma definição de coluna, então é implícita uma restrição de unicidade formada pela especificação de unicidade e o nome da coluna.

A especificação de uma restrição referencial está subordinada às seguintes regras:

Se é especificada uma regra DELETE (ou UPDATE) SET NULL, então nenhuma coluna da lista de colunas que define a restrição referencial deve ser restrita à valores não nulos.

Se, na definição de uma tabela, duas restrições referenciais fazem referência à mesma tabela e as listas de colunas que definem as restrições não são disjuntas, então em nenhuma delas pode ser especificada uma regra UPDATE e somente a regra DELETE CASCADE pode ser especificada.

A restrição referencial é verificada automaticamente para cada comando SQL. Ela é satisfeita se, alguma coluna da restrição tem valor nulo, ou todas as colunas da restrição contem valores não nulos e estes são iguais aos valores das colunas de referência correspondentes, em alguma linha da tabela de referência (linha casada).

Se uma regra DELETE é especificada em uma restrição referêncial, então quando uma linha da tabela de referência é eliminada:

Se uma regra UPDATE é especificada em uma restrição referêncial, então quando, em uma linha da tabela de referência, é alterado o valor de alguma coluna da chave primária:

Se existe uma especificação de referência em uma definição de coluna, então é implícita uma restrição referencial formada pela mesma coluna e a especificação de referência.

Uma especificação de índice define sobre a tabela um índice.

Se existe uma restrição de coluna INDEX em uma definição de coluna, então é implícita uma especificação de índice cuja chave é formada pela coluna.

Veja também Tabela e Tipo de Dado.

Exemplo

A seguir apresenta-se a definição da tabela clientes. A coluna cod_cliente é a chave primária da tabela.

CREATE TABLE clientes

(cod_cliente INTEGER NOT NULL,

nome CHARACTER (30) NOT NULL,

vendedor INT,

credito NUMERIC (10,2),

PRIMARY KEY (cod_cliente))

Anterior Home Page Sumário E-Mail Próximo