You are on page 1of 8

Comandos bsicos em SQL - insert, update, delete e select

Este artigo visa auxiliar iniciantes que pretendem iniciar no universo de Banco
de Dados utilizando os principais comandos: INSERT, UPDATE, DELETE e SELECT.
por Helbert Carvalho Tiago
989 150 47 146
Nesse artigo veremos como incluir, excluir e atualizar registros em um banco de
dados. No final do artigo descreverei uma introduo sobre sub-consultas.
INSERINDO DADOS
O comando para incluso de dados o INSERT, que possui a seguinte estrutura:
Listagem 1: Sintaxe do comando insert
1
2
3
4
INSERT INTO nome_tabela (lista-de-campos)
VALUES (lista_dados)
--OU
INSERT INTO nome_tabela VALUES (lista_dados)
Onde:
Nome_tabela: nome da tabela no qual ser inserido os dados.
Lista-de-campos: nome das colunas que recebero os valores.
Lista-dados: valores que sero inseridos na tabela. Estes campos devem estar n
a mesma ordem descrita em lista-de-campos, todos separados por vrgula. Se for uti
lizado um comando SELECT o mesmo deve retornar a mesma quantidade de colunas com
os mesmos tipos de dados especificados em lista-de-campos.
Exemplos:
Listagem 2: Exemplos do comando insert
1
2
3
INSERT INTO EMPREGADOS(CODIGO, NOME, SALARIO, SECAO)
VALUES(1, "HELBERT CARVALHO", 1.500, 1)
INSERT INTO EMPREGADOS VALUES(1,"HELBERT CARVALHO",1500,1)
Na segunda opo foi omitida a declarao dos campos. Essa sintaxe funciona somente se f
or repassado valores para todas as colunas.
Podemos tambm passar valores atravs de um comando SELECT, conforme abaixo:
Listagem 3: Insert com valores provenientes de um select
1
2
3
4
INSERT INTO EMPREGADOS(CODIGO,NOME, SALARIO, SECAO)
SELECT CODIGO,NOME,SALARIO, SECAO
FROM EMPREGADOS_FILIAL
WHERE DEPARTAMENTO = 2

Neste comando todos os empregados da tabela EMPREGADOS_FILIAL foram cadastrados


na tabela EMPREGADOS. Se o nome dos campos no for citado no comando INSERT, o SEL
ECT dever retornar valores compatveis para todos os campos disponveis na tabela de
destino.
ATUALIZANDO DADOS
O comando para atualizar registros UPDATE, que tem a seguinte sintaxe:
Listagem 4: Sintaxe do comando update
1
2
3
UPDATE nome_tabela
SET CAMPO = "novo_valor"
WHERE CONDIO
Onde:
Nome_tabela: nome da tabela que ser modificada
Campo: campo que ter seu valor alterado
Novo_valor: valor que substituir o antigo dado cadastrado em campo
Where: Se no for informado, a tabela intera ser atualizada
Condio: regra que impe condio para execuo do comando
Exemplos:
Listagem 5: Exemplos de uso do comando update
1
2
3
UPDATE DEPARTAMENTO
SET SALARIO = 1000
WHERE CODIGODEP = 1
No trecho acima, todos os colaboradores que fazem parte do departamento 1 ter o s
alrio alterado para 1000.
Listagem 6: Update em mais de um campo
1
2
3
UPDATE DEPARTAMENTO
SET NOME = "HELBERT CARVALHO",SALARIO = 1000
WHERE CODIGO = 1
Neste exemplo alteramos mais de um campo de uma vez.
Podemos combinar o comando SELECT com UPDATE. No exemplo a seguir, os funcionrios
de menor salrio recebero aumento de 10%.
Listagem 7: Outro exemplo de uso do comando update
1
2
3
UPDATE EMPREGADOS
SET SALARIO = salario * 1.1

WHERE SALARIO = (SELECT MIN(salario) FROM EMPREGADOS)


O comando SELECT tambm pode ser utilizado na atribuio de valor ao campo:
Listagem 8: Update passando select como valor
1
2
3
UPDATE EMPREGADOS
SET SALARIO = (SELECT MAX(salario) FROM EMPREGADOS)
WHERE DEPARTAMENTO = 5
REMOVENDO DADOS
O comando utilizado para apagar dados o DELETE.
Listagem 9: Sintaxe do comando delete
1
2
DELETE FROM nome_tabela
WHERE condio
Onde:
Nome_tabela: nome da tabela que ser modificada
Where: clusula que impe uma condio sobre a execuo do comando
Exemplo:
Listagem 9: Exemplo de uso do comando delete
1
2
DELETE FROM EMPREGADOS
WHERE CODIGO = 125
Sub-consultas SQL
Uma sub-consulta uma instruo SELECT aninhada dentro de outra instruo SELECT, INSERT,
DELETE ou UPDATE. Veja abaixo alguns exemplos de sintaxe:
Comparao [ANY|SOME|ALL] (instruo sql)
Expresso [NOT] IN (instruo sql)
Expresso [NOT] EXISTS (instruo sql)
Os predicados ANY e SOME, sinnimos, so utilizados para recuperar registro na consu
lta principal que satisfaam a comparao com qualquer registro da sub-consulta.
Tabela
X
1
2
3
4

