Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo where

Verificar privilégios de um usuário (Oracle)

Em muitas ocasiões, por diferentes motivos nos deparamos com a necessidade de conhecer os privilégios que um determinado usuário possui. Como vimos aqui existem alguns tipos diferentes de privilégios e para consultar esses privilégios temos a disposição o famoso dicionário de dados, conforme visto aqui , sendo nos objetos desse dicionário que precisaremos consultar para obter informações sobre os privilégios. O objetivo desse post não é entrar em detalhes sobre os privilégios ou mesmo sobre as tabelas que formam o dicionário de dados, isso já foi feito nas postagens mencionadas, a intenção é mostrar uma consulta que nos permita obter os principais privilégios, segue o código: select 'Privilégios de sistema : ' || PRIVILEGE from dba_sys_privs where GRANTEE = upper('PROGRAMERO') union select 'Privilégios em Role: ' || GRANTED_ROLE from dba_role_privs where GRANTEE = upper('PROGRAMERO') union select 'Privilégios em objetos : ' || owne

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 10: Criando outros objetos de schema

Criando e usando VIEWS simples e complexas Uma VIEW (visão) nada mais é que um comando SELECT nomeado, e armazenado na base de dados, sendo acessado da mesma maneira que uma tabela comum. Possui como objetivo ocultar a complexidade da consulta que o forma, seja apenas para méritos de facilidade de uso ou segurança. A criação de uma VIEW é muito simples, basta utilizar o comando de criação seguido da consulta, vale ressaltar que expressões devem ser nomeadas caso contrário um erro ocorrerá, sua sintaxe é a seguinte: CREATE VIEW VW_FUNCIONARIOS AS SELECT F.COD, F.NOME FROM FUNCIONARIOS F; Também é possível criar VIEWs capazes de atualizar a tabela na qual ela é baseada, para tal devemos ter em mente: As restrições da tabela devem ser respeitadas; Se a consulta utilizar a cláusula GROUP BY ou qualquer outro tipo de agregação ela não será gerada; Se a cláusula DISTINCT for utilizada também não será possível à criação; Se na cláusula FROM houver referencia a outras

O que devemos conhecer sobre SQL/Oracle Parte 9: Recuperando dados utilizando subconsultas

Definindo subconsultas Como visto anteriormente uma consulta é um comando SELECT, logo uma subconsulta é um comando SELECT dentro de outro comando, que pode ser outro SELECT, INSERT, UPDATE, DELETE, CREATE TABLE ou CREATE VIEW: Subconsulta é um SELECT dentro de outro comando SQL; O outro comando SQL é chamado de pai. O nível externo é chamado de top-level; O comando SQL top-level contendo a subconsulta pode ser um SELECT, INSERT, UPDATE, DELETE, CREATE TABLE ou CREATE VIEW; Subconsultas podem estar aninhadas em outras subconsultas; Algumas subconsultas podem funcionar de forma autônoma. Outras funcionam de modo correlacionado, sempre que possuem referencia a suas consulta pai; Descrevendo os tipos de problemas que subconsultas podem resolver As subconsultas podem ser utilizadas para resolver uma série de problemas, sendo eles: Consultas complexas: subconsultas podem encontrar respostas para perguntas e então usar essas respostas para responder novas pergunt

O que devemos conhecer sobre SQL/Oracle Parte 8: Apresentando dados de varias tabelas

Escrevendo comandos SELECT que acessam dados de mais de uma tabela  As junções são utilizadas para mesclar registros de uma ou mais tabelas em um único resultado. Temos duas grandes categorias para a criação das junções: Inner joins: conectam registros em duas ou mais tabelas se, e somente se, existirem registros iguais em todas as tabelas relacionadas (a cláusula INNER é opcional): SELECT F.NOME, D.DEPARTAMENTO FROM FUNCIONARIOS F INNER JOIN DEPARTAMENTOS D ON F.DEP = D.DEP; Acima duas tabelas unidas pela condição de igualdade DEP, onde serão apresentados os funcionários que pertencem a um departamento. Outer joins: conectam registros em duas ou mais tabelas de maneira inclusiva, se existirem  dados em uma tabela que não tenha valores correspondentes em outra, esses registros não correspondentes serão incluídos no resultado (a cláusula OUTER é opcional):  SELECT F.NOME, D.DEPARTAMENTO FROM FUNCIONARIOS F LEFT OUTER JOIN DEPARTAMENTOS D ON F.DEP = D

O que devemos conhecer sobre SQL/Oracle Parte 7: Apresentando dados agregados utilizando funções de grupo

Identificando as funções de grupo disponíveis Funções de grupo, ou agregadas, retornam um valor para zero ou mais registros encontrados. São utilizados em comandos SELECT, buscam um grupo de registros retornando um valor para esse grupo. Trabalham com diferentes tipos de dados, mas são as funções agregadas numéricas as mais utilizadas. É importante ter em mente que as funções agregadas devem ser tratadas de maneira separada das funções escalares (de uma única linha), pois enquanto uma trata conjuntos de registros à outra trabalha sobre cada registro retornado. • Funções de grupo são conhecidas como agregadas ou multilinha; • Funções de grupo retornam um valor para cada conjunto de registros (de zero ou mais registros); • Funções de grupo determinam valores máximos, mínimos, media entre outros; • Funções de grupo podem determinar o rank em um grupo de registros; Descrevendo o uso das funções de grupo Funções de grupo podem ser usadas nas clausulas SE

O que devemos conhecer sobre SQL/Oracle Parte 6: Usando funções de linha única (single-row) para customizar a saída de dados

Descrevendo os vários tipos de funções disponíveis em SQL As funções de linha única podem ou não receber dados adicionais, parâmetros, realizar um determinado processamento e em seguida devolver um valor. Elas possuem esse nome por serem processadas a cada registro recuperado de uma consulta, e do mesmo modo retornar um resultado para cada registro. Existem basicamente dois grupos dessas funções, as “built-in” que são parte integrante do Oracle e as “user-defined”, desenvolvidas pelos usuários. Quanto a funções de linha única podemos dizer: Funções SQL aceitam um ou mais parâmetros de entrada. Alguns não recebem nenhum; Cada função retorna um único valor, nem mais nem menos; Funções SQL executam tarefas de vários tipos; Funções podem ser incluídas em qualquer lugar de uma expressão SQL, desde que as regras dos tipos de dados sejam respeitadas; Funções podem ser incluídas na clausula WHERE do SELECT, UPDATE e DELETE; Funções podem ser incluídas nas listas de colunas do S

O que devemos conhecer sobre SQL/Oracle Parte 5: Restringindo e ordenando dados

Limitando registros recuperados por uma consulta Na grande maioria dos casos apenas listar as colunas desejadas de certa tabela não é o suficiente, é necessário restringir o resultado de acordo com regras para que esse resultado possa ter algum significado, isso é alcançado pela cláusula WHERE. O WHERE não é obrigatório, mas quando usado no comando SELECT deve vir depois da cláusula FROM. Ele sempre testa todos os registros recuperados pela consulta, retornando aqueles que o satisfizerem. Para realizar as comparações da cláusula WHERE temos o operador de igualdade “=”, maior que “>”, maior ou igual “>=”, menor que “<”, menor ou igual “<=”, diferente “<>“, “!=” ou “^=”, se pertence “IN” e se contém uma parte especifica “LIKE”. Comparações com números são logicas, onde números menores são menores que números maiores. Os caracteres respeitam a ordem do alfabeto, onde “A” é menor que “Z”, e “Z” é menor que “a” (letras maiúsculas são sempre menores), além disso,