Baixe SQL instruções para manipulação de dados e outras Resumos em PDF para Tecnologia de Informação, somente na Docsity!
Marcar como concluído
Artigo
10. Instruções SQL para
manipulação de dados
Conheça nesse artigo os principais comandos
SQL para manipulação dos dados armazenados
nas tabelas do banco. Esse artigo, abordará os comandos DML, disponíveis para inserção, alteração, deleção e seleção de dados.
Invista em você! Saiba como a
DevMedia pode ajudar sua carreira.
31
Anotar
Artigos
Banco de Dados
- Instruções SQL para manipulação de dados
Neste capítulo, mostraremos os principais comandos
SQL para manipulação dos dados armazenados nas
tabelas do banco. Esse capítulo, abordará os comandos
DML, disponíveis para inserção, alteração, deleção e
seleção de dados.
Adicionado, Alterando e Removendo Dados
Para inserir, alterar ou apagar dados nas tabelas do
banco, através de instruções SQL , devemos utilizar os 31
No parâmetro Nome_da_Tabela , podemos especi car
tanto o nome de uma tabela do banco de dados, como
também de uma View atualizável. Caso você não
especi que o nome das colunas que receberão valores
dentro da instrução Insert , o servidor de banco de dados
utilizará todas as colunas da tabela informada. Veja
alguns exemplos de uso da instrução Insert:
Nota : Antes de inserir um registro em uma tabela, que possui chave estrangeira, veri que se o valor que será inserido na coluna relacionada, existe na coluna chave primária da outra tabela.
INSERT INTO CLIENTES CODIGO NOME SEXO VA
INSERT INTO CIDADES CODCIDADE CODPAIS NOM
INSERT INTO ITENS VALUES 1 13 200.
Dentro da seção da instrução Values , podemos utilizar
os seguintes valores em conjunto, ou não, com as
seguintes funções:
Valores gerais como números, strings ou data;
Função Cast : Para converter um valor de um tipo
para outro durante a operação de inserção;
Função Upper : Para converter uma string que está
sendo inserida para maiúscula;
Função Gen_Id : Normalmente utilizada com
Generators para geração de um valor único;
Valor Null : Para inserção de nulo para a coluna
durante a operação de inserção do registro;
User : Comando utilizado para inserir o nome do
usuário conectado no banco de dados;
Variável: Podemos inserir variáveis ou parâmetros
através de Stored Procedures ou Triggers ;
Inserindo várias linhas
IUtilizando a instrução Update
Para alterar os valores armazenados em registros
existentes na tabela, devemos utilizar o comando
Update :
INSERT INTO ITENS CODIGO NF QUANT
SELECT CODIGO NUM_NF QUANT
FROM ITENS_VALIDOS
WHERE NUM_NF = 15
INSERT INTO CLIENTES CODIGO NOME FONE EN
SELECT COD_CLI NOME FONE_CLI END_CLI
FROM CLIENTES_INATIVOS
UPDATE NOME_DA_TABELA
SET COLUNA1 = VALOR1 COLUNA2 = VALOR2 COLU
WHERE CONDICOES
Como no comando Insert , podemos utilizar diversos
tipos de valores e funções dentro da instrução Update.
Normalmente utilizamos a instrução Update em
conjunto com a cláusula Where , para que apenas uma,
ou um conjunto de registros sejam atualizados.
Atenção : Caso a instrução Update seja utilizada sem uma cláusula
Where , a atualização ocorrerá em todos os registros armazenados dentro da tabela.
Você pode utilizar a instrução Where em conjunto com
os operadores e palavras chaves para limitar o número
de registros a serem atualizados constantes na Tabela
Expressão Descrição
= Valor
Igual a um determinado
valor
< Valor
Menor que um
determinado valor
= Valor Maior ou igual a um^31
Veja a seguir, alguns exemplos de uso da instrução
Update :
UPDATE CLIENTES
SET CIDADE = 'Curitiba' UF = 'PR' WHERE COD_REF = 20
UPDATE ITENS SET VALOR = 0. WHERE VALOR IS NULL
UPDATE VENDAS SET ATIVO = 'N' WHERE DATA_VENDA BETWEEN '01.01.1992' AND '
UPDATE PRODUTOS SET TIPO = 'H' ATIVO = 'S' COD_FORNECEDOR WHERE COD_REF IN 1 5 10 11
UPDATE PRECOS SET VALOR_TOTAL = VALOR_TOTAL * 1. WHERE QUANTIDADE * VALOR_UNITARIO > 1000
Atualizando várias linhas através de outra tabela
Utilizando a instrução Update , podemos também
alterar registros de uma tabela a partir de valores
armazenados em outra tabela do banco de dados. Veja
o exemplo seguir:
Na instrução SQL anterior , aumentamos em 100 reais
o valor de todos os produtos onde o código do
fornecedor for igual aos códigos dos fornecedores
UPDATE PRODUTO
SET VALOR = VALOR + 100
WHERE COD_FORNECEDOR IN
SELECT COD_FORNECEDOR
FROM FORNECEDOR
WHERE UF = 'SP'
Como mostrado no comando Update , a cláusula Where
pode ser utilizada com diversos operadores e palavras
chaves para limitar o número de registros que serão
apagados da tabela. Veja a seguir, alguns exemplos de
uso da instrução Delete :
DELETE FROM CLIENTES
WHERE SEXO = 'M'
DELETE FROM PRODUTOS
WHERE TIPO = 1
DELETE FROM TEMPORARIA
DELETE FROM VENDAS
WHERE DATA_VENDA BETWEEN '01.01.2000' AND '
DELETE FROM PRODUTOS
WHERE COD_FORNECEDOR IN
SELECT COD_FORNECEDOR
FROM FORNECEDOR
WHERE COD_CIDADE = 5
Caso você precise apagar registros de uma tabela
relacionada com outra, ou outras tabelas do banco de
dados, você precisará primeiro apagar todos os
registros da tabela lha, que possui o valor de
referencia da chave estrangeira, para só depois excluir
o registro da tabela pai, a qual possui o valor da chave
primária.
O servidor de banco de dados não permite que
registros quem órfãos dentro da tabela, através da
exclusão de registros primários dos quais eles
dependem e estão relacionados através de uma Foreign
Key.
Nota : Você pode utilizar a cláusula Delete Cascade durante a de nição da Foreign Key para permitir que, ao excluir um registro pai, todos os registros vinculados a ele sejam apagados automaticamente.
Buscando Dados
Dentro de uma instrução Select , podemos buscar
informações de colunas presentes e um ou mais tabelas
relacionadas dentro do banco. No parâmetro
Lista_de_Colunas , logo após a palavra reservada
Select , podemos listar todas as colunas que queremos
buscar da tabela.
Caso seja colocado o caractere asterisco (*), o servidor
de banco de dados trará todas as colunas disponíveis
dentro da tabela especi cada na cláusula From. No
parâmetro Lista_de_Tabelas devemos especi car o
nome das tabelas que faremos a busca das
informações. Veja alguns exemplos básicos de uso da
instrução Select :
SELECT CODIGO NOME
FROM CLIENTES
SELECT * FROM CIDADES
Quanto você utiliza uma instrução Select para extrair
informações contidas em duas ou mais tabelas,
normalmente essas tabelas possuem pelo menos uma
coluna fazendo o relacionamento entre elas.
Nota : Você pode fazer o relacionamento entre duas tabelas durante uma
instrução Select , independente de essas tabelas possuírem uma constraint de Foreign Key, ou não.
Listando as Colunas
Para listar as colunas que deseja trazer no resultado da
instrução Select , informe-as logo após a palavra chave
SELECT CODIGO NOME ENDERECO FONE BAIRRO
FROM FORNECEDORES
SELECT PROD_ID PROD_DESCRICAO FOR_NOME
FROM PRODUTOS FORNECEDORES
WHERE PRODUTOS FOR_ID = FORNECEDORES FOR_ID
Quando você lista as colunas dentro da instrução
Select , elas não precisam seguir a ordem em que
estão armazenadas dentro da tabela, isso é, em um
banco relacional a ordem das colunas não é
importante, a não ser que você esteja utilizando essa
instrução Select para fazer inserção de dados através
de um Insert , por exemplo. O IB/FB possui a palavra
reservada Distinct para que possamos aplicar nas
colunas da instrução Select para remover valores
duplicados.
Quando fazemos um Select sem a palavra Distinct , o
servidor de banco de dados retorna os valores na
ordem em que eles estão armazenados dentro da tabela
SELECT * FROM EMPRESAS
SELECT * FROM EMPRESAS
WHERE UF = 'SP'
em questão. Quando utilizamos à instrução Distinct o
servidor agrupa os valores retornados pelo Select.
Para que possamos agrupar os valores duplicados
dentro da instrução Select , para que o comando
Distinct possa removê-los, devemos utilizar a cláusula
Order By no nal da instrução Select. Através da
cláusula Order By podem ordenar o resultado do
Select seguindo os valores de uma ou mais colunas
disponíveis dentro do mesmo. Veja alguns exemplos a
seguir:
SELECT DISTINCT NOME
FROM CLIENTES
ORDER BY NOME
SELECT CODIGO NOME CIDADE
FROM FORNECEDORES
ORDER BY CIDADE NOME