# Instrução INSERT

A instrução INSERT cria uma ou mais linhas, e as armazena na tabela especificada. O número de valores especificados na instrução INSERT deve ser idêntico ao número de colunas especificadas ou implícitas.

#### Sintaxe

    INSERT INTO nome-da-tabela
        [ (nome-de-coluna-simples [ , nome-de-coluna-simples]* ) ]
              Consulta

A Consulta pode ser:

- uma ExpressãoSeleção
- uma lista VALUES
- uma expressão VALUES de várias linhas

  As listas de uma única linha e de várias linhas podem incluir a palavra chave DEFAULT. A especificação de DEFAULT para uma coluna insere o valor padrão da coluna na coluna. Outra forma de inserir o valor padrão na coluna é omitir a coluna na lista de colunas, e somente inserir valores nas outras colunas da tabela. Para obter mais informações deve ser consultado VALUES Expressão.

- expressões UNION

Para obter mais informações sobre a Consulta deve ser consultada Consulta.

    INSERT INTO PAÍSES
          VALUES ('Taiwan', 'TW', 'Ásia');

    -- Inserir um novo departamento na tabela DEPARTAMENTOS,
    -- sem atribuir gerente ao novo departamento
    INSERT INTO DEPARTAMENTOS (NUM_DEP, NOME_DEP, ADMRDEPT)
            VALUES ('E31', 'ARQUITETURA', 'E01');

    -- Inserir dois novos departamentos na tabela DEPARTAMENTOS
    -- utilizando uma instrução, como no exemplo anterior,
    -- sem atribuir gerente aos novos departamentos.
    INSERT INTO DEPARTAMENTOS (NUM_DEP, NOME_DEP, ADMRDEPT)
            VALUES ('B11', 'COMPRAS', 'B01'),
            ('E41', 'ADMINISTRAÇÃO DE BANCO DE DADOS', 'E01');

    -- Criar a tabela temporária MA_ATIV_EMP com as mesmas
    -- colunas da tabela ATIV_EMP.
    -- Carregar a tabela MA_ATIV_EMP com as linhas da tabela ATIV_EMP
    -- onde o número do projeto (NUM_PROJ)
    -- começa pelas letras 'MA'.
    CREATE TABLE MA_ATIV_EMP
        (
            NUM_EMP   CHAR(6)   NOT NULL,
            NUM_PROJ  CHAR(6)   NOT NULL,
            ACTNO     SMALLINT  NOT NULL,
            EMPTIME   DEC(5,2),
            EMSTDATE  DATE,
            EMENDATE  DATE
        );

    INSERT INTO MA_ATIV_EMP
            SELECT * FROM ATIV_EMP
            WHERE SUBSTR(NUM_PROJ, 1, 2) = 'MA';

    -- Inserir o valor DEFAULT para a coluna LOCALIZAÇÃO
    INSERT INTO DEPARTAMENTOS
          VALUES ('E31', 'ARQUITETURA', '00390', 'E01', DEFAULT);

#### Sistema de dependência de instrução

A instrução INSERT depende da tabela onde está sendo feita a inserção, todos os seus conglomerados (unidades de armazenamento como heaps e índices), e todas as outras tabelas citadas na consulta. Qualquer instrução que cria ou remove um índice ou uma restrição da tabela de destino de uma instrução INSERT preparada, invalida a instrução INSERT preparada.

Tópico pai: Instruções
Conceitos relacionados
Interação com o sistema de dependências
Instruções CREATE
Instruções DROP
Instruções RENAME
Instruções SET
Referências relacionadas
Instrução ALTER TABLE
CALL (PROCEDIMENTO)
Cláusula CONSTRAINT
Instrução DECLARE GLOBAL TEMPORARY TABLE
Instrução DELETE
Cláusula FOR UPDATE
Cláusula FROM
Cláusula GROUP BY
Cláusula HAVING
INNER JOIN
Operação JOIN
LEFT OUTER JOIN
Instrução LOCK TABLE
Cláusula ORDER BY
Consulta
RIGHT OUTER JOIN
SubconsultaEscalar
ExpressãoSeleção
Instrução SELECT
ExpressãoTabela
SubconsultaTabela
Instrução UPDATE
VALUES Expressão
Cláusula WHERE
Cláusula WHERE CURRENT OF