Noções básicas de T-SQL. DML. Exemplos de consultas SQL ao banco de dados MySQL Adicionando linhas inteiras

Noções básicas de T-SQL. DML. Exemplos de consultas SQL ao banco de dados MySQL Adicionando linhas inteiras

Nas seções anteriores, examinamos o trabalho de recuperação de dados de tabelas pré-criadas. Agora é hora de descobrir como podemos criar/excluir tabelas, adicionar novos registros e excluir os antigos. Para estes fins em SQL Existem operadores como: CRIAR- cria uma mesa, ALTERAR- altera a estrutura da tabela, DERRUBAR- exclui uma tabela ou campo, INSERIR- adiciona dados à tabela. Vamos começar a conhecer este grupo de operadores da operadora INSERIR.

1. Adicionando linhas inteiras

Como o nome sugere, o operador INSERIR usado para inserir (acrescentar) linhas a uma tabela de banco de dados. A adição pode ser feita de várias maneiras:

  • - adicione uma linha completa
  • - adicionar parte de uma linha
  • - adicione resultados da consulta.

Portanto, para adicionar uma nova linha a uma tabela, precisamos especificar o nome da tabela, listar os nomes das colunas e especificar o valor de cada coluna usando a construção INSERIR EM nome_tabela (campo1, campo2 ...) VALORES (valor1, valor2...). Vejamos um exemplo.

INSERT INTO Vendedores (ID, Endereço, Cidade, Nome_do_vendedor, País) VALORES("6", "1st Street", "Los Angeles", "Harry Monroe", "EUA")

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

2. Adicionando parte das linhas

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

INSERT INTO Vendedores (ID, Cidade, Nome_do_vendedor) VALORES("6", "Los Angeles", "Harry Monroe")

Neste exemplo, não especificamos um valor para duas colunas Endereço E País. Você pode excluir algumas colunas da declaração INSERIR EM, se isso permitir a definição da tabela. Neste caso, uma das condições deve ser atendida: esta coluna é definida como válida NULO(ausência de qualquer valor) ou o valor padrão especificado na definição da tabela. Isso significa que se nenhum valor for especificado, o valor padrão será usado. Se estiver faltando uma coluna de uma tabela que não permite que valores apareçam em suas linhas NULO e não tiver um valor padrão definido, o SGBD gerará uma mensagem de erro e a linha não será adicionada.

3. Adicionando dados selecionados

Nos exemplos anteriores inserimos dados em tabelas, inserindo-os manualmente na consulta. No entanto, o operador INSERIR EM nos permite automatizar este processo se quisermos inserir dados de outra tabela. Para este propósito em SQL existe uma construção como INSERIR EM ... SELECIONAR .... Esse design permite selecionar simultaneamente dados de uma tabela e inseri-los em outra. Vamos supor que temos outra mesa Vendedores_EU com uma lista de vendedores dos nossos produtos na Europa e precisamos adicioná-los à tabela geral Vendedores. 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 Vendedores (ID, Endereço, Cidade, Nome_do_vendedor, País) SELECIONEID, endereço, cidade, nome_do_vendedor, país FROM Sellers_EU

É preciso ficar atento para que os valores das chaves internas não se repitam (campo EU IA), caso contrário ocorrerá um erro. Operador SELECIONAR também pode incluir sugestões ONDE para filtrar dados. Deve-se notar também que o SGBD não presta atenção aos nomes das colunas contidas na instrução SELECIONAR, apenas a ordem em que estão organizados é importante para ela. Portanto, os dados na primeira coluna especificada que foi selecionada devido a SELECIONAR, será preenchido na primeira coluna da tabela em qualquer caso Vendedores, especificado após o operador INSERIR EM, independentemente do nome do campo.

4. Copiando dados de uma tabela para outra

Freqüentemente, ao trabalhar com bancos de dados, é necessário criar cópias de quaisquer tabelas para fins de backup ou modificação. Para fazer uma cópia completa de uma tabela, o SQL fornece uma instrução separada SELECIONE EM. Por exemplo, precisamos criar uma cópia da tabela Vendedores, você precisará escrever a solicitação da seguinte maneira:

