Universidade de Passo Fundo
description
Transcript of Universidade de Passo Fundo
Universidade de Passo Fundo
SQL – DML
Prof. Alexandre Tagliari [email protected]
vitoria.upf.tche.br/~lazzaretti
2
SQL
Linguagens– DDL (Data Definition Language)– DML (Data Manipulation Language)
- Possui 2 categorias:
- DML atualizações
- insert- update- delete
- DML consultas- junção- agregação
3
SQL Comando insert:
insere uma ou mais tuplas em tabelas no banco de dados
Sintaxe:insert into <tabela> [<coluna(s)>] values <valores>
Exemplos:
1) insert into cidades values (1, ‘Casca’, ‘RS’)
2) insert into cidades (cod_cid, nome_cid) values (1, ‘Casca’)
3) insert into cidades (nome_cid, cod_cid) values (‘Casca’, 1)
4
SQL Comando delete:
remove uma ou mais tuplas de uma tabela
Sintaxe:delete from <tabela> where <condição>
Exemplos:1) delete from cidades where cidades.uf=‘RS’2) Delete from cidades3) Delete from cidades where codigo>=1 and codigo<=10
5
SQL Comando update:
atualiza os dados de uma ou mais tuplas de uma tabela
Sintaxe:UPDATE <tabela> SET <coluna(s)=‘valor’> WHERE <condição>
Exemplos:1) Update cidades set cidades.uf=‘PR’ where cidades.codigo=12) Update pessoas set salario=100, adicional=20 where categoria=1
6
EXERCÍCIO Crie um banco de dados chamado CADDAT.FDB
baseado no modelo lógico abaixo:
CLIENTES#codigo integer not nullNome varchar(50) not null@ cidade integer not null@ bairro integer not null
BAIRROS#codigo integer not nulldescricao varchar(50) not null
CIDADES#codigo integer not nullnome varchar(50) not nullUf varchar(2) not null
7
Exercício - continuação Insira 5 tuplas em cada tabela através do
comando insert. Sendo que os códigos de chaves primárias começam no 1 e terminam no 5
Atualize o nome da pessoa de código = 2 para ´Maria Aparecida’
Delete as tuplas de código 4 e 5 da tabela bairros
8
SQL Consultas
Estrutura básica de uma consulta
SELECT camposFROM tabelas[WHERE condição][GROUP BY camposdeagrupamento
[HAVING condiçãodogrupo]][ORDER BY listadecampos]
9
SQLSELECT camposFROM tabelas[WHERE condição][GROUP BY camposdeagrupamento
[HAVING condiçãodogrupo]][ORDER BY listadecampos]
Onde:SELECT – indica os campos que serão mostrados, resultado da consultaFROM – indica as tabelas que fazem parte da consultaWHERE – pode-se especificar condições e realizar junçõesGROUP BY – indica os campos que serão agrupadosHAVING – pode-se estabelecer uma condição sobre os campos que serão
agrupadosORDER BY – indica a ordem de que será mostrado o resultado da consulta
10
SQL Exemplos:
1) SELECT * FROM CIDADES
2) SELECT CODIGO, NOME FROM CIDADES
3) SELECT CODIGO, NOME FROM CIDADES ORDER BY NOME
4) SELECT NOME FROM CIDADES WHERE UF=‘RS’ ORDER BY NOME
11
SQL Consultas junção
A junção existe quando necessita-se buscar dados em mais de uma tabela, por exemplo, deseja-se mostrar o nome do cliente (tabela CLIENTES ) e o nome da cidade onde ele mora (tabela CIDADES)
A junção é sempre entre os campos que são chave primária em uma tabela em relação aos campos que são chave estrangeira em outra tabela, ou vice-versa.
Caso as tabelas possuam o mesmo nome de campo, deve-se colocar o nome da tabela antes do nome do campo que será mostrado na cláusula SELECT
Exemplo: SELECT cidades.nome, clientes.nome, uf...
12
SQLEXEMPLOS DE CONSULTAS JUNÇÃO:
select cidades.nome, clientes.nome, uf from cidades,clientes where cidades.codigo=clientes.cidadeOrder by clientes.nome
Select clientes.nome, cidades.nome, bairros.descricaoFrom cidades, bairros, clientesWhere clientes.cidade=cidades.codigo and
bairros.codigo=clientes.bairroOrder by bairros.descricao, clientes.nome
13
SQL - DML
Definindo “apelidos”
Select cli.nome as nomecli, cid.nomeFrom clientes cli, cidade cidwhere cli.cidade=cid.codigoOrder by cli.nome
- cli e cid são os “apelidos” das tabelas- as nomecli define um nome para o campo
14
SQL Consultas agregação
São criadas quando deseja-se agregar valores por determinados campos
Exemplo: baseado no modelo abaixo deseja-se mostrar o nome da cidade e calcular a quantidade de pessoas que moram nesta cidade, qual seria o resultado da consulta?
CIDADESCodigo | Nome | UF 1 | Marau | RS 2 | Sertão | RS
PESSOASCodigo | Nome | Cidade 100 | Pedro | 1 102 | Maria | 1 103 | José | 2
RESULTADONOME | CONTMarau | 2Sertão | 1
15
SQLCONSULTA:
SELECT CIDADES.NOME, COUNT(*) AS CONTFROM CIDADES, PESSOASWHERE PESSOAS.CIDADE=CIDADES.CODIGOGROUP BY CIDADES.NOME --- AGRUPAMENTOORDER BY CIDADES.NOME
Considerações:• Deverão aparecer na cláusula GROUP BY os campos que
não possuem função• Se colocar o código da pessoa na cláusula select, qual
seria o resultado da consulta?
16
SQLFunções sobre grupos:
count: contagem de linhas sum: soma de linhas max: máximo mim: mínimo avg: média
Exemplos:1. select count(*) from cidades2. Select nome, sum (qtde*valor) as total
from clientes, vendas, vendas_itenswhere clientes.codigo=vendas.cliente and
vendas.codigo=vendas_itens.venda group by nome