Instrução INSERT

Use a instrução INSERT para criar registros em uma tabela de banco de dados. Você pode especificar:

  • Uma lista de valores a serem inseridos como um novo registro

  • Uma instrução SELECT que copia dados de outra tabela a ser inserida como um conjunto de novos registros

O formato da instrução INSERT é:

Copiar
INSERT INTO nome_tabela [(nome_coluna, ...)] VALUES (expr, ...)

nome_coluna é uma lista opcional de nomes de coluna que fornece o nome e a ordem das colunas cujos valores são especificados na cláusula VALUES. Se você omitir nome_coluna, as expressões de valor (expr) fornecerão valores para todas as colunas definidas na tabela e estarão na mesma ordem em que as colunas são definidas para a tabela. nome_coluna também pode especificar uma repetição de campo, como, por exemplo datasRecentes[4].

expr é a lista de expressões que fornece os valores das colunas do novo registro. Geralmente, as expressões são valores de constante das colunas (mas elas também podem ser uma subconsulta). Você deve colocar os valores de cadeia de caracteres entre aspas simples ('). Para incluir uma aspa simples em um valor de cadeia de caracteres que já está entre aspas simples, use duas aspas simples juntas (por exemplo, 'Don''t').

As subconsultas devem ser colocadas entre parênteses.

Exemplo

Insira uma lista de expressões.

Copiar
INSERT INTO func (sobrenome, nome, id_funcionário, salário, data_contratação)
   VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05')

Cada instrução INSERT adiciona um registro à tabela de banco de dados. Nesse caso, um registro foi adicionado à tabela de banco de dados de funcionário, func. São especificados valores para cinco colunas. As colunas restantes da tabela recebem um valor em branco, que significa nulo.

Importante  

Nos campos de container, você pode inserir somente texto usando a instruçãoINSERT, a menos que prepare uma instrução parametrizada e obtenha os dados no aplicativo. Para usar dados binários, basta atribuir o nome de arquivo colocando-o entre aspas simples ou usar a função PutAs(). Ao especificar o nome de arquivo, o tipo de arquivo é deduzido da extensão do arquivo:

Copiar
INSERT INTO nome_tabela (nome_container) VALUES(? AS 'nome do arquivo.extensão do arquivo')

Tipos de arquivo não suportados serão inseridos como tipo FILE.

Ao usar a função PutAs() especifique o tipo: PutAs(col, 'type'), em que o valor de tipo é um tipo conforme descrito em Recuperação do conteúdo de um campo de container: CAST() function and GetAs() function.

A instrução SELECT é uma consulta que retorna valores para cada valor nome_coluna especificado na lista de nomes de coluna. O uso de uma instrução SELECT em vez de uma lista de expressões de valor permite que você selecione um conjunto de linhas em uma tabela e insira-o em outra tabela usando uma instrução INSERT.

Exemplo

Insira usando a instrução SELECT.

Copiar
INSERT INTO func1 (nome, sobrenome, id_funcionário, dept, salário)
   SELECT nome, sobrenome, id_funcionário, dept, salário do func
   WHERE dept = 'D050'

Nesse tipo de instrução INSERT, o número de colunas a serem inseridas deve corresponder ao número de colunas na instrução SELECT. A lista de colunas a serem inseridas deve corresponder às colunas da instrução SELECT exatamente como seria em uma lista de expressões de valor no outro tipo de instrução INSERT. Por exemplo, a primeira coluna inserida corresponde à primeira coluna selecionada; a segunda coluna inserida corresponde à segunda coluna selecionada e assim sucessivamente.

O tamanho e o tipo de dados dessas colunas correspondentes devem ser compatíveis. Cada coluna da lista SELECT deve ter um tipo de dados que o driver cliente ODBC ou JDBC aceite em uma instrução INSERT/UPDATE da coluna correspondente da lista INSERT. Os valores são truncados quando o tamanho do valor na coluna de lista SELECT é maior que o tamanho da coluna de lista INSERT correspondente.

A instrução SELECT é avaliada antes que qualquer valor seja inserido.