Instrução INSERT
Use a instrução INSERT para criar registros em uma tabela de banco de dados. Você pode especificar:
-
Uma ou mais listas de valores a serem inseridas como novos registros
-
Uma instrução
SELECTque copia dados de outra tabela a ser inserida como um conjunto de novos registros
Os formatos da instrução INSERT são:
INSERT INTO nome_tabela [(nome_coluna, ...)] VALUES [(expr, ...), ...]
INSERT INTO nome_tabela [(nome_coluna, ...)] SELECT nome_coluna, ... FROM nome_tabela [WHERE expr]
Com VALUES
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 foram definidas para a tabela.
A lista de expressões (expr) fornece os valores para as colunas de um novo registro. Para adicionar vários registros, especifique uma lista de expressões entre parênteses para cada registro, separadas por vírgulas. Normalmente, uma lista de expressões consiste em um valor constante para cada coluna (mas a lista também pode 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 duas listas de expressões.
INSERT INTO emp (sobrenome, nome, emp_id, salário, data_de_contratação)
VALUES ('Smith', 'John', 'E22345', 27500, DATA '2028-06-05'),
('Marcas', 'Alea', 'E24682', 28500, DATA '2029-09-30')
Esta instrução INSERT adiciona um registro à tabela do banco de dados para cada lista de valores especificados. Nesse caso, dois registros foram adicionados à tabela de banco de dados de funcionários, emp. São especificados valores para cinco colunas. As colunas restantes da tabela recebem um valor em branco, que significa nulo.
Com SELECT
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.
INSERT INTO emp1 (nome, sobrenome, emp_id, departamento, salário)
SELECT nome, sobrenome, emp_id, departamento, salário FROM emp
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.
Notas
-
Nos campos de container, você pode inserir somente texto usando a instrução
INSERT, 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çãoPutAs(). Ao especificar o nome de arquivo, o tipo de arquivo é deduzido da extensão do arquivo:CopiarINSERT 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, 'tipo'), onde o valor do tipo é um tipo de arquivo suportado, conforme descrito em Recuperação do conteúdo de um campo de container: CAST() function and GetAs() function. -
nome_colunatambém pode especificar uma repetição de campo — por exemplo,lastDates[4].