<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Henrique Mizevski</title>
    <description>The latest articles on DEV Community by Henrique Mizevski (@mizevski).</description>
    <link>https://dev.to/mizevski</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1228402%2Fcfa412e6-d664-4f8f-a395-7d1499ddf7af.png</url>
      <title>DEV Community: Henrique Mizevski</title>
      <link>https://dev.to/mizevski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mizevski"/>
    <language>en</language>
    <item>
      <title>Views, Sequences e Synonyms: Um tutorial prático</title>
      <dc:creator>Henrique Mizevski</dc:creator>
      <pubDate>Thu, 07 Dec 2023 21:51:24 +0000</pubDate>
      <link>https://dev.to/mizevski/views-sequences-e-synonyms-um-tutorial-pratico-379d</link>
      <guid>https://dev.to/mizevski/views-sequences-e-synonyms-um-tutorial-pratico-379d</guid>
      <description>&lt;p&gt;Dentro do Oracle Database, existem diversas funcionalidades projetadas para facilitar a vida do administrador de banco de dados. Entre elas, destacam-se três recursos essenciais: Views, Sequences e Synonyms. Neste tutorial, exploraremos cada um desses elementos com o objetivo de proporcionar uma compreensão sólida de suas funcionalidades e de algumas aplicações comuns no dia a dia.&lt;/p&gt;

&lt;h1&gt;
  
  
  O que são Views?
&lt;/h1&gt;

&lt;p&gt;Uma &lt;strong&gt;view&lt;/strong&gt; é essencialmente uma &lt;strong&gt;tabela virtual&lt;/strong&gt; tratada como uma &lt;strong&gt;consulta SQL armazenada&lt;/strong&gt;. Ao contrário de armazenar dados diretamente, ela apresenta uma representação de uma ou mais tabelas com base em uma consulta específica. No contexto do Oracle, as views podem assumir formas simples, relacionadas a uma única tabela, ou complexas, envolvendo junções de múltiplas tabelas, funções agregadas, subconsultas, entre outros elementos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando Views
&lt;/h2&gt;

&lt;p&gt;A sintaxe básica para a criação de uma view é a seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;nome_da_view&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;consulta_a_ser_feita&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;CREATE VIEW: especifica que estamos criando uma visão/visualização.&lt;/li&gt;
&lt;li&gt;nome_da_view: o nome da visão  a ser criada. Isso será usado em consultas futuras para se referir a essa visualização.&lt;/li&gt;
&lt;li&gt;AS SELECT: especifica que a view se traduz na consulta SELECT a seguir.&lt;/li&gt;
&lt;li&gt;consulta_a_ser_feita: Consulta SELECT a ser armazenada e usada na visão. &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Exemplo:
&lt;/h4&gt;

&lt;p&gt;Cria uma view com os clientes ativos da tabela cliente, selecionando o id, nome e endereço deles.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;v_cliente_ativo&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;cliente_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;endereco&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'ativo'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de criar a view, você pode usá-la em consultas como se fosse uma tabela real:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;nome_da_view&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Alterando Views
&lt;/h2&gt;

&lt;p&gt;Caso você queira alterar uma view já existente, basta "criar" a view como antes, mas adicionando o &lt;em&gt;OR REPLACE&lt;/em&gt;, indicando que caso uma view com o nome indicado exista, ela será atualizada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="n"&gt;nome_da_view&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; 
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;alteracao_da_consulta&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Exemplo:
&lt;/h4&gt;

&lt;p&gt;Seguindo o exemplo dos clientes ativos, a view foi alterada para incluir apenas clientes ativos que estejam em São Paulo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;v_cliente_ativo&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;cliente_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;endereco&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'ativo'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;cidade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'São Paulo'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deletando Views
&lt;/h2&gt;

&lt;p&gt;Por fim, para apagar uma view, usa-se o comando DROP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;nome_da_view&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mais alguns exemplos de aplicações de VIEW
&lt;/h2&gt;

