A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Banco de Dados I Desenho de Bancos de dados Relacionales

Apresentações semelhantes


Apresentação em tema: "Banco de Dados I Desenho de Bancos de dados Relacionales"— Transcrição da apresentação:

1 Banco de Dados I Desenho de Bancos de dados Relacionales
Linguagem de Manipulação de dados (DML). - Sintaxe das sentenças Insert, Delete e Update. - Sintaxe da sentença Select, aprofundando nas cláusulas Distinct, From, Where, Having, Group by e Order by. MsC. Leoder Alemañy Socarrás

2 conteúdo Comandos para modificar os dados de uma tabela (INSERT, UPDATE, DELETE). Criação de consultas SQL, potencialidades. Utilizar os diferentes comandos e consultas SQL para manipular os dados existentes num banco.

3 Bibliografía Guía Lan TIMES de SQL (Incluye SQL2), James R. Groff, Paul N. Weinberg. Mc Graw Hill, 1998.

4 SELECT do SQL consultar informação de uma BD.
Introdução Conhecemos as sentenças que conformam DDL. Podemos conformar a estrutura de uma BD. Aprender como modificar a informação das tabelas não a estrutura que estas têm. SELECT do SQL consultar informação de uma BD.

5 Comandos de Modificação de tuplas
Comando de Eliminação (DELETE) Comando de Inserção (INSERT) Comando de Actualização (UPDATE)

6 Eliminação de tuplas (DELETE)
DELETE FROM R WHERE P DELETE elimina tuplas completas de uma única relação. WHERE seleccionar tuplas a eliminar se não se especifica se eliminam todas as tuplas da tabela.

7 CLIENTE (telef, nome, codprov, codmun)
SERVICIOS (codserv, descrição, importe) CLIENTESERV (telef, codserv)

8 Exemplos DELETE Delete From SERVICIOS Where importe < 100;
Delete From CLIENTESERV Where codserv Between 10 AND 13; Delete From SERVICIOS;

9 Inserção de tuplas(1) Acrescenta uma tupla completa a uma relação.
INSERT INTO R VALUES(constante[,constante…]). INSERT INTO R (atr[,atr…]) VALUES(constante[,constante…]).

