Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Índices Os SGBD’s utilizam índices para tornar mais eficiente a recuperação dos dados de um banco de dados. Um índice é uma estrutura de dados, onde são armazenados valores e ponteiros organizados de forma ascendente ou descendente, que torna possível localizar rapidamente as linhas de uma tabela nas quais o valor desejado está armazenado. Os índices são utilizados internamente pelo SGBD, ficando totalmente transparente ao usuário a sua utilização. 1. Índices 1.1 Criando Índices Um índice é construído sobre uma ou mais colunas de uma determinada tabela. Em SQL, um índice é criado através do comando create index, cuja a forma geral é: CREATE [UNIQUE] INDEX <nome_índice> ON <nome_tabela> (<lista_de_colunas>); A cláusula UNIQUE é opcional, e a sua inclusão assegura a não existência de valores duplicados no índice a ser criado. 1. Índices • Problema: Criar um índice chamado produto_desc_prod_idx sobre a coluna desc_prod da tabela produto. Solução: create index produto_desc_prod_idx on produto(desc_prod); • Problema: Criar um índice único chamado cliente_nome_cli_idx sobre a coluna nome_cli da tabela cliente. Solução: create unique index cliente_nome_cli_idx on cliente(nome_cli); 1. Índices • Problema: Criar um índice único chamado pedido_num_ped_cod_vend_idx sobre as colunas num_ped e cod_vend da tabela pedido. Solução: create unique index pedido_num_ped_cod_vend_idx on pedido(num_ped,cod_vend); • Problema: Criar um índice único chamado cliente_cod_cli_idx sobre a coluna cod_cli da tabela cliente. Solução: create unique index cliente_cod_cli_idx on cliente(cod_cli); • Obs: um índice único é automaticamente construído quando uma coluna é definida como chave primária no comando CREATE TABLE. 1. Índices 1.2 Eliminado Índices Podemos eliminar uma índice através do comando drop index, cuja a forma geral é: DROP INDEX <nome_índice>; • Problema: Eliminar os índices criados nos problemas acima. Solução: drop index produto_desc_prod_idx; Solução: drop index cliente_nome_cli_idx; Solução: drop index pedido_num_ped_cd_vend_idx; 2. Segurança • A informação é vital para o sucesso de um negócio, mas quando ela é tratada de forma incorreta ou quando cai em mão erradas, pode tornar-se um sério obstáculo para se atingir o sucesso. Visando garantir a segurança dos dados, os SGBD’s disponíveis no mercado fornecem um série de facilidades para salvaguardar as informações por eles mantidas. Tais facilidades são implementadas concedendo-se e retirando- se privilégios dos usuários sobre os dados mantidos por um SGBD. 2. Segurança 2.1 O Comando GRANT Quando uma tabela ou uma visão é criada, o nome do usuário que a criou é anexado implicitamente ao nome da tabela ou da visão. Exemplo: Se a tabela produto foi criada pelo usuário pedro; então, internamente, ela será conhecida como pedro.produto. O criador de uma tabela ou de uma visão tem todos os privilégios sobre o objeto criado, podendo inclusive conceder tais privilégios para outros usuários. Em SQL, os privilégios são concedidos através do comando grant, cuja a forma geral é: GRANT <lista_de_privilégios> ON <nome_objeto> TO <lista_de_usuários>; 2. Segurança Os privilégios concedidos são os seguintes: • Select permite executar consultas • Insert permite inserir registros • Delete permite excluir registros • Update permite modificar registros • All permite executar qualquer operação 2. Segurança Observações: a)Os usuário que irão receber os privilégios têm que estar previamente cadastrados no banco de dados. b)Podemos conceder privilégios para todos os usuários do banco de dados colocando a palavra PUBLIC no lugar reservado para a <lista_de_usuários>. 2. Segurança Exemplos: • GRANT select on produto to pedro; Permite apenas consultas ao usuário Pedro sobre a tabela produto. • GRANT select, insert, update on pedido to ana; Concede ao usuário Ana os privilégios de consulta, inclusão e alteração sobre a tabela pedido. • GRANT select on cliente to ana,pedro; Concede aos usuários Ana e Pedro o privilégio de consulta sobre a tabela cliente. • GRANT all on vendedor to PUBLIC; Permite todos os privilégios a todos os usuários cadastrados sobre a tabela vendedor. 2. Segurança • Problema: Disponibilizar para seleção, a todos os usuários, a visão salario_anual. Solução: grant select on salario_anual to public; • Problema: Disponibilizar para alteração as colunas endereco, cidade, cep e uf, da tabela cliente, para todos os usuários. Solução: grant update (endereco,cidade,cep,uf) on cliente to public; Podemos passar nossa concessão de privilégio a outros usuários através da cláusula WITH GRANT OPTION. • Exemplo: Conceder ao usuário Ana o poder de dar a concessão de todos os privilégios sobre a tabela pedido a outros usuários. Solução: grant all on pedido to ana with grant option; 2. Segurança 2.2 O Comando REVOKE Da mesma forma que podemos conceder privilégios de acesso a outros usuários, podemos também retirá-los através do comando REVOKE, cuja a forma geral é: REVOKE <lista_de_privilégios> ON <nome_objeto> FROM <lista_de_usuários>; Exemplo: Retirar o privilégio de seleção sobre a tabela pedido do usuário Ana. REVOKE select on pedido from ana; 2. Segurança • Problema: Retirar todos os privilégios concedidos a todos os usuários sobre a visão salario_anual. Solução: revoke all on salario_anual from public; • Problema: Retirar os privilégios de atualização e inserção concedidos ao usuário Ana sobre a tabela pedido. Solução: revoke insert, update on pedido from ana; 2. Segurança - Prática Em uma sessão principal do oracle (system/system): CREATE USER aluno1 // nome do usuário. IDENTIFIED BY aluno1 // senha do usuário. DEFAULT TABLESPACE USERS // uso das tablespaces existentes. TEMPORARY TABLESPACE TEMP PROFILE DEFAULT // usuário padrão. ACCOUNT UNLOCK; // cria o usuário. GRANT CONNECT TO aluno1; // libera o usuário para conexão. GRANT RESOURCE TO aluno1; // libera o usuário para abrir sessão. 2. Segurança - Prática CREATE USER aluno2 IDENTIFIED BY aluno2 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; GRANT CONNECT TO aluno2; GRANT RESOURCE TO aluno2; 2. Segurança - Prática Abrir 2 sessões (abrir duas novas instâncias do oracle), uma para cada usuário criado. Na sessão do usuário aluno1: conn aluno1/aluno1; create table xpto (mat integer not null); insert into xpto values (1); insert into xpto values (2); insert into xpto values (3); grant select on xpto to aluno2; 2. Segurança - Prática Na sessão do usuário aluno2 conn aluno2/aluno2; select * from xpto; // resultará em tabela não existe. select * from aluno1.xpto; // serão exibidos os registros. insert into aluno1.xpto values (4); // erro: falta de privilégios 2. Segurança - Prática Na sessão do usuário aluno1: grant insert on xpto to aluno2; Na sessão do usuário aluno2 insert into aluno1.xpto values (4); // o registro será incluído select * from aluno1.xpto; // serão exibidos os registros. 2. Segurança - Prática Na sessão principal (system) eliminar os usuários criados, mas antes feche as demais sessões (aluno1 e aluno2), a opção cascade faz com que todos os objetos criados pelo usuário também sejam eliminados: drop user aluno1 cascade; drop user aluno2 cascade; 3. Visões Considerações sobre segurança podem exigir que determinados dados não estejam disponíveis para alguns usuários. Logo, não é desejável que o modelo lógico possa ser acessado indiscriminadamente. Com base nas questões de segurança, podemos criar uma coleção de relações personalizadas que se ajustem melhor às necessidades dos usuários e que levem em conta as questões de segurança. Tais relações são chamadas de visões. Uma visão, na terminologia SQL, é uma tabela que é derivada de outras tabelas. Estas outras tabelas podem ser tabelas- base (criadas através do comando CREATE TABLE) ououtras visões previamente definidas. Uma visão não está, necessariamente, fisicamente armazenada no banco de dados; ela pode existir apenas virtualmente, em contraste com as tabelas-base, cujas as tuplas se encontram fisicamente armazenadas no banco de dados. 3. Visões 3.1 Definindo Visões Em SQL, uma visão é definida através do comando create view, cuja a forma geral é: CREATE VIEW <nome_visão> (<nomes das colunas>) AS <expressão_de_consulta>; Problema: Criar uma visão que contenha apenas os produtos vendidos em quilograma. create view prod_kg (codigo,descricao,unidade) as select cod_prod, desc_prod, unid_prod from produto where unid_prod=’kg’; 3. Visões Problema: Criar uma visão contendo o código do vendedor, o seu nome e o salário fixo anual. create view salario_anual (codigo,nome,sal_anual) as select cod_vend,nome_vend,sal_fixo*12 from vendedor; Problema: Criar uma visão contendo os vendedores, seus pedidos efetuados e os respectivos produtos. create view lista_pedidos as select nome_vend,num_ped,desc_prod from vendedor V,pedido P,item_pedido I, produto PR where V.cod_vend=P.cd_vend and P.num_ped=I.no_ped and I.cd_prod=PR.cod_prod; 3. Visões 3.2 Utilizando Visões Problema: Com base na visão salario_anual, mostrar os vendedores que têm salário fixo anual superior a R$ 20.000,00. select nome,sal_anual from salario_anual where sal_anual > 20000; NOME SAL_ANUAL Ana Cristina 25200 Armando Pinto 30000 2 linhas selecionadas. 3. Visões Problema: Inserir uma linha na visão prod_kg com código 800, descrição Cimento Branco, e unidade kg. insert into prod_kg values (800,’Cimento Branco’,’kg’); ORA-01400: não é possível inserir NULL em ("xxx"."PRODUTO"."VAL_UNIT") Problema: Excluir da visão salario_anual todos os vendedores que têm salário anual abaixo de R$ 15.000,00. delete from salario_anual where sal_anual<15000; ORA-02292: restrição de integridade (xxx.SYS_C001449) violada – registro filho localizado 3. Visões 3.3 Eliminando Visões Podemos eliminar uma visão através do comando drop view, cuja a forma geral é: DROP VIEW <nome_visão>; Problema: Eliminar a visão salario_anual; drop view salario_anual; 4. Funções Matemáticas e de Datas 4.1 Principais Funções Matemáticas: • ABS(col|num) Devolve o valor absoluto da coluna ou expressão. • CEIL(col|num) Devolve o menor inteiro que seja maior ou igual ao parâmetro de entrada. Ver FLOOR. • FLOOR(col|num) Devolve o maior inteiro que seja menor ou igual ao parâmetro de entrada. Ver CEIL. • MOD(col1|num1, col2|num2) Determina o resto da divisão do primeiro parâmetro pelo segundo. • POWER(col|num, n) Eleva a coluna ou expressão à potência de n. n tem que ser inteiro. 4. Funções Matemáticas e de Datas • ROUND(col|num, n) Arredonda o valor para o inteiro mais próximo se n não for especificado. Se n for positivo arrendonda na casa decimal com esse número. Se n for negativo arredonda em casas à esquerda da virgula. Ver TRUNC. Exemplo : SQLWKS> SELECT round(523.456) "R 0", 2> round(523.456, 0) "R 0", 3> round(523.456, 1) "R 1", 4> round(523.456, 2) "R 2", 5> round(523.456, -1) "R-1", 6> round(523.456, -2) "R-2", 7> round(523.456, -3) "R-3", 8> round(523.456, -4) "R-4" 9> FROM dual; R 0 R 0 R 1 R 2 R-1 R-2 R-3 R-4 523 523 523.5 523.46 520 500 1000 0 4. Funções Matemáticas e de Datas • SIGN(col|num) Devolve –1 se a coluna ou expressão tiverem um valor negativo, 1 se tiverem um valor positivo ou 0 se tiverem um valor de 0. • SQRT(col|num) Devolve a raiz quadrada da coluna ou expressão. • TRUNC(col|num, n) Faz o mesmo que o ROUND mas em vez de arredondar trunca. Ver ROUND. • Mais funções disponíveis nos manuais do Oracle (ACOS, ASIN, ATAN, ATAN2, COS, COSH, EXP, LN, LOG, SIN, SINH, TAN, TANH). 4. Funções Matemáticas e de Datas 4.2 Principais Funções de Datas: Em Oracle as datas guardam valores sobre o século, ano, mês, dia, hora, minuto e segundo. Podem representar valores entre 1 de Janeiro de 4712 AC e 31 de Dezembro de 4712 DC. A data é guardada internamente através de um formato de dados desconhecido para o utilizador/programador. No entanto, é possível alterar o formato usado pelo Oracle para mostrar datas. Pode, por exemplo, ver-se datas com 2 dígitos no ano ou com 4 dígitos. Mas seja qual for a escolha, internamente é guardada toda a informação do ano. • Operações aritméticas: As seguintes operações aritméticas são válidas para datas: data + dias = nova_data data – dias = nova_data data1 – data2 = dias_diferenca (numero real positivo) data + horas/24 = data_mais_horas data + dias + horas/24 + minutos/1440 + segundos/86400 = nova_data; 4. Funções Matemáticas e de Datas Exemplo a somar dias, horas, minutos e segundos a uma data: SQL>SELECT TO_CHAR(TO_DATE('98-07-01 00:00:00', 'YY- MM-DD hh24:mi:ss') 2 + 8 -- mais 8 dias 3 + 12/24 -- mais 12 horas 4 + 34/1440 -- mais 34 minutos 5 + 56/86400, -- mais 56 segundos 6 'yyyy-mm-dd hh24:mi:ss') "Somar" 7 FROM DUAL; Somar --------------------------------------------------------------------- 1998-07-09 12:34:56 4. Funções Matemáticas e de Datas Exemplo para subtrair datas: SQL>SELECT TO_DATE('98-07-01 00:00:00', 'YY-MM-DD hh24:mi:ss') 2 - TO_DATE('98-07-01 00:00:00', 'YY-MM-DD hh24:mi:ss') 3 + 8 -- soma 8 dias 4 + 12/24 -- mais 12 horas 5 + 34/1440 -- mais 34 minutos 6 + 56/86400 -- mais 56 segundos 7 "Subtrai datas" 8 FROM DUAL; Subtrai datas ------------- 8.5242593 4. Funções Matemáticas e de Datas • ADD_MONTHS(data, n) Devolve o valor da soma de n meses com data. O valor de n tem que ser inteiro mas pode ser negativo. • LAST_DAY(data) Devolve a data do último dia do mês que contém o dia indicado por data. • MONTHS_BETWEEN(data1, data2) Devolve um número fracionário, maior, menor ou igual a zero que representa a diferença em meses entre a data1 e data2. Para efeitos da parte fracionária é considerado que um mês tem 31 dias. Assim, months_between('27-02-1998', '31-01-1998') devolve um valor de 0,870967742 que é igual a 27/31 (e não a 27/28). • NEW_TIME(data, fuso1, fuso2) Permite calcular a diferença horária entre dois fusos horários. Consultar os manuais do Oracle para mais informações. 4. Funções Matemáticas e de Datas • NEXT_DAY(data, dia_semana) Devolve o valor de data do próximo dia da semana especificado por dia_semana a seguir a data. Valores válidos para dia_semana são: ‘sun’, ‘mon’, ‘tue’, ‘wed’, ‘thu’, ‘fri’, ‘sat’, que representam as abreviaturas em inglês para os dias da semana. Também se podem usar os nomes completos em inglês e não interessa se se escreve em minúsculas ou maiúsculas. Poder-se-á usar nomes de dias da semana numa língua diferente do inglês se alterarmos a língua da sessão em uso. Também se podem usar os números de 1 (Domingo) a 7 (Sábado). 4. Funções Matemáticas e de Datas Exemplo: SQL> SELECT NEXT_DAY(sysdate, 'Sun') "Domingo", 2 NEXT_DAY(sysdate, 'Mon') "Segunda", 3 NEXT_DAY(sysdate, 'Tue') "Terça", 4 NEXT_DAY(sysdate, 'Wed') "Quarta", 5 NEXT_DAY(sysdate, 'Thu') "Quinta", 6 NEXT_DAY(sysdate, 'Fri') "Sexta", 7 NEXT_DAY(sysdate, 'Sat') "Sábado" 8 FROM dual; Domingo Segunda Terça Quarta Quinta Sexta Sábado 98-11-01 98-11-02 98-11-03 98-10-28 98-10-29 98-10-30 98-10-31 Apesar de não aparecer no exemplo, os valores de hora, minuto e segundo são iguais aos valores do primeiro argumento (no exemplo – sysdate, que devolve a data do sistema). Ver função sysdate. 4. Funções Matemáticas e de Datas • NLS_DATE_FORMAT O Oracle representa as datas segundo o formato definido em NLS_DATE_FORMAT. Pode alterar-se o seu valor através do comando ALTER SESSION. Alguns dos campos válidos do NLS_DATE_FORMAT são: DDD -> Dia do ano (número) DD -> Dia do mês (número) DAY -> Dia da semana (extenso) MM -> Número do mês MON -> Nome abreviado do mês MONTH -> Nome por extenso do mês YYYY -> Representar o ano com 4, 3, 2 ou 1 dígitos respectivamente YYY YY Y HH -> Hora do dia (0-12) HH12 HH24 -> Hora do dia (0-24) MI -> Minutos SS -> Segundos SSSSS -> Segundos depois da meia-noite - / , . ; : "texto" -> pontuaçãoou texto entre aspas 4. Funções Matemáticas e de Datas Exemplo para alterar o formato da data: SQL>ALTER SESSION 2 SET NLS_DATE_FORMAT = '"Data:" YYYY-MON-DD HH24:MI:SS'; Session altered. SQL>SELECT SYSDATE FROM dual; SYSDATE -------------------------- Data: 1998-OCT-27 20:23:35 • SYSDATE Função sem argumentos que devolve a data e hora do servidor. • TRUNC(data, [‘DAY’|‘MONTH’|‘YEAR’|‘outro’]) Arredonda a data para as zeros horas do dia actual (se não se usar o segundo argumento) ou para o princípio da semana actual (se o segundo argumento for ‘DAY’), ou para o princípio do mês actual (se o segundo argumento for ‘MONTH’) ou para o princípio do ano actual (se o segundo argumento for ‘YEAR’). Em qualquer dos casos, o valor de horas, minutos e segundos fica igual a zero. Consultar os manuais do Oracle para as restantes opções. 4. Funções Matemáticas e de Datas • ROUND(data, [‘DAY’|‘MONTH’|‘YEAR’|‘outro’]) Arredonda a data ao dia ou ao dia da semana ou ao mês ou ao ano. Para arredondar ao dia não se usa o segundo argumento. Todos os valores de tempo antes do meio-dia são arredondados para as zero horas desse próprio dia. Os restantes valores são arredondados para o dia seguinte. Para arredondar ao dia da semana (para a segunda-feira mais perto) usa-se o segundo argumento com o valor de ‘DAY’. O valor de ‘MONTH’ serve para arredondar ao mês e o de ‘YEAR’ para arredondar ao ano. Existem mais opções de arredondamento. Consultar os manuais da Oracle. NOTA: Considera-se que o meio da semana é quarta-feira ao meio-dia. Tudo o que estiver compreendido entre uma segunda-feira e o meio- dia da quarta-feira da mesma semana é arredondado para as zero horas dessa segunda-feira. Tudo o que estiver depois do meio-dia da quarta-feira da mesma semana é arredondado considera-se que a metade é a meia-noite entre os dias 15 e 16 independentemente do tamanho dos meses. Em termos de anos, considera-se metade a meia- noite entre o dia 30 de Junho e o dia 01 de Julho muito embora a segunda “metade” seja constituída por 184 dias e a primeira por 181 dias (ou 182 em anos bissextos). Em qualquer dos casos, o valor de horas, minutos e segundos fica igual a zero. 5. Seqüências Criar Sequências (CREATE SEQUENCE) Uma seqüência é um objecto que permite gerar números inteiros únicos. Mesmo que vários utilizadores (ou o mesmo utilizador através de várias sessões) acedam à seqüência, é garantido que nenhum obtém um número que outro já tenha obtido. O principal uso de sequências é para a geração automática de chaves primárias. O comando para criar sequências é: CREATE SEQUENCE nome_sequência START WITH num_principio INCREMENT BY num_intervalo [MAXVALUE num_max | NOMAXVALUE] [MINVALUE num_min | NOMINVALUE] [CYCLE | NOCYCLE] [ORDER | NOORDER] [CACHE num_cache | NOCACHE] 5. Seqüência Onde: • nome_seqüência -> é o nome da seqüência a criar • START WITH num_principio -> é o primeiro número da seqüência e pode ser qualquer valor inteiro, positivo, negativo ou zero. • INCREMENT BY num_intervalo -> específica quantos inteiros separam dois números obtidos consecutivamente da seqüência. Pode ser qualquer valor positivo ou negativo mas não pode ser zero. • MAXVALUE num_max -> limita os números da seqüência a este valor máximo. Pode ser qualquer número desde que seja maior ou igual a num_princípio e maior que num_min. • NOMAXVALUE -> especifica um valor máximo de 1027 no caso de uma seqüência ascendente e –1 no caso de uma seqüência descendente. Por omissão as sequências são NOMAXVALUE. • MINVALUE num_min -> limita os números da seqüência a este valor mínimo. Pode ser qualquer número desde que seja menor ou igual a num_princípio e menor que num_max. • NOMINVALUE -> especifica um valor mínimo de -1027 no caso de uma seqüência ascendente e 1 no caso de uma seqüência descendente. Por omissão as sequências são NOMINVALUE. 5. Seqüência • CYCLE -> determina que uma seqüência ascendente depois de atingir o valor máximo recomeça a partir do valor mínimo. No caso de uma seqüência descendente, depois de atingido o valor mínimo a contagem recomeça no valor máximo. • NOCYCLE -> é o valor por omissão e determina • ORDER -> determina que os números da sequência são gerados pela ordem de pedidos. Os números só poderiam ser gerados fora de ordem se se estivesse a usar um servidor de BD paralelo. Se esta opção for indica, os números da sequência nunca são gerados antecipadamente e as opções CACHE e NOCACHE são irrelevantes. • NOORDER -> é o valor por omissão e indica que não é forçoso que os números da sequência sejam gerados pela ordem dos pedidos. No que diz respeito à geração de chaves primárias, não costuma ser importante a ordem dos números. • CACHE num_cache -> indica quantos números o Oracle gera em avanço para aumentar a rapidez. O valor por omissão é CACHE 20. É preciso garantir que o valor de num_cache é menor ou igual ao número total de valores que a sequência pode gerar. • NOCACHE -> determina que nunca são gerados números em avanço 5. Seqüência Para usar as sequências basta fazer: nome_seq.nextval para obter o próximo valor (também funciona para o primeiro) nome_seq.currval para devolver o valor atual (não funciona a primeira vez) O uso destas pseudo-colunas funciona como se tratasse de funções. Ou seja, pode-se incluir qualquer destas formas num comando SELECT, INSERT, UPDATE, etc. mas não se pode executar diretamente na linha de comando. Pode-se no entanto fazer uso da tabela especial DUAL. Exemplo – Usar uma sequência várias vezes consecutivas. Note que a primeira vez que se usa a sequência não se pode usar a forma currval (porque ainda não existe um valor corrente). SQLWKS> SELECT minha_sequencia.currval FROM dual; ORA-08002: sequence MINHA_SEQUENCIA.CURRVAL is not yet defined in this session SQLWKS> SELECT minha_sequencia.nextval FROM dual; NEXTVAL ---------- 1 1 row selected. 5. Seqüência SQLWKS> SELECT minha_sequencia.nextval FROM dual; NEXTVAL ---------- 2 1 row selected. SQLWKS> SELECT minha_sequencia.nextval FROM dual; NEXTVAL ---------- 3 1 row selected. SQLWKS> SELECT minha_sequencia.currval FROM dual; CURRVAL ---------- 3 1 row selected. 5. Seqüência • Usar uma sequência num INSERT. SQLWKS> INSERT INTO emp (nemp, nome, sal, ndep) 2> VALUES (minha_sequencia.nextval, 'Joca', 55000, 10); 1 row processed. SQLWKS> INSERT INTO emp (nemp, nome, sal, ndep) 2> VALUES (minha_sequencia.nextval, 'Becas', 55000, 10); 1 row processed. SQLWKS> INSERT INTO emp (nemp, nome, sal, ndep) 2> VALUES (minha_sequencia.nextval, 'Egas', 55000, 10); 1 row processed. SQLWKS> SELECT nemp, nome FROM emp 2> WHERE nemp < 1000; NEMP NOME ---------- -------------------- 4 Joca 5 Becas 6 Egas 3 rows selected. 5. Seqüência • Criar uma sequência de 0 a 100, com intervalos de 5 em 5. Quando chega ao fim volta ao princípio. CREATE SEQUENCE seq START WITH 0 INCREMENT BY 5 MAXVALUE 100 MINVALUE 0 CYCLE; • Apagar Sequências (DROP SEQUENCE) Para apagar sequências usa-se o comando DROP SEQUENCE seguido do nome da sequência. Exemplo: DROP SEQUENCE minha_sequencia;
Compartilhar