SELECIONE * EM Vendedores_novos DE Vendedores

Ao contrário do design anterior INSERIR EM ... SELECIONAR ... Quando os dados são adicionados a uma tabela existente, o design copia os dados para a nova tabela. Você também pode dizer que a primeira construção importa dados e a segunda exporta. Ao usar o design SELECIONE ... EM ... DE ... O seguinte deve ser considerado:

  • - você pode usar qualquer frase no operador SELECIONAR, como Agrupar por E TENDO
  • - você pode usar uma junção para adicionar dados de várias tabelas
  • - os dados só podem ser adicionados a uma tabela, não importa de quantas tabelas foram retirados.

Última atualização: 13/07/2017

Para adicionar dados, use o comando INSERT, que possui a seguinte sintaxe formal:

INSERT table_name [(column_list)] VALUES (valor1, valor2, ... valorN)

Primeiro vem a expressão INSERT INTO, depois entre parênteses você pode especificar uma lista de colunas separadas por vírgulas às quais os dados devem ser adicionados e, no final, após a palavra VALUES, os valores a serem adicionados para as colunas são listados em parênteses.

Por exemplo, suponha que o seguinte banco de dados tenha sido criado anteriormente:

CRIAR BANCO DE DADOS produtosdb; VÁ USAR produtosdb; CREATE TABLE Produtos (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Fabricante NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Preço MONEY NOT NULL)

Vamos adicionar uma linha usando o comando INSERT:

INSERIR VALORES DE PRODUTOS ("iPhone 7", "Apple", 5, 52000)

Após a execução bem-sucedida no SQL Server Management Studio, a mensagem "1 linha(s) afetada(s)" deverá aparecer no campo de mensagem:

Vale considerar que os valores das colunas entre parênteses após a palavra-chave VALUES são passados ​​na ordem em que são declarados. Por exemplo, na instrução CREATE TABLE acima, você pode ver que a primeira coluna é Id. Mas como o atributo IDENTITY é especificado para ela, o valor desta coluna é gerado automaticamente e não precisa ser especificado. A segunda coluna representa ProductName, portanto o primeiro valor, a string “iPhone 7”, será passado para essa coluna. O segundo valor - a string "Apple" será passada para a terceira coluna Fabricante e assim por diante. Ou seja, os valores são passados ​​para as colunas da seguinte forma:

    Nome do produto: "iPhone 7"

    Fabricante: "Apple"

Além disso, ao inserir valores, você pode especificar as colunas imediatas às quais os valores serão adicionados:

INSERIR EM Produtos (nome do produto, preço, fabricante) VALORES ("iPhone 6S", 41000, "Apple")

Aqui o valor é especificado para apenas três colunas. Além disso, agora os valores são transmitidos na ordem das colunas:

    Nome do produto: "iPhone 6S"

    Fabricante: "Apple"

Para colunas não especificadas (neste caso ProductCount), um valor padrão será adicionado se o atributo DEFAULT for especificado, ou um valor NULL. No entanto, as colunas não especificadas devem ser anuláveis ​​ou ter um atributo DEFAULT.

Também podemos adicionar várias linhas de uma vez:

INSERIR EM VALORES DE PRODUTOS ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Neste caso, três linhas serão adicionadas à tabela.

Além disso, ao adicionar, podemos especificar que a coluna deve ter um valor padrão usando a palavra-chave DEFAULT ou um valor NULL:

INSERIR EM Produtos (ProductName, Fabricante, ProductCount, Preço) VALORES ("Mi6", "Xiaomi", DEFAULT, 28000)

Neste caso, será utilizado o valor padrão da coluna ProductCount (se estiver definido, se não estiver, então NULL).

Se todas as colunas tiverem um atributo DEFAULT que especifica um valor padrão ou forem anuláveis, você poderá inserir valores padrão para todas as colunas:

INSERIR EM PRODUTOS VALORES PADRÃO

