![]() |
INF 325- Modelagem e Projeto de Banco de Dados RelacionaisProf. Célio Guimarães IC - Unicamp |
![]() |
endereco row( rua varchar(32), numero int, cidade varchar(32), estado char(2)) Utilização: select endereco.rua from Funcionarios where numf = 1200
dias_da_semana varchar(10) array[7]
... where nome similar to '(SQL-(86|89|92|99))|(SQL(1|2|3))'
Exemplo:
with media_ano_nasc(media_n) as (select avg(ano_n) from jogadores where natp is not null) -- a consulta nomeada termina aqui select nome, ano_n from jogadores where ano_n >= (select media_n - 5 from media_ano_nasc) and ano_n <= (select media_n + 5 from from media_ano_nasc)
Exemplo:
select numj, numt, count(*) as vitorias from torneios group by rollup (numj, numt)Saida do resumo para o jogador 817:
| numj | numt | vitórias | observação |
|---|---|---|---|
| 817 | 1 | 2 | feito por group by |
| 817 | 2 | 1 | feito por group by |
| 817 | NULL | 3 | feito por rollup |
Última linha:
| NULL | NULL | 44 |
Operador Cube
. . . group by cube (numj, numt) -- permite obter sumários na orem inversa
Considere a tabela Voos:
Voos(tr_id, cia_aerea, origem, destino, hor_saida, hor_chegada)
trechos de voos entre cidades origem e destino
exemplo: voos.eps (arestas rotuladas com o tr_id)
Consulta:
"exibir todos os possíveis trechos de vôos da companhia aérea 'UA', com origem em SF e destino final NY".
clausula with recursive: define uma consulta nomeada recursiva
1. with recursive trechos(tr_id, cia, origem, destino) as 2. (select tr_id, cia_aerea, origem, destino 3. from voos 4. union 5. select voos.tr_id, voos.cia_aerea, trechos.origem, voos.destino 6. from trechos, voos 7. where trechos.destino = voos.origem 8. and trechos.cia_aerea = voos.cia_aerea) 9. select tr_id, destino 10. from trechos 11. where cia = 'UA' and origem = 'SF'
Tipos de dados estruturados (UDT)
ou via funções intrínsecas get e set
Exemplo:
create type emp_type
under person_type -- supertipo
as (emp_id integer,
salary real)
ref (emp_id)
instance method give_raise(
abs_or_pct boolean,
amount real )
returns real
Utilização:
create table employees of emp_type -- cria uma instancia a ser populada create table departments (deptno int, deptname varchar(32), manager ref(employees)
Manager atua como apontador para instancia:
ex. de comando SQL válido:
select departments.manager→last_name from departments where deptno = 12