Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo order by

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 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

O que devemos conhecer sobre SQL/Oracle Parte 11: Gerenciando objetos de schema

Adicionando e modificando colunas É possível alterar colunas existentes em uma tabela, seja adicionando uma nova ou alterando uma já existente. Durante a adição de uma coluna é necessário especificar seu nome e seu tipo de dados, também é possível incluir um valor default e uma restrição. Toda coluna adicionada é incluída no final da lista de colunas de uma tabela, vejamos um exemplo: ALTER TABLE FUNCIONARIOS ADD (DATA_DEMISSAO VARCHAR2(20), ATIVO CHAR(1) DEFAULT ‘S’ NOT NULL); No exemplo acima incluímos duas novas colunas, sendo que em uma delas especificamos um valor default e uma restrição. É importante ressaltar que para o caso de restrições NOT NULL devemos especificar um valor default se essa tabela já possuir registros. Para o caso de modificações em colunas existentes é possível alterar o tipo de dados, o valor default e as restrições, quando o comando for construído e mais de uma modificação for necessária ela deve obedecer a essa ordem, porém o comando não