Mas se pegarmos a tabela Produtos, então tal comando falhará com erro, pois vários campos não possuem o atributo DEFAULT e ao mesmo tempo não permitem o valor NULL.

Excluindo entradas

Para excluir registros de uma tabela, use o operador DELETE:

DELETE FROM Tablename WHERE condição;

Este operador remove registros (não valores de colunas individuais) da tabela especificada que atendem à condição especificada. Uma condição é uma expressão lógica, cujas diversas construções foram discutidas em laboratórios anteriores.

A consulta a seguir exclui registros da tabela Cliente onde o valor da coluna LName é "Ivanov":

EXCLUIR DO Cliente

ONDE LNome = "Ivanov"

Se a tabela contiver informações sobre vários clientes com o sobrenome Ivanov, todos eles serão excluídos.

A instrução WHERE pode conter uma subconsulta para seleção de dados (instrução SELECT). As subconsultas em uma instrução DELETE funcionam exatamente da mesma forma que em uma instrução SELECT. A consulta a seguir remove todos os clientes da cidade de Moscou, enquanto o identificador exclusivo da cidade é retornado por meio de uma subconsulta.

EXCLUIR DO Cliente

WHERE IdCity IN (SELECT IdCity FROM City WHERE CityName = "Moscou")

O Transact-SQL estende o SQL padrão permitindo que você use uma cláusula FROM adicional em uma instrução DELETE. Esta extensão, que especifica uma junção, pode ser usada no lugar de uma subconsulta na cláusula WHERE para especificar as linhas a serem excluídas. Ele permite especificar dados do segundo FROM e remover as linhas correspondentes da tabela na primeira cláusula FROM. Em particular, a consulta anterior pode ser reescrita da seguinte forma

EXCLUIR DO Cliente

FROM Cliente k INNER JOIN

A operação de exclusão de registros de uma tabela é perigosa no sentido de que está associada ao risco de perda irreversível de dados em caso de erros semânticos (mas não sintáticos) na formulação da expressão SQL. Para evitar complicações, antes de excluir registros, é recomendável primeiro executar a consulta de seleção apropriada para ver quais registros serão excluídos. Assim, por exemplo, antes de executar a consulta de exclusão discutida anteriormente, não faria mal nenhum executar a consulta de seleção correspondente.

SELECIONE *

FROM Cliente k INNER JOIN

Cidade c ON k.IdCity = c.IdCity AND c.CityName = "Moscou"

Para excluir todos os registros de uma tabela, basta usar a instrução DELETE sem a palavra-chave WHERE. Neste caso, a própria tabela com todas as colunas nela definidas é salva e está pronta para inserir novos registros. Por exemplo, a consulta a seguir exclui registros de todos os produtos.

EXCLUIR DO Produto

Atribuição para trabalho independente: Formule uma consulta em SQL para excluir todos os pedidos que não contenham um único produto (ou seja, todos os pedidos vazios).

Além da instrução SELECT discutida anteriormente, a Linguagem de Manipulação de Dados (DML) contém três outras instruções: INSERT, UPDATE e DELETE. Assim como a instrução SELECT, essas três instruções operam em tabelas ou em visualizações. Este artigo discute a instrução INSERT e as outras duas instruções serão discutidas no próximo artigo.

Instrução INSERIR insere linhas (ou partes de linhas) em uma tabela. Existem duas formas diferentes desta instrução:

