Views, Sequences, e Synonyms in Oracle.
Tags: programming, learning, database, braziliandevs
Published: 2023-12-08 01:21:44

Hello Guys, nesse artigo desenvolvimento por 3 estudantes, iremos falar sobre alguns objetos em Oracle, como por exemplo Views, Sequences e Synonyms. Espero que vocês gostem do conteúdo :)

----

## > <u>_**Views no Oracle**_</u>

Views em bancos de dados representam uma maneira de visualizar dados de tabelas. Elas não armazenam dados, mas oferecem uma forma específica de apresentar informações. 

A principal razão para usar views é a segurança, permitindo que os usuários vejam apenas as informações necessárias e criem visualizações personalizadas dos dados. 

As Views têm características como a abstração de complexidade, simplificando consultas, facilitando a compreensão das tabelas. Além disso, melhoram a manutenção, evitando modificações extensas nas consultas, e podem otimizar o desempenho do sistema, tornando-o mais eficiente.



**Exemplo de criação de uma View:**
```
CREATE VIEW nome_da_view AS
SELECT coluna1, coluna2, ...
FROM tabela1
WHERE condição;
```
---
---

## > <u>_**Sequences no Oracle**_</u>

**_O oque é?_**

Você pode usar a CREATE SEQUENCE instrução para criar uma sequência Sequence e um objeto de banco de dados você pode usar para gerar automaticamente valores para uma chave primaria, quando um Numero é gerado a sequece incrementada, independentemente da confirmação ou reversão da transação. 

Se Dois usuários estiverem incrementado ao mesmo tempo poderá ficar  uma lacuna, pois um usuário não pode gerar um numero já gerado por outro usuário, Depois que um valor de sequência é gerado por um usuário, esse usuário pode continuar a acessar esse valor, independentemente de a sequência ser incrementada por outro usuário.
	
Os números de sequência são gerados independentemente das tabelas, portanto, a mesma sequência pode ser usada para uma ou várias tabelas. 
É possível que números de sequência individuais pareçam ter sido ignorados, porque foram gerados e usados em uma transação que acabou sendo revertida Além disso, um único usuário pode não perceber que outros usuários estão desenhando na mesma sequência.
 	
_Assim que criar Uma esquece você pode acessar seus valores em instruções sql com a CURRVALpseudocoluna, que retorna o valor atual da sequecia  ou a NEXTVALpseudocoluna que incrementa a sequecia e retorna outro valor._


**_Pré-requisitos_**

Para criar uma sequence no seu próprio esquema você deve ter  CREATE SEQUENCEprivilégio de sistema.
Para cria uma sequence no esquema de outros usuários você deve ter CREATE ANY SEQUENCEprivilégio de sistema.

-----

**Exemplos de Sequence:**
SEQUECIA QUE COMEÇA DE 1 EM 1 

```
CREATE SQUENCE Test.CountBy1
	START WITH 1
	INCREMENT BY 1;
```


Sequência chamada "DecSeq" que começa em 200, é incrementada por 30, possui um valor mínimo de 100, um valor máximo de 500, cicla quando atinge o valor máximo, e tem um cache de 3 valores.

```
CREATE SEQUENCE Test.DecSeq
START WITH 200
INCREMENT BY 30
MINVALUE 50
MAXVALUE 500
CYCLE
CACHE 3;
```

---
---

## > <u>**_Synonyms no Oracle_**</u>

Em princípio, Synonyms (ou Sinônimos) são aplicados exclusivamente em DDL (Linguagem de Definição de Dados) e DML (Linguagem de Manipulação de Dados).

_**O que são?**_

Synonyms são nomes alternativos para objetos como tabelas, views, sequências, stored procedures e outros elementos do banco de dados. Eles proporcionam independência de dados e transparência de localização, atuando como apelidos para objetos já existentes. O propósito dos synonyms é oferecer uma forma simplificada de referenciar um objeto no banco de dados, tornando o acesso aos objetos mais fácil, sem a necessidade de especificar o proprietário do objeto ou o nome completo.



_**Por que devo usar Sinônimos ?**_

A principal vantagem de usar synonyms no banco de dados é que os usuários não precisam digitar o nome completo da tabela junto com o esquema ao utiliza-la em uma consulta. Isso simplifica significativamente o processo de acesso aos objetos no banco de dados e pode tornar o código mais legível e manutenível.





_Existem Pré-requisitos para se usar um Synonyms, antes você deve conceder o privilegio ao usuario de poder criar este Objeto no Banco de Dados, como nos exemplos abaixo._


Para conceder a um usuario o privilegio de criar Synonyms no Oracle, você pode usar a declaração "GRANT". O privilegio específico que você deve conceder é o "CREATE SYNONYM", como no exemplo abaixo:

```
GRANT CREATE SYNONYM TO nome_do_usuario;

```

Este comando concede ao usuario a capacidade de criar Synonyms no próprio esquema. Se você quiser permitir que o usuário crie Synonyms em outros esquemas, você precisará conceder o privilégio "CREATE ANY SYNONYM", como no exemplo abaixo:

```
GRANT CREATE ANY SYNONYM TO nome_do_usuario;
```

> Lembrando que o CREATE ANY SYNONYM da o privilegio ao usuario de criar Synonyms em qualquer esquema no banco de dados.




---
**Exemplos de como se utilizar um Sinonimo:**

-  Criando um "Synonyms" para uma Tabela: 



```
//Criando uma tabela de exemplo
CREATE TABLE exemplo_tabela (
  id NUMBER,
  nome VARCHAR2(50)
);

//Criando um sinonimo para a tabela
CREATE SYNONYM sinonimo_exemplo_tabela FOR exemplo_tabela;

//Inserindo dados usando o sinonimo
INSERT INTO sinonimo_exemplo_tabela VALUES (1, 'Exemplo');

//Selecionando dados usando o sinonimo
SELECT * FROM sinonimo_exemplo_tabela;
```



-  Criando um "Synonyms" para uma View:

```
//Criando uma view de exemplo
CREATE VIEW exemplo_view AS
SELECT id, nome FROM exemplo_tabela WHERE id > 0;

//Criando um sinonimo para a view
CREATE SYNONYM sinonimo_view FOR exemplo_view;

//Selecionando dados usando o sinonimo
SELECT * FROM sinonimo_view;
```



- Criando um "Synonyms" para uma Sêquencia:

```
//Criando uma sequência de exemplo
CREATE SEQUENCE exemplo_sequencia START WITH 1 INCREMENT BY 1;

//Criando um sinonimo para a sequência
CREATE SYNONYM sinonimo_sequencia FOR exemplo_sequencia;

//Usando o sinonimo para obter o próximo valor da sequência
SELECT sinonimo_sequencia.NEXTVAL FROM DUAL;
```

---
---
Created By:
_Bruno Sampaio dos Anjos
Kauan Davi Fraga Gomes
Vinicius Gouvêa Machado_