Consultas SQL para atualização de dados (UPDATE). Ajuda SQL (DML): Instruções UPDATE e DELETE Solução geral com SQL dinâmico

Consultas SQL para atualização de dados (UPDATE). Ajuda SQL (DML): Instruções UPDATE e DELETE Solução geral com SQL dinâmico

Comando ATUALIZAR— faz alterações em um registro existente ou em vários registros em uma tabela SQL. Modifica os valores existentes em uma tabela ou na tabela principal da visualização.

Sintaxe do comando UPDATE

Sintaxe do comando ATUALIZAR

Comando ATUALIZAR. Palavras-chave e parâmetros básicos do comando UPDATE

  • esquema - um identificador de permissão, geralmente igual a algum nome de usuário
  • vista de mesa - Nome da tabela SQL, em que os dados são alterados; se uma visualização for definida, os dados serão modificados na tabela principal SQL representação
  • subconsulta_1 - subconsulta, que o servidor trata da mesma forma que uma visualização
  • Comcoluna - coluna da tabela SQL ou submissões SQL, cujo valor muda; se a coluna da tabela for de uma frase DEFINIRé omitido, o valor da coluna permanece inalterado
  • expressão - ; esta expressão pode conter variáveis ​​principais e variáveis ​​indicadoras opcionais
  • subconsulta_2 - novo valor atribuído à coluna correspondente
  • subconsulta_3 - novo valor atribuído à coluna correspondente

ONDE- define o intervalo de linhas a serem modificadas por aquelas para as quais uma determinada condição é verdadeiro; se esta frase for omitida, todas as linhas da tabela ou visualização serão modificadas.
Quando uma aprovação é emitida, qualquer Gatilho de ATUALIZAÇÃO, definido na tabela.
Subconsultas. Se a oferta DEFINIR contém subconsulta, ele retorna exatamente uma linha para cada linha modificada. Cada valor no resultado da subconsulta é atribuído às colunas da lista correspondentes entre parênteses. Se a subconsulta não retornar nenhuma linha, a coluna será atribuída NULO. Subconsultas pode selecionar dados da tabela modificada. Oferecer DEFINIR pode combinar expressões e subconsultas.

Exemplo de comando UPDATE 1
Alterando a classificação de todos os compradores para um valor igual a 200:

Clientes DEFINIR classificação = 200;

Exemplo de comando UPDATE 2
A substituição de um valor de coluna em todas as linhas de uma tabela geralmente raramente é usada. Portanto na equipe, como na equipe EXCLUIR, você pode usar um predicado. Para realizar a substituição especificada dos valores da coluna de avaliação, para todos os clientes que são atendidos pelo vendedor Giovanni (snum = 1003), deve-se informar:

Clientes DEFINIR classificação = 200 ONDE snum = 1001;

Exemplo de comando SQL UPDATE 3
Em uma frase DEFINIR Você pode especificar qualquer número de valores para as colunas, separados por vírgulas:

Emp. DEFINIR trabalho = 'GERENTE', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

Exemplo de comando UPDATE 4
Em uma frase DEFINIR você pode especificar um valor NULL sem usar nenhuma sintaxe especial (como IS NULL). Assim, se você quiser definir todas as avaliações de clientes de Londres (cidade = 'London') como NULL, insira:

Clientes DEFINIR classificação = NULL WHERE cidade = 'Londres';

Exemplo de comando UPDATE 5
Explica o uso da seguinte sintaxe de comando:

  • Ambas as formas de frase DEFINIR juntos em uma declaração.
  • Subconsulta.
  • Uma cláusula WHERE que limita o intervalo de linhas que podem ser modificadas.

