160 likes | 265 Views
Universidade de Passo Fundo. SQL – DML Prof. Alexandre Tagliari Lazzaretti lazzaretti@upf.br vitoria.upf.tche.br/~lazzaretti. SQL. Linguagens – DDL (Data Definition Language) – DML (Data Manipulation Language) - Possui 2 categorias: - DML atualizações - insert - update - delete
E N D
Universidade de Passo Fundo SQL – DMLProf. Alexandre Tagliari Lazzarettilazzaretti@upf.brvitoria.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
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)
SQL • Comando delete: remove uma ou mais tuplas de uma tabela Sintaxe: delete from <tabela> where <condição> Exemplos: • delete from cidades where cidades.uf=‘RS’ • Delete from cidades • Delete from cidades where codigo>=1 and codigo<=10
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
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
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
SQL • Consultas • Estrutura básica de uma consulta SELECT campos FROM tabelas [WHERE condição] [GROUP BY camposdeagrupamento [HAVING condiçãodogrupo]] [ORDER BY listadecampos]
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
SQL • Exemplos: • SELECT * FROM CIDADES • SELECT CODIGO, NOME FROM CIDADES • SELECT CODIGO, NOME FROM CIDADES ORDER BY NOME • SELECT NOME FROM CIDADES WHERE UF=‘RS’ ORDER BY NOME
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...
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
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
RESULTADO NOME | CONT Marau | 2 Sertão | 1 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 PESSOAS Codigo | Nome | Cidade 100 | Pedro | 1 102 | Maria | 1 103 | José | 2
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?
SQL Funções sobre grupos: • count: contagem de linhas • sum: soma de linhas • max: máximo • mim: mínimo • avg: média • Exemplos: • 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