A
Y
5
9
10
6

Tabela B
X Y 10 4 20 3 30 11 40 9
Exemplo:

Listagem 11: Exemplo de subconsulta


1
2
SELECT * FROM A
WHERE Y > ANY (SELECT Y FROM B WHERE X>20)
Resultado:
X
Y
3
10
Os registros da tabela A que forem maior do que qualquer registro do resultado d
a sub-consulta sero selecionados. Repare que nenhum registro da tabela A maior do
que 11, no entanto, o terceiro registro maior do que 9.
Vamos a outro exemplo:
Listagem 12: Exemplo de subconsulta com o operador ANY
1
SELECT * FROM A WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)
Resultado:
X
Y
1
5
2
9
3
10
4
6
Todos os registros foram selecionados porque o valor de y no resultado da sub-co
nsulta assume 3, que menor do que todos os valores de y da tabela A. Se utilizar
mos o ANY com sinal de igualdade teremos o mesmo resultado da clusula IN. Exemplo
:
Listagem 13: Exemplo com o operador ANY e sinal de igualdade
1
SELECT * FROM A WHERE Y = ANY (SELECT Y FROM B)
Resultado:
X
Y
2
9
O predicado ANY tambm pode ser utilizado em conjunto com os comandos UPDATE e DEL
ETE. Veja o exemplo:
Listagaem 14: Update usando o operador ANY
1
2
3
UPDATE A
SET X = X * 10
WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)
Listagem 15: Delete usando o operador ANY
1
2
DELETE FROM A

WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)


O predicado ALL utilizado para recuperar os registros da consulta principal que
satisfaam a comparao com todos os registros recuperados na sub-consulta. Observe os
exemplos:
Listagem 16: Exemplo de select com operador ANY
1
SELECT * FROM A WHERE Y > ALL (SELECT Y FROM B)
Resultado:
X
Y
Listagem 17: Outro exemplo de select com operador ANY
1
SELECT * FROM A WHERE Y > ALL (SELECT Y FROM B WHERE X > 30)
Resultado:
X
Y
3
10
O uso de != ALL equivale a NOT IN.
Listagem 18: Subconsulta com operador ALL
1
SELECT * FROM A WHERE Y != ALL (SELECT Y FROM B)
Resultado:
X
Y
1
5
3
10
4
6
O predicado IN utilizado para recuperar apenas os registros na consulta principa
l que contm equivalncia na sub-consulta. o mesmo que =ANY.
Listagem 19: Consulta com operador IN
1
SELECT * FROM A WHERE Y IN(SELECT Y FROM B)
Resultado:
X
Y
2
9
No cdigo a seguir retornamos os empregados que venderam um montante maior que R$
50.000,00.
Listagem 20: Select com operador IN utilizando HAVING
1
2
3
4
SELECT * FROM EMPREGADO WHERE CODIGO IN
(SELECT CODEMPREGADO FROM VENDAS
GROUPY BY CODEMPREGADO

HAVING MAX(VALORTOTAL) > 50000)


De maneira contrria, NOT IN pode ser utilizado para recuperar apenas os registros
na consulta principal para os quais no exista equivalncia na sub-consulta.
Listagem 21: Select com operador NOT IN
1
SELECT * FROM A WHERE Y NOT IN(SELECT Y FROM B)
Resultado:
X
Y
1
5
3
10
4
6
O predicado EXISTS determina se a sub-consulta retorna algum registro. Esta clusu
la produz resultados semelhantes ao uso de IN. Veja exemplo:
Listagem 22: Consulta com operador EXISTS
1
2
3
4
5
SELECT * FROM EMPREGADO WHERE EXISTS
(SELECT * FROM PEDIDOS
WHERE EMPREGADO.CODIGO = PEDIDOS.CODEMPREGADO
GROUP BY PEDIDOS.CODEMPREGADO
HAVING MAX(PEDIDOS.VALOR_TOTAL) > 50000)
Neste comando so retornados o nome e o departamento dos funcionrios cuja soma de v
endas ultrapassaram R$ 50.000,00.
O predicado NOT EXISTS tambm pode ser utilizado produzindo o efeito contrrio:
Listagem 23: Consulta com operador NOT EXISTS
1
2
3
SELECT * FROM EMPREGADO WHERE NOT EXISTS
(SELECT * FROM PEDIDOS
WHERE EMPREGADO.CODIGO = PEDIDOS.EMPREGADO)
Concluso
Os comandos SQL fornecem uma linguagem simples para manipulao de dados em um SGBD.
Como o SQL se tornou um padro, os comandos apresentados funcionaro na maioria dos
bancos de dados relacionais. Consulte o help do seu banco de dados para possveis
alteraes ou particularidades.
Read more: http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-i
nsert-update-delete-e-select.aspx#ixzz3nnzLBioi