Emp a DEFINIR número de departamento =
(SELECIONAR deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( SELECIONAR 1,1*AVG(sal), 1,5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( SELECIONAR deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');

A declaração acima faz o seguinte:

  • Modifica apenas os funcionários que trabalham em Dallas ou Detroit
  • Define o valor da coluna deptno para funcionários de Boston
  • Fixa o salário de cada funcionário em 1,1 vezes o salário médio de todo o departamento
  • Define a comissão de cada funcionário em 1,5 vezes a comissão média de todo o departamento

Alterando os valores dos campos (comando ATUALIZAR). Komatsdoy ATUALIZAR você pode alterar alguns ou todos os valores consecutivos. O comando especifica o nome da tabela e as alterações. Suponha que, por ordem do reitor, seja estabelecido um novo (igual para todos) valor da bolsa de 50.000 rublos para todos os alunos que recebem uma bolsa. Para fazer isso, emita o comando:

ATUALIZAR Spisok

DEFINIR estip = 50.000;

Em um time ATUALIZAR em uma frase ONDE Você pode definir a atualização apenas de determinadas linhas.

ATUALIZAR

DEFINIR stip = 50.000

ONDE kurs = eu;

Na cláusula SET do comando ATUALIZAR Você pode especificar qualquer número de valores para colunas, separados por vírgulas.

Um time ATUALIZAR Você não pode atualizar várias tabelas.

Em um time ATUALIZAR em uma frase DEFINIR Você pode usar expressões escalares para alterar o valor de um campo. Suponhamos que as bolsas de todos os alunos sejam aumentadas em 25%; mudanças necessárias:

ATUALIZAR Spisok

DEFINIR ponto = (ponto *25)/100;

Então a equipe ATUALIZAR destina-se a substituir valores nas linhas da tabela (registros).

SQL. Sintaxe do comando DELETE

Excluindo linhas de uma tabela (comando EXCLUIR). Equipe EXCLUIR Não são os valores dos campos de linhas individuais que são excluídos, mas as linhas inteiras. Depois de executar o comando EXCLUIR para toda a tabela ela fica vazia, por exemplo:

EXCLUIR DE Spisok;

Para remover linhas especificamente especificadas, você pode usar o predicado

EXCLUIR DE Spisok

ONDE ponto = 0;

ou especifique o valor da chave primária para excluir um registro

EXCLUIR DE Spisok

ONDE fio = "Petkin";

Em equipes INSERIR, EXCLUIR, ATUALIZAR você pode usar subconsultas.

Sintaxe do comando SQL SELECT

A linguagem SQL é uma linguagem de consulta estruturada. Uma solicitação neste ambiente é um comando com o qual o usuário cria uma tarefa para o SGBD. Após executar o comando, o SGBD deve fornecer ao usuário as informações especificadas na solicitação.
todos os pedidos em SQL formulado usando um comando SELECIONAR após o que começa a busca por certas informações (necessárias) na tabela no banco de dados.

Exemplo. Com base na tabela Spisok, obtenha uma tabela com todos os registros no seguinte formato:

O comando é dado:

SELECIONAR fio, stip DE Spisok;

O resultado do comando é mostrado na figura.

fio esticar
Rybkina
Utkina
Pshenichko
Sobachkina
Testículo

Selecione- uma palavra-chave que “informa” ao SGBD que o comando é uma solicitação;

fio, stip- uma lista de nomes de campos (colunas) pelos quais as informações devem ser selecionadas e a nova tabela normalizada;

DE Spisok; DE- a palavra-chave deve estar em todas as solicitações; Spisik – nome da tabela – fonte de dados da consulta;

O símbolo de ponto e vírgula (;) indica o fim do comando e a prontidão para sua execução.

Depois da palavra-chave SELECIONAR seguido por um espaço. A seguir, são listados os nomes dos campos (colunas) da seleção separados por vírgulas.

Para exibir todas as colunas de uma tabela de banco de dados, você pode omitir a lista de campos substituindo-a por um asterisco (*). As colunas são exibidas de acordo com a estrutura da tabela de origem

SELECIONAR * DE Spisok;

O comando SELECT pode exibir colunas em qualquer ordem diferente da ordem definida pela estrutura da tabela de origem. Esta sequência é especificada pela lista de nomes de colunas no comando SELECT. Exemplo de colunas reordenadas na tabela de saída

SELECIONAR kurs, grupo, fio DE Spisok;

SQL. Seleção por critério (ONDE)

Usando o aplicativo ONDE em um time SELECIONAR a condição para seleção de registros da tabela é especificada; um predicado pode assumir os valores “verdadeiro” ou “falso”.

Exemplo.

Equipe SELECIONAR para selecionar na tabela Spisok os alunos do grupo ET-41:

SELECIONAR grupo, fio DE Spisok ONDE gruppa=’ET-41’;

O programa percorrerá todos os registros da tabela Spisok, verificando cada um deles quanto à veracidade do predicado grupo=’ET-41’. Como resultado da execução obtemos:

grupo fio
ET-41 Rybkina
ET-41 Utkina
ET-41 Pshenichko
ET-41 Sobachkina
ET-41 Testículo

Usando SQL com outras linguagens de programação

Linguagem SQL usado para escrever programas de acesso a bancos de dados como sublinguagem de outras linguagens de programação processual (Pascal, PL/1, Fortran, COBOL, C, Ada, etc.). Linguagem SQL não processual, mas declarativo, local. Pode ser incorporado em programas escritos em linguagens procedurais. Língua SQL não há operadores básicos de verificação de condição IF, operadores FOR, DO e WHILE, etc. SQL destina-se exclusivamente ao gerenciamento de banco de dados.

O uso combinado dessas linguagens permite programar programas procedurais complexos, por exemplo, programá-los em Pascal, e através SQL acessar seu banco de dados. Todos os comandos integrados SQL incluído no texto principal do programa em linguagem de alto nível, começando com a frase EXEX SQL e termine com o terminador de idioma apropriado (em Pascal;).

Programa com integrado SQL antes de sua própria compilação, ocorre a pré-compilação, onde os comandos SQL são convertidos (traduzidos) pelo pré-compilador na forma de uma linguagem de alto nível; Depois disso, todo o programa principal é compilado.

Equipes SQL incluídos em outro programa são considerados pelo programa principal como SQL-procedimentos. Durante a execução, o programa principal se comunica com o banco de dados, assim como o usuário no ambiente SQL.

Aplicativo Visual Basic. Conceitos Básicos.

Na programação, os conceitos básicos são “variável” e “valor variável”. Uma variável é uma quantidade (objeto) cujo valor muda durante a execução do programa. Uma variável em um computador é representada pelo nome atribuído (identificador) e seu valor é determinado pelo operador de atribuição.

Para cada identificador de variável é alocado um lugar na memória onde seu valor é armazenado. Lembremos e entendamos, à primeira vista, um conceito elementar: qualquer programa utiliza variáveis ​​e seus valores. Para cada novo nome de variável encontrado no programa, o VBA o determina automaticamente (aloca um lugar na memória para ele). Este espaço permanece vazio até que um valor seja atribuído à variável. As variáveis ​​são comparadas a contêineres para armazenar dados de qualquer tipo.

Os dados atribuem um objeto por números, letras e outros meios. As operações aritméticas são realizadas com números e as operações lógicas com letras. Isso já indica diferentes tipos de dados, cada um com suas próprias formas de representá-los dentro de uma representação de máquina.

Tipos de dados VBA

Tipos de dados Prefixo Símbolo de descrição Tamanho (bytes) Significado
Inteiro Interno % Inteiro curto (-32788 a +32767)
Longo GNL & Inteiro longo (-2147483648 a +2147483647)
Solteiro Canção ! Ponto flutuante de precisão única: -3,4e38 a +3,4e38
Dobro Dbl # Ponto flutuante de precisão dupla: -1,79e308 a +1,79e308
Byte Byt Não Byte: 0 a 255
Moeda Cur @ Número de ponto fixo: -922337203685477.5808 Para +922337203685477.5807
Corda Str. $ 10 + 2 por símbolo Sequência: 0 a 65535 caracteres
boleano Lixeira Não Número booleano: verdadeiro e falso
Data Dado Não data e hora
Variante Var Não <16 Quaisquer dados
Objeto Obj Não Qualquer referência de objeto

Variáveis ​​e constantes em VBA

As variáveis ​​em um programa são declaradas, ou seja, o tipo e o escopo da variável são determinados. As variáveis ​​podem ser declaradas em dois níveis – nível de procedimento e nível de módulo.

A declaração ao nível do módulo é feita pelos operadores Públicos e privados: ao nível do módulo e do procedimento - pelo operador Dim: apenas ao nível do procedimento - pelo operador estático.

A inicialização das variáveis ​​declaradas ocorre em tempo de compilação: a uma variável numérica é atribuído o valor zero (0): a uma variável de string é atribuída uma string vazia (comprimento zero): a uma variável do tipo Variant é atribuído o valor Emtry (sem valor).

Constantes: possuem nome, mas não alteram seu valor durante a execução do programa. Para definir constantes em VB, use o operador Const no seguinte formato:

Const (nome da constante =<константное выражение>}…

Público – a constante declarada está disponível para qualquer procedimento

Privado – para procedimentos dentro de um módulo

COMO<тип данных>- declaração de tipo de dados constante

Operador ATUALIZAR altera os dados existentes na tabela. O comando tem a seguinte sintaxe:

ATUALIZAR SET ( = ( | NULO | PADRÃO),...) [ (ONDE )];

Uma única instrução pode ser usada para definir valores para qualquer número de colunas. No entanto, você só pode fazer alterações em cada coluna de uma tabela especificada uma vez na mesma instrução UPDATE. Se não houver cláusula WHERE, todas as linhas da tabela serão atualizadas.

Se uma coluna for NULLable, você poderá especificá-la explicitamente. Você também pode substituir o valor existente pelo valor padrão (DEFAULT) para uma determinada coluna.

Exemplos de instruções SQL UPDATE

Eu tenho a seguinte tabela de Planetas:

Exemplo 1: Usando a instrução SQL UPDATE para alterar o nome do planeta Netuno sobre Plutão:

UPDATE Planetas SET PlanetName = "Pluton" WHERE ID = 3;

Neste exemplo, a condição da cláusula SQL WHERE é necessária porque sem ela, todos os campos da coluna PlanetName em toda a tabela seriam alterados para Pluton. Neste caso, a coluna ID vem em nosso auxílio, pois é a chave primária que permite que um registro seja identificado de forma única.

Exemplo 2. Aumentaremos os salários de todos os professores em 2 vezes e os bônus em 10 vezes.

Atualizar dados em um banco de dados significa alterar valores em registros de tabelas existentes. Nesse caso, é possível alterar os valores dos campos de um grupo de linhas (até mesmo todas as linhas da tabela) e editar o valor de um campo em uma linha individual.

No SQL, você pode alterar um registro em uma tabela de banco de dados usando o comando UPDATE. Em sua forma mais minimalista, o comando de atualização de dados se parece com isto:

ATUALIZAR tabela SET campo = valor

Aqui, ATUALIZAR– um comando indicando que a solicitação é para atualizar dados;

mesa– o nome da tabela na qual serão feitas alterações;

DEFINIR– um comando seguido de campos separados por vírgula com valores atribuídos;

campo– campo da tabela onde será feita a alteração;

significado– um novo valor que será inserido no campo.


Por exemplo, se você precisar definir um campo em todas as linhas de uma tabela como zero, poderá executar a seguinte consulta:

ATUALIZAR preço DEFINIDO de mercadorias = 0

Neste caso, o campo preço em absolutamente todas as linhas disponíveis da tabela assumirá o valor 0.

Alterando um valor

Alterar os valores de todos os campos de uma tabela é extremamente raro. Na maioria das vezes é necessário alterar o valor de uma entrada específica. Para isso, ao final da linha com o comando UPDATE, será adicionada uma diretiva WHERE, que especifica uma condição que determina em qual linha a operação de atualização deve ser realizada.

Existe uma tabela:

Por exemplo, precisamos atualizar o custo de um produto com seu valor conhecido por nós num. Para fazer isso, execute a seguinte consulta:

ATUALIZAR preço DEFINIDO de mercadorias = 150 ONDE num = 2

Agora, antes da operação de alteração dos campos, será selecionada uma linha que satisfaça a condição num = 2. Existe apenas uma linha desse tipo na tabela. Neste estoque, o preço será alterado para o valor 150. Como resultado, obtemos uma tabela com o preço alterado do produto.

Fazendo alterações em várias linhas com uma condição de seleção

Se você se lembrar de toda a variedade de condições da consulta, poderá imaginar quão diversas as amostras podem ser. Portanto, as consultas de atualização podem ser executadas com uma linha, ou com um grupo de linhas, ou com todas as linhas da tabela. Tudo depende da tarefa que você está enfrentando, bem como de quais linhas da tabela você precisa realizar operações de atualização.

Por exemplo, queremos reduzir pela metade o preço de todos os bens que custam atualmente 100 ou mais. Solicitar:

ATUALIZAR mercadorias DEFINIR preço = preço / 2 ONDE preço >= 100

Doença ONDE aqui contém uma regra segundo a qual somente serão selecionados produtos com preço igual ou superior a 100, e aqueles produtos com preço inferior a 100 não serão afetados pela solicitação.

preço = preço / 2– a fórmula pela qual o novo preço dos bens será calculado. O novo preço será escrito igual ao preço antigo dividido por dois.

Como resultado da execução de tal consulta, obteremos uma tabela com registros alterados:

Atualizando valores em vários campos de linha

Caso seja necessário atualizar vários campos de uma vez, todos os campos com seus valores são indicados após a diretiva SET, separados por vírgulas. Por exemplo, você precisa alterar o nome e o preço de um produto com código 2 para “ferro”, custando 300:

ATUALIZAR mercadorias SET title = "iron" , price = 300 WHERE num = 2 !}

Esta consulta atribuirá seu valor a cada campo correspondente em uma linha. E a condição indicará em qual linha as alterações serão feitas.


A seguir estão os principais tipos de operações de atualização. Com base neles, são geradas consultas para resolver a maioria dos problemas de modificação de dados em desenvolvimento usando SQL.

A plataforma SQL Server oferece suporte à maioria dos componentes básicos da instrução ANSI UPDATE, mas não oferece suporte às palavras-chave ONLY e ARRAY e não oferece suporte à capacidade de atualizar matrizes. O SQL Server expandiu a funcionalidade da instrução UPDATE para incluir dicas de tabela usando a cláusula WITH, dicas de consulta usando a cláusula OPTION e manipulação de variáveis ​​mais robusta. A sintaxe é a seguinte.

UPDATE (nome_tabela | nome_visualização | conjunto de linhas)] SET (nome_coluna=(DEFAULT | NULL | expressão_escalar) |

nome do estribo=expressão_escalar| nome_da_variável=nome_da_coluna=expressão_escalar) [, ...] ]

