
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 ] …)
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.
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))