10 Inserção de tuplas(2) Inserir várias tuplas num mesmo INSERT(entre parêntese e separadas por vígulas ou Como resultado uma consulta: INSERT INTO R [(atr[,atr…])] SELECT … FROM ... WHERE …

11 Exemplos Inserção INSERT INTO CLIENTE (telef, nombre, codprov, codmun) Values (‘8834’,’Bárbara’, 1, 1); INSERT INTO CLIENTESERV (telef, codserv) SELECT telef, 41 AS codserv FROM CLIENTE WHERE codprov =3 ;

12 Actualização de tuplas(1)
Modificam-se valores de atributos numa ou mais tuplas de uma relação Modificam-se tuplas de uma sozinha tabela ao mesmo tempo

13 Actualização de tuplas(2)
UPDATE R SET Atr=Exp[,Atr=exp..] Where P SET: atributos á modificar (Atr) y novos valores (Exp) WHERE para seleccionar tuplas que actualizar Se não há WHERE, se aplica a modificação a todas as tuplas

14 Actualização de tuplas(3)
Update SERVICIOS Set importe = importe+10 Where importe <=100 UPDATE CLIENTESERV SET codserv = (SELECT codserv from SERVICIOS WHERE descrição = ‘chamada em espera’) WHERE telef IN (SELECT telef FROM CLIENTE WHERE nome= ‘Máximo Pérez’)

15 SELECT Introdução Mais importante comando.
Compreender sua estrutura e uso permite interpretar corretamente o código SQL gerado por muitos SGBD. Inclui toda a funcionalidade do Álgebra Relacional. Descritivo como o Cálculo Relacional

16 Álgebra Relacional Projeção: Selecção de atributos de uma relação
Produto Cartesiano: Combinação entre tuplas de duas tabelas. Selecção: Condições para filtrar as tuplas que se desejam obter.

17 Etructura básica do SELECT
SELECT…Listar os atributos deseados (Projeção do Álgebra) FROM…Listar as tabelas (Producto cartesiano do Álgebra) WHERE…Pregado de selecção. Contém atributos das tabelas do FROM.

18 Sintaxis Ampliada y precedencia
SELECT [DISTINCT] atributos FROM tabelas [WHERE condição] [GROUP BY atributo] [HAVING condição] [ORDER BY atributo]

19 Os elementos podem conter constantes, expressões e atributos.
Sintaxis Ampliada.(2) Os elementos podem conter constantes, expressões e atributos. GROUP BY pode-se pôr atributos ademais funções agregadas de colunas, colunas de agrupamento ou expressões.

20 Sintaxis Ampliada.(3) HAVING sempre se incluem funções de coluna, caso contrário se trata igual que o WHERE mas se aplica uma vez que se tenham formado os grupos, enquanto o WHERE se aplica dantes.

21 Exemplos SELECT básicos
SELECT Nombre FROM PAIS WHERE Cod_Reg = 1;

22 Exemplos SELECT básicos
WHERE permite expressões com os operadores lógicos AND, OR, NOT Exemplo SELECT Nombre FROM PAIS WHERE Cod_Reg > 1 AND Cod_Reg < 5

23 Se o nome das tabelas é extenso (qualificar em toda a consulta).
Alias Se o nome das tabelas é extenso (qualificar em toda a consulta). Também para as colunas de saída. SELECT P.Nombre AS Pais FROM PAIS P WHERE P.Cod_Reg = 1

24 BETWEEN…expressões faixa de valores. SELECT Descrip FROM SERVICIOS
Operador BETWEEN BETWEEN…expressões faixa de valores. SELECT Descrip FROM SERVICIOS WHERE importe BETWEEN 100 AND 200

25 LIKE…Em padrões ou modelos para comparações de correntes. Comodines
Operador LIKE LIKE…Em padrões ou modelos para comparações de correntes. Comodines %…Cualquier subcadena (*) _…Cualquier carácter (?) Cláusula ESCAPE para utilizar os curingas como literais

26 Exemplo LIKE SELECT Nombre FROM PAIS WHERE Nombre LIKE C% WHERE Nombre LIKE ‘C%$_%’ ESCAPE ‘$’ -> Corrente que começa com “C” e em algum lugar esta o carácter “_” como literal

27 Tuplas Duplicadas(1) As linguagens de consulta formais baseiam- se na noção matemática de relação como um conjunto, o que implica que não existem tuplas duplicadas. em SQL permitem-se duplicados nos resultados das consultas.

28 DISTINCT Evite tuplas duplicadas.
Há que ter cuidado com as tuplas duplicadas em alguns casos são molestas em outros casos são indispensáveis.

29 Exemplo de Distinct SELECT Telef FROM CLIENTESERV Obtêm-se os mesmos telefones repetidos tantas vezes como eles estejam envolvidos num serviço diferente. Evita-se com DISTINCT ALL

30 Operações UNION Mesmo significado e as mesmas restrições que tem para o álgebra relacional . Toma o resultado de duas consultas e une-os num único resultado Existiu INTERSECT e MINUS. Agora não, ainda que podem se conseguir

31 Restrições operação UNION
Igual número de columas nas Consultas. Não ordenado o resultado. Tipos de dados correspondentes entre as colunas das consultas. elimina as filas duplicadas como parte de seu processamento.

32 Exemplo UNION(1) Encontrar os códigos de serviços com Importe >20 ou que tem telefone

33 Exemplo UNION(2) SELECT Cod_Serv FROM SERVICIOS WHERE Importe > 20 UNION (SELECT Cod_Serv FROM CLIENTESERV WHERE Telef = ’ ’)

34 Consultas con mais de uma tabela.
Muitas consultas úteis solicitam dados procedentes de dois ou mais tabelas do banco de dados. Correspondem ao que no álgebra relacional se chamou produto cartesiano e ao acople como um subconjunto do primeiro(JOIN)

35 Como fazer JOIN SELECT Telef FROM CLIENTE, CLIENTESERV WHERE CLIENTE.Telef=CLIENTESERV.Telef Usa-se o mesmo sistema para join N tabelas

36 Conclusiones Modificar o conteúdo de uma BD.
Somos capazes nestes momentos de: Modificar o conteúdo de uma BD. Consultar a informação alojada.

37 Tarefa Cartões(idCartão, data, imagen, saldo)
SMS(idCartão, numero, sms) Chamada(idCartão, cor) Obtenha todos os cartões onde sua data de vencimento seja 20/06/2009. Obtenha todos os cartões que são de tipo SMS. Obtenha todos os cartões de tipo Chamada, que têm um saldo inicial igual a 30 kwanzas. Obtenha todas os artões de tipo sms cujo número seja diferente a

38 Consultas anidadas (subconsulta)
Em SQL é possível aninhar um SELECT dentro de outro (sem restrições de profundidade) Se podem especificar em UPDATE, INSERT, e um conjunto de operações que analisaremos a seguir.

39 CLIENTE (telef, nome, codprov, codmun)
SERVICIOS (codserv, descrição, importe) CLIENTESERV (telef, codserv)

40 Características das Subconsultas
uma única coluna como resultado. Não usar cláusula ORDER BY Não pode ter UNION. SELECT * FROM CLIENTESERV WHERE telef= (SELECT telef WHERE nome =‘Rafael Caetano’ )

41 Operações de Comparações :
Todas as comparações são entre o valor de um atributo com o valor produzido por uma subconsulta. (<,>,<=,>=,=).

42 Comparações(2) SELECT CLIENTESERV.telef, SERVICIOSSUP.importe FROM CLIENTESERV, SERVICIOSSUP WHERE (CLIENTESERV.codserv = SERVICIOSSUP.codserv) AND SERVICIOSSUP.importe > (SELECT importe FROM SERVICIOSSUP WHERE codserv = 2)

43 Operação IN Realiza a comparação e devolve V se o valor coincide com um dos valores da coluna. Permite ademais operações de conjuntos.

44 Exemplo Demostrativo SELECT telef FROM CLIENTE WHERE telef IN (SELECT telef FROM CLIENTESERV)

45 Operação ANY y ALL Utilizam-se conjuntamente com um dos operadores de comparação. ANY: teste verdadeiro se uma das comparações é. ALL: teste verdadeiro se todas as comparações o são.

46 Exemplo ANY ALL SELECT Nombre FROM SERVICIOS WHERE importe > ALL (SELECT importe FROM SERVICIOS WHERE nome LIKE C%)

47 Uso do cuantificador Existencial EXISTS
Comprovar se uma subconsulta tem alguma tupla em seu resultado. EXISTS devolve TRUE se a subconsulta não está vazia. Pode combinar-se com NOT como NOT EXISTS.

48 Exemplo EXISTS(1) Encontrar os nomes dos clientes que recebem o serviço de código 1. SELECT nome FROM CLIENTE WHERE EXISTS (SELECT * FROM CLIENTESERV WHERE (CLIENTE.telef = CLIENTESERV.telef) AND (codserv = 1)) ;

49 Ordenamento da apresentação do resultado.
Cláusula ORDER BY listado de atributos ao final da consulta. ASC (implícito), DESC O ordenamento pode ser sobre múltiplos atributos, e pode usar-se o número de ordem nas colunas de saída. SELECT * FROM CLIENTE WHERE telef = ORDER BY nome;

50 Funções de agregação. Operam sobre os valores de uma coluna.
AVE: Média de colunas com dados numéricos. COUNT: Conta as colunas seleccionadas ou filas(*) MIN: Determina menor valor coluna. MAX: Determina maior valor colunas . SUM: Total da soma valorizes colunas .

51 Funções de agregação(2)
só se aceitam como expressões em: SELECT (numa subconsulta ou na consulta externa) Cláusulas HAVING (veremos a seguir)

52 Exemplos: SELECT COUNT(*) FROM CLIENTE ... Devolve quantidade de clientes SELECT SUM (importe) FROM SERVICIOS ... Soma dos custos de todos os serviços.

53 Agrupamiento(1) GROUP BY
As funções de agregação operam sobre grupos de tuplas combinando com a cláusula GROUP BY. Nesta cláusula especifica-se um ou vários atributos e o efeito é como se se formassem grupos na tabela (tuplas com igual valor dos atributos)

54 GROUP BY (2) Ter presente:
Todo o que esteja no SELECT tem que estar no GROUP BY, mas o GROUP BY pode ter atributos que não estejam no SELECT. Não se incluem no GROUP BY as funções agregadas da consulta.

55 Exemplo de GROUP BY SELECT PROVINCIA.nome, COUNT(CLIENTE.telef)
FROM CLIENTE, PROVINCIA WHERE CLIENTE.codprov = PROVINCIA.codprov GROUP BY PROVINCIA.nome Desta forma é possível calcular a quantidade de telefones por províncias.

56 Consideraciones con Duplicados(1)
Quando se vai calcular uma soma, ou uma média, é importante considerar os duplicados. Em muitas ocasiões eliminar um valor duplicado pode significar que o resultado que se obtenha seja falso.

57 Consideraciones con Duplicados(2)
Telef CodServ Importe 1 10 2 20 4 Repetido (Telef, Importe) ( , 10) si se borra SUM(Importe) = 30 y esto es falso

58 Cláusula HAVING Com GROUP BY, restringe cuales grupos de tuplas são retornados no conjunto de resultados. Estabelece as condições da mesma forma que WHERE HAVING pode conter funções agregadas.

59 Exemplo HAVING(1) SELECT PROVINCIA.nome, COUNT(CLIENTE.telef) FROM CLIENTE, PROVINCIA WHERE CLIENTE.codprov = PROVINCIA.codprov GROUP BY PROVINCIA.nome HAVING COUNT(CLIENTE.telef)> 1000 Só mostrará as quantidades de telefones daquelas províncias que tenham mais de 1000 telefones.

60 JOINS de SQL O SQL regular tem incluído a possibilidade de definir o tipo de combinação entre as tabelas relacionadas e isto se especifica na cláusula FROM do SELECT. Substitui a condição de combinação da cláusula WHERE.

61 Conbinación interna(INNER JOIN)
No resultado incluem-se só as filas que “casam” nas tabelas combinadas. Corresponde ao JOIN do Álgebra relacional.

62 Exemplo INNER JOIN SELECT CIUDAD.nome FROM Ciudad
INNER JOIN Pais ON CIUDAD.codpais = PAIS.codpais WHERE (PAIS.nome = ‘Angola’) Obter-se os nomes de todas as cidades de Angola

63 Conbinación externa (OUTER JOIN)
3 variantes: LEFT, RIGHT y FULL LEFT: Inclui todas as filas da tabela da esquerda da palavra LEFT e as que casam da direita.

64 Exemplo LEFT (1) SELECT PROVINCIA.nome AS Provincia, MUNICIPIO.nome AS Municipio, CLIENTE.telef FROM MUNICIPIO INNER JOIN PROVINCIA ON MUNICIPIO.codprov = PROVINCIA.codprov LEFT OUTER JOIN CLIENTE ON MUNICIPIO.codprov = CLIENTE.codprov AND MUNICIPIO.codmun = CLIENTE.codmun

65 Exemplo LEFT (2) E no resultado estariam todos os municípios das províncias e os telefones que possuem. No caso dos que não têm telefones, na coluna “telef” aparece um NULL..

66 RIGHT y FULL OUTER JOIN RIGHT: Inclui todas as filas da tabela da direita, mais as que casam. Recheada com NULL nas filas que não casam. FULL: Inclui todas as filas das 2 tabelas, casem ou não. Recheada com NULL os campos que não casam.

67 Conclusiones Criar os objetos da BD mais importantes as tabelas.
Entender o funcionamento de um banco de dados relacional.

68 Tarefa canal_tv (id_canal, tipo_programaçáo, data_i, nome_canal, municipio, provincia, alcance) programa (id_programa, horario, frecuencia, nome_prog, id_canal) musical (id_programa, conductor, tema, invitado) elenco (id_actor, nombre, país, edad, sexo) novela_elenco (id_programa, id_actor, personaje) Formule uma consulta que mostre o nome dos canais da província ‘Luanda’ (ordenados alfabeticamente) e a quantidade de programas musicais transmitidos pela cada um deles que incluam em seu nome a palavra ‘Dançar’.


Carregar ppt "Banco de Dados I Desenho de Bancos de dados Relacionales"

Apresentações semelhantes


Anúncios Google