WHERE (condições | ATUAL DO cursor_name)]

Os elementos de sintaxe da instrução UPDATE no SQL Server são os seguintes.

COM dica

Permite usar dicas de tabela, substituindo o comportamento padrão do otimizador de consulta. Como o otimizador de consulta é muito bom na seleção de planos de processamento, use dicas somente se tiver um bom entendimento das tabelas, índices e dados afetados pela operação. Se este entendimento não estiver presente, o uso de dicas pode resultar na diminuição, em vez do aumento da produtividade.

nome variável

As variáveis ​​do SQL Server devem ser declaradas antes de usar a instrução UPDATE, no formato DECLARE @variable. SET construção @variável=coluna!=expressão! define a variável para o valor final da coluna atualizada e SET @variable -column!, column!=expression define a variável para o valor na coluna antes da instrução UPDATE ser executada.

Fornece a capacidade de criar um critério altamente seletivo baseado em junção para especificar linhas a serem atualizadas. A cláusula FROM não é necessária se apenas uma tabela for usada ao especificar linhas - a tabela de destino. As funções do conjunto de linhas no SQL Server são descritas na seção Instrução SELECT.

Apelido de AS

Permite atribuir um alias fácil de usar a uma tabela, exibição, subconsulta de tabela aninhada ou função de conjunto de linhas.

