Universidade de Passo Fundo SQL – DML Prof. Alexandre Tagliari Lazzaretti [email protected] vitoria.upf.tche.br/~lazzaretti 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 2 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) 3 SQL Comando delete: remove uma ou mais tuplas de uma tabela Sintaxe: delete from <tabela> where <condição> Exemplos: 1) 2) 3) delete from cidades where cidades.uf=‘RS’ Delete from cidades Delete from cidades where codigo>=1 and codigo<=10 4 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=1 2) Update pessoas set salario=100, adicional=20 where categoria=1 5 EXERCÍCIO Crie um banco de dados chamado CADDAT.FDB baseado no modelo lógico abaixo: CLIENTES #codigo integer not null Nome varchar(50) not null @ cidade integer not null @ bairro integer not null BAIRROS #codigo integer not null descricao varchar(50) not null CIDADES #codigo integer not null nome varchar(50) not null Uf varchar(2) not null 6 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 7 SQL Consultas Estrutura básica de uma consulta SELECT campos FROM tabelas [WHERE condição] [GROUP BY camposdeagrupamento [HAVING condiçãodogrupo]] [ORDER BY listadecampos] 8 SQL SELECT campos FROM tabelas [WHERE condição] [GROUP BY camposdeagrupamento [HAVING condiçãodogrupo]] [ORDER BY listadecampos] Onde: SELECT – indica os campos que serão mostrados, resultado da consulta FROM – indica as tabelas que fazem parte da consulta WHERE – pode-se especificar condições e realizar junções GROUP BY – indica os campos que serão agrupados HAVING – pode-se estabelecer uma condição sobre os campos que serão agrupados ORDER BY – indica a ordem de que será mostrado o resultado da consulta 9 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 10 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 viceversa. 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... 11 SQL EXEMPLOS DE CONSULTAS JUNÇÃO: select cidades.nome, clientes.nome, uf from cidades,clientes where cidades.codigo=clientes.cidade Order by clientes.nome Select clientes.nome, cidades.nome, bairros.descricao From cidades, bairros, clientes Where clientes.cidade=cidades.codigo and bairros.codigo=clientes.bairro Order by bairros.descricao, clientes.nome 12 SQL - DML Definindo “apelidos” Select cli.nome as nomecli, cid.nome From clientes cli, cidade cid where cli.cidade=cid.codigo Order by cli.nome - cli e cid são os “apelidos” das tabelas - as nomecli define um nome para o campo 13 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? CIDADES Codigo | Nome | UF 1 | Marau | RS 2 | Sertão | RS RESULTADO NOME | CONT Marau | 2 Sertão | 1 PESSOAS Codigo | Nome 100 | Pedro 102 | Maria 103 | José | Cidade | 1 | 1 | 2 14 SQL CONSULTA: SELECT CIDADES.NOME, COUNT(*) AS CONT FROM CIDADES, PESSOAS WHERE PESSOAS.CIDADE=CIDADES.CODIGO GROUP BY CIDADES.NOME --- AGRUPAMENTO ORDER 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? 15 SQL Funções sobre grupos: count: contagem de linhas sum: soma de linhas max: máximo mim: mínimo avg: média Exemplos: 1. 2. select count(*) from cidades Select nome, sum (qtde*valor) as total from clientes, vendas, vendas_itens where clientes.codigo=vendas.cliente and vendas.codigo=vendas_itens.venda group by nome 16