TOP

Lição SQL 13. Adicionando dados (INSERT INTO)

Nas seções anteriores, consideramos o trabalho de recuperação de dados de tabelas criadas anteriormente. Agora é hora de descobrir como podemos criar/excluir tabelas, adicionar novos registros e excluir os antigos.

Para esses fins, existem operadores em SQL como:

  • CREATE - cria uma tabela;
  • ALTER - altera a estrutura da tabela;
  • DROP - exclui uma tabela ou campo;
  • INSERT - adiciona dados à tabela.
  • Vamos começar a nos familiarizar com este grupo de operadores com o operador INSERT.


    1. Adicionando linhas inteiras

    Como o nome sugere, o operador INSERT INTO é usado para inserir (adicionar) linhas a uma tabela de banco de dados.

    A adição pode ser feita de várias maneiras:

  • adicione uma linha completa;
  • adicione parte de uma nova linha;
  • adicione resultados da consulta.
  • Portanto, para adicionar uma nova linha à tabela, precisamos especificar o nome da tabela, listar os nomes das colunas e especificar os valores de cada coluna usando INSERT INTO table_name(field1, field2 ...) VALUES (value1, valor2 ...) construção. Vamos considerar um exemplo.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    Você também pode alterar a ordem dos nomes das colunas, mas ao mesmo tempo precisa alterar a ordem dos valores no parâmetro VALUES.

    2. Adicionando parte das linhas

    No exemplo anterior, ao usar o operador INSERT, especificamos explicitamente os nomes das colunas da tabela. Usando esta sintaxe, podemos pular algumas colunas. Isso significa que você insere valores para algumas colunas e não os fornece para outras. Exemplo:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    Neste exemplo, não especificamos valores para as duas colunas Address e Country. Você pode excluir algumas colunas da instrução aaa se isso permitir definir a tabela. Neste caso, uma das seguintes condições deve ser atendida: esta coluna é definida como permitindo um valor nulo (ausência de qualquer valor) ou um valor padrão é especificado na definição da tabela. Isso significa que se nenhum valor for especificado, o valor padrão será usado. Se você omitir uma coluna de uma tabela que não permite que valores NULL apareçam em suas linhas e não possui um valor definido para uso padrão, o SGBD emitirá uma mensagem de erro e a linha não será adicionada.

    3. Adicionando dados selecionados

    Nos exemplos anteriores, inserimos dados na tabela digitando-os manualmente na consulta. Porém, o operador INSERT INTO nos permite automatizar esse processo se quisermos inserir dados de outra tabela. Para isso, existe uma construção em SQL como INSERT INTO ... SELECT ... . Esse design permite selecionar simultaneamente dados de uma tabela e inseri-los em outra. Suponha que temos outra tabela Sellers_EU com uma lista de vendedores do nosso produto na Europa e precisamos adicioná-los à tabela geral Sellers. A estrutura dessas tabelas é a mesma (mesmo número de colunas e mesmos nomes), mas os dados são diferentes. Para fazer isso, podemos escrever a seguinte consulta:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    É necessário ficar atento para que os valores das chaves internas não se repitam (campo ID), caso contrário ocorrerá erro. A instrução SELECT também pode incluir uma cláusula WHERE para filtrar dados. Ressalta-se também que o SGBD não presta atenção aos nomes das colunas contidas no operador SELECT, apenas se preocupa com a ordem de sua localização. Portanto, os dados da primeira coluna especificada que foi selecionada por meio de SELECT serão, em qualquer caso, preenchidos na primeira coluna da tabela Sellers especificada após o operador INSERT INTO, independentemente do nome do campo.

    4. Copiando dados de uma tabela para outra

    Muitas vezes, ao trabalhar com bancos de dados, há necessidade de criar cópias de quaisquer tabelas, para fins de backup ou modificação. Para fazer uma cópia completa da tabela em SQL, é fornecido um operador separado SELECT INTO. Por exemplo, precisamos criar uma cópia da tabela Sellers, precisaremos escrever a consulta da seguinte forma:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    Ao contrário da construção anterior INSERT INTO ... SELECT ... quando os dados são adicionados a uma tabela existente, a construção SELECT ... INTO ... FROM ... copia os dados para uma nova tabela. Pode-se dizer também que a primeira construção importa dados e a segunda os exporta.

    Ao usar a construção SELECT ... INTO ... FROM ... deve-se levar em consideração o seguinte:

  • você pode usar qualquer cláusula na instrução SELECT, como GROUP BY e HAVING;
  • você pode usar uma união para adicionar dados de diversas tabelas;
  • os dados podem ser adicionados a apenas uma tabela, independentemente de quantas tabelas foram retirados.