Fornece a capacidade de usar a sintaxe ANSI padrão para junções de tabelas em conjunto com a cláusula FROM.

Uma ligeira variação da cláusula ANSI WHERE CURRENT OF. A cláusula WHERE CURRENT OF do nome do cursor, usada em combinação com um cursor, faz com que o SQL Server atualize apenas o registro único em que o cursor está localizado no momento. O cursor é considerado local, mas você pode especificar um cursor global usando a palavra-chave GLOBAL.

dica de OPÇÃO

Permite usar dicas de consulta substituindo o comportamento padrão do otimizador de consulta. Assim como acontece com a cláusula WITH, use dicas somente se você tiver um bom entendimento das tabelas, índices e dados afetados pela operação. Se este entendimento não estiver presente, o uso de dicas pode resultar na diminuição, em vez do aumento da produtividade.

A principal extensão que o Microsoft SQL Server introduz na instrução ANSI UPDATE é a cláusula FROM. A cláusula FROM permite usar uma cláusula JOIN, o que simplifica bastante a atualização das linhas da tabela de destino, associando as linhas especificadas na cláusula FROM às linhas atualizadas pelo componente UPDATE table_name. O exemplo a seguir atualiza o resultado de uma junção de tabela usando o estilo ANSI e uma subconsulta bastante complicada e, em seguida, atualiza usando a cláusula FROM do SQL Server. Ambas as consultas executam a mesma ação, mas de maneiras completamente diferentes.

A execução dessa atualização usando o estilo Transact-SQL envolve a união de duas tabelas, autores e autor do título, com a tabela de títulos. Para realizar a mesma operação usando código ANSI, primeiro você precisa procurar o valor au_id na tabela de autores e passá-lo para a tabela titleauthor e, em seguida, procurar o valor title_id e passá-lo para a instrução UPDATE principal.

O exemplo a seguir atualiza a coluna state das dez primeiras linhas da tabela de autores.

ATUALIZAR autores SET state="ZZ" FROM (SELECIONE TOP 10 * FROM autores ORDER BY au_lname) AS t1 WHERE autores.au_id=t1.au_.id

O importante a ser observado neste exemplo é que geralmente é muito difícil atualizar as primeiras n linhas usando uma instrução UPDATE, a menos que haja alguma sequência de linhas explícita que possa ser determinada usando uma cláusula WHERE. No entanto, uma subconsulta de tabela aninhada na cláusula FROM, usando a palavra-chave TOP para recuperar as primeiras 10 linhas, ajuda a eliminar o esforço adicional de programação que de outra forma seria necessário.

Visualizações