Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo sgbd

O que devemos conhecer sobre SQL/Oracle Parte 16: Recuperação hierárquica

Interpretando o conceito de consulta hierárquica Consultas hierárquicas vão além do conceito relacional pai/filho, onde temos uma tabela que é referenciada por outra, onde para cada registro de uma podemos ter vários em outra.  A estrutura de dados hierárquicos é diferente, ao invés dos dados estarem em tabelas diferentes eles ficam na mesma tabela (ou view), onde uma coluna do registro faz referencia a outra coluna de um outro registro, dessa forma teoricamente existe a capacidade de se ter infinitas gerações. Para embasar nossos próximos exemplos construiremos uma tabela nesses moldes, onde teremos informações para relatórios de funcionários: CREATE TABLE RELATORIO_CARGOS(CODIGO NUMBER(10) PRIMARY KEY, CARGO VARCHAR2(50), RESPONDE_PARA NUMBER(10)); ALTER TABLE RELATORIO_CARGOS ADD CONSTRAINT RELATORIO_CARGOS_FK FOREIGN KEY(RESPONDE_PARA) REFERENCES RELATORIO_CARGOS(CODIGO); Resumindo: Uma consulta hierárquica estende o relacionamento pai-filho em uma

O que devemos conhecer sobre SQL/Oracle Parte 15: Manipulando grandes massas de dados

Manipulando dados utilizando subconsultas Já foi visto nos capítulos anteriores como as subconsultas são poderosas, agora veremos novas utilidades para elas, como criar tabelas com registros, ou inserir registros com base em consultas ou mesmo atualizar registros de uma tabela com subconsultas. Em alguns casos, desejamos criar tabelas de forma rápida e depois inserir todos ou alguns dos dados de outra tabela, seja apenas para um teste ou um backup temporário em fim a razão não importa, o que importa é que podemos fazer isso de forma bem simples. Suponhamos que nós queremos separar em uma estrutura a parte todos os funcionários de um determinado cargo para tal poderíamos fazer o seguinte: CREATE TABLE FUNCS_CARGO AS SELECT * FROM FUNCIONARIOS WHERE COD_CARGO = 1; Bom nossa estrutura temporária foi criada, mas uma nova demanda pede que ela também tenha os funcionários do cargo três, obviamente poderíamos simplesmente remover a tabela e gera-la com uma nova consulta,

O que devemos conhecer sobre SQL/Oracle Parte 14: Manipulando objetos com as visões do dicionário de dados

Utilizando o dicionário de dados para pesquisar dados sobre os objetos do banco O dicionário de dados é uma coleção de tabelas (onde as informações estão guardadas) e visões (disponibilizadas para acesso dessas informações) do banco que são automaticamente gerados a cada comando DDL executado. A informação armazenada nessa coleção inclui a descrição completa dos objetos criados como tabelas, visões, índices, restrições, enfim tudo o que foi criado. Essa coleção pertence ao usuário de sistema SYS, que é o dono de todos os privilégios. As visões podem ser distinguidas pelo prefixo de seu nome, vejamos uma tabela: Prefixos de algumas visões do dicionário de dados Prefixo Quantidade de visões aproximada Descrição USER_ 359 Objetos que pertencem ao usuário acessando a visão. ALL_ 334 Objetos que pertencem a qualquer usuário cujo usuário acessando a view possui acesso, DBA_ 670 Todos os obje

O que devemos conhecer sobre SQL/Oracle Parte 13: Gerando resultados com o agrupamento de dados relacionados

Utilizando a operação ROLLUP para produzir valores subtotais O ROLLUP é uma subcláusula do GROUP BY, ele realiza agrupamento de dados agrupados, esses registros são conhecidos como superagregados. É normalmente utilizado com SUM, mas nada impede que ele seja utilizado com outras funções de agrupamento. Seu resultado é um registro de sumarização simples para cada agrupamento: select d.descricao departamento, c.descricao cargo, sum(salario) total from funcionarios  f join cargos        c on c.codigo      = f.cod_cargo join departamentos d on d.codigo      = c.cod_dep group by rollup (d.descricao, c.descricao) order by d.descricao, c.descricao No comando acima, além de termos as somas dos salários por cargo, também teremos um total por departamento. Resumindo: ROLLUP apenas é permitido com a cláusula GROUP BY; ROLLUP calcula subtotais e totais para os grupos de registros; ROLLUP vem após o GROUP BY; Após o ROLLUP vêm os itens do GROUP BY que

O que devemos conhecer sobre SQL/Oracle Parte 12: Utilizando os operadores SET

Descrevendo os operadores SET Os operadores SET são utilizados para combinar dois ou mais comandos SELECT, onde o resultado depende do operador: UNION combina o resultado de dois comandos SELECT, eliminando registros duplicados; INTERSECT combina o resultado de dois comandos SELECT, mostrando apenas as ocorrências únicas e comuns a ambas as consultas, ignorando tudo o que não aparece nos dois; MINUS pega o resultado do primeiro comando SELECT e subtrai as ocorrências idênticas do segundo; UNION ALL faz o mesmo que o UNION, porém não elimina os registros duplicados; SELECT COD, NOME FROM FUNCIONARIOS COD NOME 1 MARIA 2 ANA UNION 1 MARIA 2 ANA 3 JOÃO UNION ALL 1 MARIA 2 ANA 2 ANA 3 JOÃO SELECT COD, NOME FROM GERENTES C