&lt;h2&gt;
  
  
  View Agregando Dados
&lt;/h2&gt;

&lt;p&gt;É possível criar uma view agregadora de dados, ou seja, pode-se calcular a média ou a soma de uma coluna dentro dela:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;v_media_salario&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;departamento&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;media_salario&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;funcionarios&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;departamento&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  View com junções
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;VIEW&lt;/span&gt; &lt;span class="n"&gt;v_pedidos_detalhes&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;numero_pedido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;nome_cliente&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;nome_produto&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;pedidos&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;clientes&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cliente_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cliente_id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;produtos&lt;/span&gt; &lt;span class="n"&gt;pr&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;produto_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;produto_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A view resultante, v_pedidos_detalhes, terá as colunas mencionadas acima, combinando informações das tabelas pedidos, clientes e produtos que possuem ids equivalentes.&lt;/p&gt;

&lt;h1&gt;
  
  
  O que são Sequences?
&lt;/h1&gt;

&lt;p&gt;Uma sequência é &lt;strong&gt;um objeto de banco de dados usado para gerar números exclusivos&lt;/strong&gt;. Esses valores, &lt;strong&gt;comumente&lt;/strong&gt; empregados como &lt;strong&gt;chaves primárias&lt;/strong&gt; em tabelas, asseguram a singularidade dos registros. Ao criar um objeto utilizando uma Sequence, é possível aplicar regras específicas às suas sequências, permitindo sua ordenação ascendente ou descendente por um número predefinido de ciclos. Diferentemente das colunas de índice, as Sequences não estão vinculadas diretamente à tabela principal; em vez disso, referenciam os dados representados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando uma Sequence
&lt;/h2&gt;

&lt;p&gt;A sintaxe geral de uma sequence pode ter muitos parâmetros, mas muitos deles são opcionais:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;.]&lt;/span&gt;&lt;span class="n"&gt;nome_sequence&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;MINVALUE&lt;/span&gt; &lt;span class="n"&gt;minval&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;NOMINVALUE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;MAXVALUE&lt;/span&gt; &lt;span class="n"&gt;maxval&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;NOMAXVALUE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;START&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;valor_inicial&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;INCREMENT&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;valor_incremental&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;CYCLE&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;NOCYCLE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;CACHE&lt;/span&gt; &lt;span class="n"&gt;valor_cache&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;NOCACHE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;NOORDER&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;schema: O nome do schema (coleção de objetos dentro do banco de dados) onde a sequência será armazenada. Se omitido, a sequência será criada em seu próprio schema.&lt;/li&gt;
&lt;li&gt;nome_sequence: O nome da sequência a ser criada; é o único parâmetro obrigatório.&lt;/li&gt;
&lt;li&gt;MINVALUE minval: O valor mínimo gerado pela sequência (pode ter até 28 dígitos e deve ser menor ou igual ao valor_inicial e menor que o MAXVALUE). &lt;/li&gt;
&lt;li&gt;NOMINVAL: Indica que não há valor mínimo especificado para a sequência, mas usa -1026 como mínimo para sequências descendentes e 1 para sequências ascendentes (valor padrão caso nada seja especificado).&lt;/li&gt;
&lt;li&gt;MAXVALUE maxval: Valor máximo gerado pela sequência. Deve ser um número inteiro de até 28 dígitos. &lt;/li&gt;
&lt;li&gt;NOMAXVALUE: Assim como o NOMINVAL, indica que não há valor máximo especificado para a sequência, mas usa 1027 como máximo para sequências ascendentes e -1 para sequências descendentes (valor padrão caso nada seja especificado).&lt;/li&gt;
&lt;li&gt;START WITH startval: Primeiro número a ser gerado a partir da sequência. Para sequências ascendentes, o padrão é o valor mínimo e, para sequências descendentes, o padrão é o valor máximo. Pode ter até 28 dígitos.&lt;/li&gt;
&lt;li&gt;INCREMENT BY incrementval: Intervalo entre os números de sequência. Deve ser um número inteiro, pode ser positivo ou negativo (não pode ser zero). Pode ter até 28 dígitos. Se for omitido, a sequência será incrementada em 1.&lt;/li&gt;
&lt;li&gt;CYCLE (ciclo): Indica que a sequência continua gerando valores após atingir MAXVALUE ou MINVALUE. Se a sequência for ascendente e atingir o MAXVALUE, ela gera o MINVALUE. Se a sequência for decrescente e atingir o MINVALUE, ela gera o MAXVALUE.&lt;/li&gt;
&lt;li&gt;NOCYCLE: Indica que a sequência não pode gerar mais valores após o máximo ser atingido (valor padrão).&lt;/li&gt;
&lt;li&gt;CACHE cacheval: É quantos valores da sequência que o banco de dados aloca e mantém na memória para poder acessá-lo mais rapidamente, o que também melhora o desempenho.&lt;/li&gt;
&lt;li&gt;NOCACHE: Indica que nenhum valor de sequência é alocado e armazenado em cache. &lt;/li&gt;
&lt;li&gt;ORDER: Indica que os números de sequência são gerados na ordem em que são solicitados.&lt;/li&gt;
&lt;li&gt;NOORDER: Indica que não há garantia de que os números de sequência estejam na ordem em que foram solicitados (padrão).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Exemplo:
&lt;/h4&gt;

