comando_INSERT :
INSERT INTO tabela
[ ( identificador_de_coluna [, identificador_de_coluna ]… ) ]
{ lista_de_valores | expressão_de_consulta }
lista_de_valores : VALUES ( {expressão | NULL} [, {expressão | NULL} ]… )
expressão_de_consulta :
{ especificação_de_consulta |
( expressão_de_consulta ) }
[ UNION [ ALL ]
{ especificação_de_consulta |
( expressão_de_consulta ) } ]…
especificação_de_consulta :
cláusula_SELECT
cláusula_FROM
[ cláusula_WHERE ]
[ cláusula_GROUP_BY ]
[ cláusula_HAVING ]
Este comando insere uma ou mais linhas em uma tabela atualizável. A tabela não pode aparecer em nenhuma cláusula FROM na expressão de consulta.
Nenhuma coluna da tabela pode aparecer mais de uma vez na lista de colunas. Se a lista de identificadores de coluna for omitida, ficam implicitamente especificadas todas as colunas da tabela na ordem em que aparecem na definição da tabela.
O número de valores relacionados na cláusula VALUES ou o grau da tabela (número de colunas) resultante da expressão de consulta deve ser igual ao tamanho da lista de colunas implícita ou explicitamente especificados. A lista de valores na cláusula VALUES não deve conter funções de grupamento ou especificações de coluna.
Cada nova linha da tabela contém os valores explicitamente especificados no comando e valores nulos para as colunas não identificadas na lista.
Se o tipo de um valor a ser inserido for cadeia de caracteres de tamanho menor que a cadeia da coluna na tabela, o valor será completado com caracteres brancos. Se for de tamanho maior, nenhuma linha será inserida e o parâmetro SQLCODE indicará o erro. O mesmo acontece se o tipo da coluna for numérico exato e não houver uma representação do valor a ser inserido sem que haja perda de dígitos significativos de sua parte inteira.
Se uma coluna é do tipo DATETIME, o valor a ela correspondente deve ser do mesmo tipo com precisão de mesmo campo inicial. Se sua precisão for diferente da precisão do valor correspondente à coluna, os campos excedentes são truncados ou os campos adicionais são iniciados com o valor 1 para os campos mês e dia e com o valor 0 para os campos hora, minuto e segundo.
A cardinalidade da tabela resultante da expressão de consulta é o número de linhas a serem inseridas. Se esta tabela estiver vazia, o parâmetro SQLCODE receberá o valor 100 e não será feita nenhuma inserção.
Se o valor a ser inserido numa coluna em cuja definição não seja permitido valores nulos for nulo, nenhuma linha será inserida e o parâmetro SQLCODE indicará o erro.
Veja também Tabela, Valor , Especificação de consulta e SQLCODE.
O comando abaixo insere na tabela de clientes a empresa Arruda Associados com o número 1111 e com o vendedor de contato especificado por 101. O crédito deste cliente ainda não foi definido e recebe o valor nulo.
INSERT INTO clientes (cód_cliente, nome, contato)
VALUES (1111, ‘Arruda Associados’, 101)
O comando abaixo insere uma linha na tabela produtos. Valores para todas as colunas são especificados na ordem em que as colunas foram definidas.
INSERT INTO produtos
VALUES (‘CAT’, ‘_w234’, ‘Parafuso tipo B2’, 10.50, 500)