Em linguagem SQL as instrues DDL (Data Definition Language) so usadas para definir
a estrutura dos dados, isto , tudo que diz respeito criao de tabelas e demais obje

tos de banco de dados, alterao e excluso destas estruturas.


Trabalhar com as estruturas das tabelas basicamente envolve trs operaes: Criar, alt
erar ou excluir a tabela. No processo de alterao ocorre ainda outra diviso, ou seja
, a alterao envolve incluir campos, alterar ou remover um ou mais campos da tabela
.
Criar tabela com create table
Para criar tabelas em um banco de dados, usamos o comando create table.
Exemplo:
CREATE TABLE empregados (
codigo_empregado int identity primary key,
nome varchar(60),
data_nascimento datetime,
salario decimal(10,2),
cidade varchar(60),
estado varchar(30)
)
Vamos ver o que significa cada termo acima:
CREATE TABLE - comando usado para criar uma tabela no banco de dados
empregados - nome da tabela
codigo_empregado,nome,data_nascimento,salario,cidade e estado - nome dos cam
pos ou colunas da tabela empregados
int, varchar, decimal e datetime - define o tipo de dados que cada campo ir r
eceber
identity - (apenas SQL Server) indica que o campo ter o seu valor preenchido
automaticamente com um nmero sequencial e no reaproveitvel.
primary key - indica que o campo ser uma chave do tipo primria
varchar(xx) - como visto o varchar indica o tipo de dado que o campo vai rec
eber e o xx a quantidade mxima de caracteres.
decimal(10,2) - decimal o tipo, 10 indica que o campo poder receber at 10 posies
, sendo 8 inteiro e 2 para as casas decimais.
Existem diversos tipos de campos que podemos usar no SQL Server, veja a lista do
s principais:
Int - Este campo armazenar um valor numrico inteiro
Decimal - Aceita valores numricos com casas decimais, neste caso deve ser inf
ormado a quantidade de casas decimais desejadas. Exemplo: decimal(10,2), indica
que iremos armazenar oito posies numricas e duas casas decimais.
Varchar - Aceita valores do tipo texto. necessrio especificar o tamanho desej
ado.
Text - Aceita valores do tipo texto
Datetime - Aceita valores do tipo data e hora. O formato de gravao ser mm/dd/aa
aa hh:mm:ss
Bit - Valor inteiro 0 ou 1
Alterar tabela com alter table
Uma vez criada, uma tabela poder sofrer alteraes em sua estrutura, para realizar es
sas alteraes usamos o comando ALTER TABLE.
As alteraes na estrutura da tabela podem ser para:
Adicionar um campo

Alterar um campo
Remover um campo
Adicionar um campo
Vamos adicionar o campo sexo na tabela empregados criada no post anterior.
ALTER TABLE empregados ADD sexo varchar(10)
Observe que usamos a condio ADD que indica que estamos adicionando.
possvel ainda adicionar mais de um campo de uma mesma vez, para isto basta usar u
ma vrgula para separar a os itens da lista de campos a serem inseridas. Veja o prx
imo exemplo onde iremos adicionar os campos CPF e RG na tabela empregados.
ALTER TABLE empregados ADD cpf varchar(20),rg varchar(15)
Alterar um campo
Para alterar o campo sexo j existente, usamos a condio MODIFY COLUMN. Exemplo:
ALTER TABLE empregados ALTER COLUMN sexo varchar(30)
Podemos alterar o tipo e o tamanho, mas no o nome do campo. Veja ainda outro exem
plo onde estaremos alterando o tipo de dados do campo cpf.
ALTER TABLE empregados ALTER COLUMN cpf int
Remover um campo
Para excluir um campo usamos a condio DROP COLUMN. Exemplo:
ALTER TABLE empregados DROP COLUMN sexo
ou ainda
ALTER TABLE empregados DROP COLUMN cpf,rg
Apagar tabela com drop table
Para excluir uma tabela do nosso banco de dados, usamos o comando DROP TABLE com
o no exemplo a seguir.
DROP TABLE empregados
Ao excluir uma tabela todos os dados sero excludos, naturalmente.

You might also like