INSERT IN T-SQL Statement no SQL Server

INSERT IN T-SQL Statement no SQL Server

EX9


Neste artigo, examinaremos profundamente a instrução INSERT INTO mostrando os diferentes formatos de sintaxe e cenários de uso para essa instrução.

A linguagem T-SQL é uma rica linguagem de programação de banco de dados que fornece um grande número de instruções e funções dinâmicas que nos ajudam a executar qualquer funcionalidade de maneiras diferentes, com base em nossas habilidades de desenvolvimento.

Uso

A instrução INSERT INTO T-SQL é usada principalmente para adicionar uma ou mais linhas à tabela de destino ou exibição no SQL Server. Isso pode ser feito fornecendo valores constantes na instrução INSERT INTO ou fornecendo a tabela ou exibição de origem da qual copiaremos as linhas.

Sintaxe

A instrução INSERT INTO T-SQL possui uma sintaxe dinâmica que se ajusta a todos os tipos de processos de inserção de dados. Para uma visão detalhada da instrução INSERT INTO T-SQL, consulte a documentação do Microsoft INSERT INTO.

A sintaxe da instrução INSERT INTO T-SQL usada para inserir uma única linha em uma tabela ou exibição do banco de dados do SQL Server é como:

Tabela INSERT INTO (coluna1, coluna2,…)

VALORES (expressão1, expressão2, …);

E a sintaxe da instrução INSERT INTO usada para inserir várias linhas de uma tabela de banco de dados de origem é como:

Tabela INSERT INTO (coluna1, coluna2,…)

SELECT expressão1, expressão2,…

FROM source_tables

[WHERE conditions];

Das instruções de sintaxe anteriores:

  • o tabela é o nome da tabela de destino na qual as linhas serão inseridas

  • Coluna1, coluna2 são os nomes das colunas na tabela de destino que serão preenchidas com os valores fornecidos
  • o expression1, expression2 são os valores que serão atribuídos às colunas mencionadas na tabela de destino com base na ordem fornecida. Leve em consideração que você deve fornecer os valores para todas as colunas NOT NULL na tabela de destino e, opcionalmente, fornecer valores para as colunas NULL

  • o source_tables é o nome da tabela da qual os valores serão copiados e inseridos na tabela de destino. Esses valores serão filtrados com base nas condições WHERE fornecidas

  • o PARA DENTRO A palavra-chave da instrução INSERT INTO é opcional

Começando

Para fins de demonstração, criaremos uma nova tabela de teste, que contém uma coluna IDENTITY, NULL e NOT NULL, e executaremos as alterações gradualmente nessa tabela para cobrir a maioria dos casos de uso comuns do INSERT INTO T- Instrução SQL.

A tabela de demonstração pode ser criada usando a instrução CREATE TABLE T-SQL abaixo:

Exemplos

A maneira simples de usar a instrução INSERT INTO para adicionar um novo registro à tabela criada é fornecer os valores em formato constante, onde os valores serão fornecidos para todas as colunas NULL e NOT NULL, exceto para as colunas geradas automaticamente, no ordem correta para as colunas na tabela de destino, como na instrução T-SQL abaixo:

Ao verificar a linha inserida na tabela de destino, você verá que o registro foi inserido com sucesso e atribuiu um valor de ID gerado automaticamente a 1, conforme mostrado abaixo:

EX1

Para inserir vários registros na mesma instrução INSERT INTO, em vez de escrever várias instruções de inserção, podemos fornecer os valores para cada linha no formato separado por vírgula, como na instrução T-SQL abaixo que insere três novas linhas na tabela de demonstração :

Ao verificar a tabela para as linhas recém-inseridas, você verá que três novos registros são inseridos na tabela de destino e atribuem valores de ID incrementados automaticamente, conforme mostrado abaixo:

EX2

Para inserir valores apenas para colunas específicas, devemos mencionar o nome dessas colunas e fornecer os valores para essas colunas na mesma ordem que na lista de colunas, levando em consideração que todas as colunas NOT NULL estão listadas e atribuídas, como na instrução T-SQL abaixo:

Na tabela de destino, você verá que uma nova linha é inserida com os valores das colunas atribuídos e o valor NULL para as colunas NULL que não são mencionadas na lista de colunas da instrução INSERT INTO T-SQL, conforme mostrado abaixo:

EX3

Você também pode fornecer a lista de colunas na instrução INSERT INTO em uma ordem diferente da ordem das colunas na tabela de destino, certificando-se de atribuir valores para as colunas na mesma ordem listada na instrução INSERT INTO, como na instrução T-SQL abaixo:

E o registro será inserido com sucesso, com o valor correto atribuído a cada coluna, conforme mostrado abaixo:

EX4

Se você tentar atribuir valores às colunas de nome e data de nascimento apenas na instrução INSERT INTO T-SQL, como na instrução abaixo:

A execução da instrução falhará, pois você deve atribuir valor à coluna NOT NULL do número de telefone na instrução INSERT INTO T-SQL, lembrando que todas as colunas NOT NULL são obrigatórias, conforme mostrado na mensagem de erro abaixo:

Erro1

Vamos modificar a tabela de destino adicionando uma nova coluna computada usada para calcular a idade de cada aluno, conforme mostrado abaixo:

Lembre-se de que o valor da coluna calculada será calculado automaticamente com base na equação definida, sem poder inserir esse valor explicitamente.

Ao verificar os dados da tabela de destino novamente, você verá que a idade é calculada automaticamente para todos os alunos, conforme mostrado abaixo:

EX5

Se você tentar inserir um valor explícito para a coluna computada, usando a instrução INSERT INTO abaixo:

A execução da instrução falhará, mostrando que você não pode modificar o valor calculado automaticamente da coluna calculada, conforme mostrado abaixo:

Erro2

Além disso, se você tentar inserir um valor explícito para a coluna ID, com a propriedade IDENTITY, que será automaticamente incrementada e gerada, como na instrução INSERT INTO abaixo:

A execução da instrução INSERT falhará, mostrando que você não pode inserir um valor explícito para a coluna de identidade gerada automaticamente, como na mensagem de erro abaixo:

Erro3

Para permitir a inserção de um valor explícito para a coluna de identidade, precisamos ativar a propriedade IDENTITY_INSERT antes de executar a instrução INSERT INTO e desabilitá-la após inserir o valor, certificando-se de mencionar o nome de todas as colunas NOT NULL e a coluna de identidade e atribua valores para a todas essas colunas na ordem correta, como na instrução T-SQL abaixo:

E a nova linha será inserida com sucesso com o valor de identidade fornecido explicitamente. Fornecer um valor explícito para a coluna de identidade não é altamente recomendado, a menos que você planeje copiar um registro para outra tabela com o mesmo valor de identidade, pois isso fará uma lacuna nos valores de identidade e começará a contar após o valor de ID fornecido, conforme mostrado abaixo:

EX6

Vamos modificar a tabela de destino novamente, adicionando uma nova coluna NULL de identificador exclusivo, levando em consideração que devemos fornecer um valor padrão a ser atribuído às colunas existentes, caso planejemos adicionar a coluna GUID como NOT NULL. A nova coluna pode ser adicionada usando a instrução ALTER TABLE T-SQL abaixo:

A coluna uniqueidentifier pode ser atribuída a valores usando a função interna NEWID () que gera um valor exclusivo em cada chamada, que pode ser facilmente usado na instrução INSERT INTO, como abaixo:

Verificando a tabela de destino, você verá que um valor NULL é atribuído a essa coluna GUID para todas as colunas existentes anteriormente e um valor GUID exclusivo atribuído à coluna recém-inserida, usando a função NEWID (), como mostrado abaixo:

EX7

A instrução INSERT INTO pode ser usada para adicionar valores à tabela de destino de outra tabela de origem, na qual você precisa fornecer a lista de colunas na tabela de destino e as colunas relacionadas da tabela de origem que possuem os valores a serem atribuídos ao colunas da tabela de destino, como na instrução T-SQL abaixo:

A instrução INSERT INTO anterior é usada para copiar 10 registros de duas tabelas de origem com base na lógica fornecida, e os registros inseridos serão os seguintes:

EX8

Podemos modificar a instrução INSERT INTO anterior controlando o número de colunas inseridas usando a opção TOP na cláusula INSERT, em vez de controlá-la na instrução SELECT da tabela de origem, conforme mostrado abaixo:

E os 10 registros serão copiados da tabela de origem e inseridos na tabela inserida, conforme mostrado no resultado abaixo:

EX9

A instrução INSERT INTO também pode ser usada para adicionar linhas a uma tabela de banco de dados localizada em um servidor remoto usando a instrução OPENQUERY quando houver um servidor vinculado para se conectar ao SQL Server remoto ou usando a instrução OPENDATASOURCE usando uma cadeia de conexão específica, como em T -SQL abaixo:

E o novo registro será inserido nessa tabela de banco de dados remoto, como mostrado abaixo:

EX10

É bom mencionar que a cláusula OUTPUT pode ser usada com a instrução INSERT INTO para recuperar informações de cada linha adicionada pela instrução INSERT executada. Essas informações podem ser usadas posteriormente como uma mensagem de confirmação do aplicativo ou para fins de arquivamento de dados.

No exemplo abaixo, criamos uma tabela temporária para armazenar os nomes dos alunos inseridos, como nesta instrução T-SQL:

Consultando a tabela temporária, o nome do aluno inserido será exibido, como abaixo:

EX11

Ahmad Yaseen
Últimas mensagens de Ahmad Yaseen (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Executando um Big Data Cluster do SQL Server 2019 no VMware vSphere |