INSERIR tab_name [(col_list)] VALORES PADRÃO | VALORES ((DEFAULT | NULL | expressão ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Convenções de sintaxe

A primeira forma da instrução permite inserir uma linha (ou parte dela) na tabela. E a segunda forma da instrução INSERT permite inserir em uma tabela o conjunto de resultados de uma instrução SELECT ou um procedimento armazenado executado por uma instrução EXECUTE. O procedimento armazenado deve retornar dados a serem inseridos na tabela. Quando usada com uma instrução INSERT, uma instrução SELECT pode selecionar valores de uma tabela diferente ou da mesma tabela na qual os dados estão sendo inseridos, desde que os tipos de dados das colunas correspondentes sejam compatíveis.

Para ambos os formulários, o tipo de dado de cada valor inserido deve ser compatível com o tipo de dado da coluna correspondente da tabela. Todas as strings e dados temporários devem ser colocados entre aspas; Os valores numéricos não precisam ser colocados entre aspas.

Inserindo uma única linha

Para ambas as formas da instrução INSERT, especificar explicitamente a lista de colunas é opcional. Não listar colunas é o mesmo que especificar todas as colunas da tabela.

Parâmetro VALORES PADRÃO insere valores padrão para todas as colunas. Colunas com tipo de dados TIMESTAMP ou propriedade IDENTITY são inseridas por padrão com valores gerados automaticamente pelo sistema. Para colunas de outros tipos de dados, o valor padrão não nulo correspondente é inserido, se disponível, ou NULL, caso contrário. Se uma coluna não permitir valores NULL e não tiver um valor padrão definido, a instrução INSERT falhará e uma mensagem será exibida.

O exemplo abaixo insere linhas na tabela Employee do banco de dados SampleDb, demonstrando o uso de uma instrução INSERT para inserir uma pequena quantidade de dados no banco de dados:

USE SampleDb; INSERT INTO Employee VALUES (34990, "Andrey", "Batonov", "d1"); INSERT INTO Employee VALUES (38640, "Alexey", "Vasin", "d3");

Existem duas maneiras diferentes de inserir valores em uma nova linha. A instrução INSERT no exemplo abaixo usa explicitamente a palavra-chave NULL e insere um valor NULL na coluna correspondente:

USE SampleDb; INSERT INTO Employee VALUES (34991, "Andrey", "Batonov", NULL);

Para inserir valores em algumas (mas não em todas) colunas de uma tabela, geralmente você precisa especificar explicitamente essas colunas. Colunas não especificadas devem permitir valores nulos ou ter um valor padrão definido.

USE SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Os dois exemplos anteriores são equivalentes. Na tabela Employee, a única coluna que permite valores NULL é a coluna DepartmentNumber, e todas as outras colunas foram desabilitadas pela cláusula NOT NULL na instrução CREATE TABLE.

Ordem dos valores em Oferta de VALORES As instruções INSERT podem diferir da ordem especificada na instrução CREATE TABLE. Nesse caso, a ordem deles deve corresponder à ordem em que as colunas correspondentes estão listadas na lista de colunas. Abaixo está um exemplo de inserção de dados em uma ordem diferente do original:

USE SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALORES ("d1", "Batonov", 34993, "Andrey");

Inserindo múltiplas linhas

A segunda forma da instrução INSERT insere uma ou mais linhas selecionadas por uma subconsulta na tabela. O exemplo abaixo mostra como inserir linhas em uma tabela usando a segunda forma da instrução INSERT. Nesse caso, uma consulta é executada para selecionar os números e nomes dos departamentos localizados em Moscou, e o conjunto de resultados resultante é carregado em uma nova tabela criada anteriormente.

A nova tabela MoscowDepartment criada no exemplo acima possui as mesmas colunas da tabela Department existente, exceto pela coluna Location ausente. A subconsulta na instrução INSERT seleciona todas as linhas na tabela Departamento para as quais o valor da coluna Local é "Moscou", que são então inseridas na nova tabela criada no início da consulta.

O exemplo abaixo mostra outra maneira de inserir linhas em uma tabela usando a segunda forma da instrução INSERT. Neste caso, uma consulta é executada para selecionar números pessoais, números de projetos e datas de início do projeto para todos os funcionários com a posição “Gerente” que trabalham no projeto p2 e então carrega o conjunto de resultados resultante em uma nova tabela criada no início de a consulta:

USE SampleDb; CREATE TABLE ManagerTeam (EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";

Antes de inserir linhas usando a instrução INSERT, as tabelas MoscowDepartment e ManagerTeam (nos exemplos acima) estavam vazias. Se a tabela já existisse e contivesse linhas com dados, novas linhas seriam adicionadas a ela.

Este artigo é dedicado ao preenchimento de tabelas de banco de dados com dados, ou seja, estudaremos comandos SQL para inserção de novos registros. Deve-se dizer que o registro em uma tabela pode ser feito de duas maneiras:

Método número 1.
Vamos tentar adicionar uma entrada sobre o novo país à tabela de países. A sintaxe de adição será a seguinte:
INSERT INTO nome_tabela (campo_1, campo_2, ...) VALUES (Valor_1, Valor_2, ...); Com base na estrutura da nossa tabela, a consulta SQL será assim:
INSERT INTO países (nome_país, nome_acrônimo) VALUES ("Rússia", "RU"); Foi assim que adicionamos uma entrada sobre o país “Rússia” à nossa tabela. Tudo aqui deve ser claro e simples, o principal é observar atentamente quais campos você indica nos primeiros colchetes, e escrever os valores na mesma ordem no segundo.

Método número 2.
O segundo método, na minha opinião, é um pouco mais simples, pois você vê o que atribui e a qual campo. Acredite, se uma tabela possui um grande número de colunas, é muito fácil confundir ou ignorar a ordem dos campos nas primeiras e a ordem dos valores nos segundos colchetes. A sintaxe do segundo método é:
INSERT INTO nome_tabela SET campo_1 = Valor_1, campo_2 = Valor_2, ... ; Vamos usar este exemplo para adicionar algumas informações à tabela. pessoas, pois existem mais campos, e a vantagem do segundo método será sentida imediatamente:
INSERT INTO pessoas SET primeiro_nome="Ivan", último_nome="Dulin", data_de_registro="14/06/2012", país="1"; Agora nossa tabela contém os seguintes dados:


Você provavelmente notou que não especificamos um valor para a idade, mas acabou sendo preenchido... Tudo está correto - para este campo definimos o valor padrão como 25. Então agora nosso Ivan Dulin está listado no banco de dados com uma idade de 25 anos. Pode não ser o melhor exemplo definir um valor padrão para o campo idade, mas você pode definir essas propriedades para campos como, por exemplo, a classificação do usuário do site ou o número de visualizações de página. Eles são inicialmente definidos como 0.

Você também deve prestar atenção ao formato da data no MySQL: AAAA-MM-DD. Se você não aderir a isso, suas entradas simplesmente não serão inseridas na tabela.

Como você pode ver, o campo profissão é preenchido como NULL, este é um valor vazio. Para este campo.

Além disso, considere o seguinte comando:
CARREGAR DADOS LOCAL INFILE "D:\zapros.txt" NA TABELA pessoas; O que você acha que fizemos agora?! E fizemos o seguinte: adicionamos dados à tabela pessoas do arquivo solicitações.txt, que está localizado na unidade D. As informações do arquivo devem ter a seguinte estrutura:


A estrutura de dados do arquivo deve atender aos seguintes requisitos:
  1. Cada nova entrada deve ser descrita em uma nova linha
  2. Os dados devem ser especificados para absolutamente todos os campos. Como você pode ver, especificamos o valor NULL para o campo id, porque ele é incrementado automaticamente, então o próprio MySQL irá inserir o valor necessário.
  3. Os campos são separados uns dos outros por um caractere de tabulação (tecla Tab).
  4. As informações inseridas devem corresponder aos tipos de dados do campo específico. Isto é, por exemplo, uma data no formato AAAA-MM-DD, um número inteiro para inteiro, etc.
Assim, você aprendeu como inserir novos dados nas tabelas do seu banco de dados. Para consolidar o material que você estudou, insira você mesmo as seguintes informações:

Tabela de profissões:

Tabela de pessoas:

primeiro nome sobrenome idade data_de_registro país profissão
Leônidas Bilak 45 2012-06-20 2 1
Iuri Nazarov 22 2012-06-21 3 1
Allá Savenko 25 2012-06-22 2 3
Irina Nikolaeva 31 2012-06-22 1 3

Certifique-se de adicionar essas entradas, pois precisaremos delas para estudar a instrução SELECT (seleção de informações do banco de dados), que veremos no próximo (quarto) artigo sobre estudo de consultas SQL.
visualizações