&lt;p&gt;A seguir, cria-se uma sequence que começa em 1, incrementa em 1 e tem valor máximo de 1000, sem ciclos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="n"&gt;seq_cliente_id&lt;/span&gt;
  &lt;span class="k"&gt;START&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;INCREMENT&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;MAXVALUE&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
  &lt;span class="n"&gt;NOCYCLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Exemplo 2:
&lt;/h4&gt;

&lt;p&gt;Sequência que decrementa em 1 e começa no 500, com ciclos e com 10 valores armazenados em cache para melhorar performance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="n"&gt;sequendec&lt;/span&gt;
&lt;span class="k"&gt;MINVALUE&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="k"&gt;MAXVALUE&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;
&lt;span class="k"&gt;START&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;
&lt;span class="k"&gt;INCREMENT&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;CYCLE&lt;/span&gt;
&lt;span class="k"&gt;CACHE&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Alterando Sequences
&lt;/h2&gt;

&lt;p&gt;Usando o exemplo anterior, mudaremos o &lt;em&gt;sequendec&lt;/em&gt; para decrementar em 10 ao invés de 1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="n"&gt;sequendec&lt;/span&gt;
&lt;span class="k"&gt;INCREMENT&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deletando Sequences
&lt;/h2&gt;

&lt;p&gt;Para apagar uma sequence, é preciso que ela esteja em seu schema ou você tenha permissão para apagar objetos de outros schemas. O comando para deletar é o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="n"&gt;SEQUENCE&lt;/span&gt; &lt;span class="n"&gt;seq_nome&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  O que são Synonyms?
&lt;/h1&gt;

&lt;p&gt;Os Synonyms (sinônimos) são &lt;strong&gt;objetos do banco de dados que representam nomes alternativos&lt;/strong&gt; para outros objetos, como uma tabela, uma view, uma sequência ou uma stored procedure.&lt;br&gt;
Principalmente, podem ser usados para impedir a visualização real dos dados, sem alterar os dados originais, independente de quem estiver acessando ou de qual banco os dados estão armazenados.&lt;/p&gt;
&lt;h2&gt;
  
  
  Criando um Synonym
&lt;/h2&gt;

&lt;p&gt;A sintaxe básica de um synonym é a seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;PUBLIC&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt; &lt;span class="p"&gt;.]&lt;/span&gt; &lt;span class="n"&gt;synonym&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt; &lt;span class="p"&gt;.]&lt;/span&gt; &lt;span class="k"&gt;object&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;dblink&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[PUBLIC] / (PRIVATE): especifica se o synonym público, com acesso disponível a todos usuários ou privado, com acesso disponível a pessoas específicas.&lt;/li&gt;
&lt;li&gt;[schema .]: Selecione o esquema do banco de dados (ou nome de usuário) que possui o objeto no qual você deseja criar. Se omitido, alguns bancos de dados como oracle, criam seu próprio esquema. Com limite máximo de 32 bytes.&lt;/li&gt;
&lt;li&gt;FOR:  Regra a ser aplicada especificando sobre qual entidade o synonym está sendo criado. Variando entre:&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Diferença entre sinônimos públicos e privados
&lt;/h3&gt;

&lt;p&gt;Para ficar um pouco mais visualizável, aqui está uma tabela demarcando as diferenças gerais de um sinônimo público e um privado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdznpj1pdns81rwpilnar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdznpj1pdns81rwpilnar.png" alt="Diferença entre os sinônimos públicos e privados"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Exemplo 1
&lt;/h4&gt;

&lt;p&gt;A seguir, um sinônimo público para o objeto cliente no esquema de vendas. Todos os usuários do banco de dados podem consultar o sinônimo client e acessar a tabela venda.clientes (se tiverem acesso à tabela venda.clientes subjacente).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;PUBLIC&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;vendas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clientes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Exemplo 2
&lt;/h4&gt;

&lt;p&gt;Neste exemplo, syn_clientes é o alias para a tabela clientes no esquema schema_clientes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;syn_clientes&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;schema_clientes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clientes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Exemplo 3
&lt;/h4&gt;

&lt;p&gt;Usar sinônimos para referenciar objetos em outros bancos de dados vinculados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;LINK&lt;/span&gt; &lt;span class="n"&gt;link_outro_bd&lt;/span&gt; &lt;span class="k"&gt;CONNECT&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;usuario&lt;/span&gt; &lt;span class="n"&gt;IDENTIFIED&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;senha&lt;/span&gt; &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="s1"&gt;'nome_bd'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;sin_tabela_outro_bd&lt;/span&gt; &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;tabela&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;link_outro_bd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Excluindo um synonym
&lt;/h2&gt;

&lt;p&gt;Para excluir o sinônimo, basta usar o comando DROP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;nome_do_sinonimo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso o synonym seja público, isso deve ser especificado durante o comando, diferente dos privados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;PUBLIC&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;nome_do_sinonimo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também é possível alterar o sinônimo criado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="n"&gt;SYNONYM&lt;/span&gt; &lt;span class="n"&gt;sin_cliente&lt;/span&gt;
&lt;span class="k"&gt;RENAME&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;sin_cliente_atualizado&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Considerações finais
&lt;/h1&gt;

&lt;p&gt;Em resumo, as Views, Sequences e Synonyms são ferramentas valiosas para o gerenciamento de um banco de dados, ajudando e melhorando diversas funcionalidades dele. No entanto, é imperativo destacar que os recursos devem ser devidamente implementados, em casos onde o seu uso faz sentido: As views, por exemplo, têm o poder de simplificar a complexidade das consultas, mas também podem sobrecarregar o processamento. Já as Sequences, fundamentais para a garantia de unicidade e ordem de valores, podem acabar tendo problemas, como lacunas, se não administradas corretamente. O mesmo vale para os Synonyms que, oferecendo uma boa flexibilidade, podem transformar essa liberdade em ambiguidade e dificultar a manutenção. Dessa forma, é preciso conhecer e entender os recursos à disposição e avaliar cuidadosamente as demandas do projeto a ser realizado. Continue a explorar e aplicar essas ferramentas para aprimorar suas habilidades. Boa sorte em suas jornadas futuras!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklxs0ulgsw8yvu94xg74.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklxs0ulgsw8yvu94xg74.png" alt="Resumo sobre Views, Sequences e Synonyms"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>oracle</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
