Desenvolvido por Daniel Silva Nunes

Índice Introdução..........................................................................................................................1 Visão geral da Oracle....................................................................................................1 O que é o BD Oracle 10g XE........................................................................................1 1ª Etapa..............................................................................................................................2 Instalação do Oracle 10g XE........................................................................................2 Apresentação das ferramentas do Banco......................................................................3 Ferramentas SQL*Plus.................................................................................................3 Criação e exclusão de usuários.....................................................................................4 Edição de senhas dos usuários......................................................................................7 Privilégios.....................................................................................................................8 2ª Etapa............................................................................................................................10 Tipos de dados............................................................................................................10 Criação e manipulação de tabelas...............................................................................12 Relacionamento de tabelas..........................................................................................17 Tipos de Constraints. .................................................................................................17 Manipulação de dados com SQL................................................................................26 Commit e Rollback.....................................................................................................32 “Rotulando” campos das tabelas.................................................................................33 Concatenando colunas................................................................................................36 3ª Etapa............................................................................................................................37 Criação e execução de scripts SQL.............................................................................37 Operadores lógicos em SQL.......................................................................................41 Funções de ordenação.................................................................................................54 SELECT com mais de uma tabela..............................................................................59 Funções do Oracle 10g XE.........................................................................................67 4ª Etapa............................................................................................................................83 Conceito de PL/SQL...................................................................................................83 Function......................................................................................................................83 Procedure....................................................................................................................85 Sequence.....................................................................................................................88 Trigger.........................................................................................................................89 View............................................................................................................................92 Index...........................................................................................................................94 5ª Etapa............................................................................................................................97 Oracle Application Express........................................................................................97 Serviços do Oracle 10g.............................................................................................108 Backup lógico ..........................................................................................................111 Backup físico............................................................................................................115 Índice de Figuras Figura 1.1: Assistente de Instalação............................................................................2 Figura 1.2: Menu Iniciar...............................................................................................3 Figura 1.3: SQL*Plus....................................................................................................4 Figura 1.4: Show User..................................................................................................5 Figura 1.5: Create User Fatec.......................................................................................6 Figura 1.6: Drop User Fatec..........................................................................................7 Figura 1.7: Alter User Fatec..........................................................................................8 Figura 2.1: Create Table Teste....................................................................................13 Figura 2.2: Desc Teste 1.............................................................................................14 Figura 2.3: Desc Teste 2.............................................................................................15

Figura 2.4: Alter Table Teste......................................................................................16 Figura 2.5: Alter Table Teste Drop Column...............................................................17 Figura 2.6: Alter Table Teste Add Constraint............................................................19 Figura 2.7: Create Table Aluno..................................................................................20 Figura 2.8: Create Table Nota_Aluno.........................................................................22 Figura 2.9: Alter Table Aluno Add Constraint...........................................................24 Figura 2.10: Alter Table Aluno Drop Constraint........................................................25 Figura 2.11: Insert Into Cidades..................................................................................27 Figura 2.12: Select Cidades 1.....................................................................................27 Figura 2.13: Column Format.......................................................................................28 Figura 2.14: Select Cidades 2.....................................................................................29 Figura 2.15: Update Cidades.......................................................................................30 Figura 2.16: Select Cidades 3.....................................................................................30 Figura 2.17: Delete Cidades........................................................................................31 Figura 2.18: Select Cidades 4.....................................................................................31 Figura 2.19: Select Cidades após Delete.....................................................................32 Figura 2.20: Rollback..................................................................................................33 Figura 2.21: Select Cidades 5.....................................................................................34 Figura 2.22: Select com Rótulo..................................................................................35 Figura 2.23: Select com Rótulo 2...............................................................................35 Figura 2.24: Concatenando Campos...........................................................................36 Figura 2.25: Concatenando Campos 2........................................................................37 Figura 3.1: Iniciando Script........................................................................................38 Figura 3.2: Executando Script.....................................................................................39 Figura 3.3: Select Cidades 6.......................................................................................40 Figura 3.4: Diretório do Script....................................................................................40 Figura 3.5: Select Cidades Codigo 7...........................................................................44 Figura 3.6: Operador Lógico “Diferente” ..................................................................45 Figura 3.7: Oprador Lógico “Maior”..........................................................................45 Figura 3.8: Operador Lógico “Menor”.......................................................................46 Figura 3.9: Operador Lógico “Maior ou Igual”..........................................................47 Figura 3.10: Operador Lógico “Menor ou Igual”.......................................................47 Figura 3.11: Operador Lógico “And”.........................................................................48 Figura 3.12: Operador Lógico “Or”............................................................................48 Figura 3.13: Operador Lógico “Between”..................................................................49 Figura 3.14: Operador Lógico “In”.............................................................................50 Figura 3.15: Operador Lógico “%Like”.....................................................................51 Figura 3.16: Operador Lógico “Like%”.....................................................................51 Figura 3.17: Operador Lógico “%Like%”..................................................................52 Figura 3.18: Operador Lógico “Not In”......................................................................53 Figura 3.19: Operador Lógico “Not Like”..................................................................53 Figura 3.20: Função “Order By”.................................................................................54 Figura 3.21: Select com Order By..............................................................................55 Figura 3.22: Select com Order By Desc.....................................................................56 Figura 3.23: Select com Order By Desc 2..................................................................57 Figura 3.24: Select com Order By Desc 3..................................................................58 Figura 3.25: Select com Order By Desc 4..................................................................58 Figura 3.26: Select com Order By Desc 5..................................................................59 Figura 3.27: Select Vendas.........................................................................................63 Figura 3.28: Select Vendedores..................................................................................63 Figura 3.29: Select com Join.......................................................................................64 Figura 3.30: Select Vendas 2......................................................................................65

............100 Figura 5.........................4: Usuários do Banco de Dados..........................................12: Visualização da Estrutura da Tabela Oracle...........................................97 Figura 5........................................68 Figura 3...................................9: Tela Chave Primária......................................................................................................................2: Opções do Application Express................................33: Função SQRT....92 Figura 4...Figura 3......66 Figura 3............................................76 Figura 3..................................5: Tela Criar Usuário do Banco de Dados............37: Função POWER.........................................................................................75 Figura 3..............105 .......6: Tela Alterar Minha Senha...........................4: Executando Procedure......................................52: Função COUNT..............................................................................................................................................................................................................................................................................................98 Figura 5....................41: Função NVL..............13: Criando Index..................................82 Figura 3........................................................94 Figura 4......38: Função UPPER..............................39: Função LOWER...........48: Função AVG..........................................................42: Função TO_CHAR....................31: Select com Join 2.....34: Função ROUND..............95 Figura 4......................................................11: Tela Confirmar............................................73 Figura 3............................................................................................................................................................79 Figura 3...87 Figura 4..........................10: Tela Restrições..................................45: Função ADD_MONTHS..............................40: Função REPLACE....................................................12: Campo Nome da Tabela Vendedores..........72 Figura 3...........91 Figura 4........99 Figura 5.....................36: Função TRUNC 2...67 Figura 3..77 Figura 3.....................................5: Verificando resultado da Procedure.....................................................................................................93 Figura 4........3: Informações de armazenamento do Application Express..........................85 Figura 4.................................13: Visualização dos Objetos..............................................96 Figura 4.............................................................................................................69 Figura 3...................................................................................87 Figura 4...............81 Figura 3.6: Criando Sequence............................................7: Criando Trigger...............10: Criando View...........................................................104 Figura 5..........3: Create Procedure....................49: Função MAX.........................................................................11: Visualizando View.......................................101 Figura 5....................43: Função SYSDATE........................71 Figura 3...........................8: Inserindo Registro..........................................................................98 Figura 5...............................14: Tela Comandos SQL....................69 Figura 3................................1: Menu Ir para a Home Page do Banco de Dados........82 Figura 4...102 Figura 5................................................................................8: Tela Criar Tabela...........................2: Executando Function....................................74 Figura 3......................................46: Função DECODE...............103 Figura 5...........................89 Figura 4...................70 Figura 3.......80 Figura 3......................................71 Figura 3....78 Figura 3.............1: Create Function........................90 Figura 4.....................................................47: Função DECODE 2..........................................................................................................................................................................................86 Figura 4.104 Figura 5......................99 Figura 5....................................................51: Função SUM.....................................................................................................................79 Figura 3...........................80 Figura 3.........................................................................................102 Figura 5...............................................................9: Verificando Vendas...........................................53: Função COD_VENDEDOR..................................96 Figura 5.............................................................................77 Figura 3...................................................................7: Tela Browser de Objetos..........................................................................................................................................................14: Funcionalidade do Index.......................32: Select com Outer Join...50: Função MIN.........103 Figura 5.............44: Função LAST_DAY...........54: Função COUNT DISTINCT................35: Função TRUNC...................75 Figura 3......84 Figura 4..........................................................

............................................................................................................61 Tabela 3...................................................................................115 Figura 5..................42 Tabela 3.....114 Figura 5...116 Figura 5......................9: Tabela Vendedores.........................29: Diretório dos Arquivos Físicos Exportados........................................19: Vendedor 5.....10: Venda 1..............118 Índice de Tabelas Tabela 1..............1: Permissões.......................................112 Figura 5...............27: Select Após Importação.......1: Tabela Oracle.......................60 Tabela 3.......................................................................................................................................15: Vendedor 1................................................7: Cidade 8.....................................................................Figura 5.........................................18: Vendedor 4........................................42 Tabela 3.........................................................................................16: Tela Gerar DLL..........108 Figura 5........................................................................62 Tabela 3...............31: Importação Física............................................2: Tabela Cidades........................16: Vendedor 2..............11: Venda 2................................................................................................1: Cidade 3.............................4: Cidade 5........................................................2: Operadores Lógicos................107 Figura 5............................28: Exportação Física................................................................................................................................................................60 Tabela 3.24: Diretório dos Arquivos Lógicos Exportados..60 Tabela 3.....62 Tabela 3........................................................................13: Venda 4.......................17: Scripts SQL..110 Figura 5............................................................73 Tabela 4............................17: Vendedor 3...14: Venda 5.............................115 Figura 5..15: Visualização dos Dados na Tabela Oracle........................111 Figura 5............................................23: Exportação Lógica.59 Tabela 3.................61 Tabela 3.......................................................1: Venda 6......12 Tabela 2......................................................................................................5: Cidade 6..........................................61 Tabela 3..............................................................................6: Cidade 7...............29 Tabela 3..........................................62 Tabela 3....................................................................................................................................118 Figura 5..............................................19: Interrompendo Banco de Dados..117 Figura 5..............................................................................................................................................................8: Tabela Vendas............................61 Tabela 3........22: Iniciando Banco de Dados...101 .....................91 Tabela 5...................................................................................................20: Erro gerado............................................................................43 Tabela 3.....................................................................................................................109 Figura 5.......................................................................................................................107 Figura 5.........1: Tipos de Dados....110 Figura 5......................25: Exclusão de usuário.3: Cidade 2...............43 Tabela 3............................42 Tabela 3...........................................26: Importação Lógica........................................38 Tabela 3...........................26 Tabela 2....................................................12: Venda 3........18: Serviços......................................................................................................20: Vendedor 6........106 Figura 5..........................................................................................................................................30: Diretório dos Arquivos Físicos Exportados 2...........................................................42 Tabela 3...............................9 Tabela 2..........................................................................................21: Erro gerado 2.......................................................................................3: Cidade 4.............113 Figura 5....................60 Tabela 3...............................................

aplicativos empresariais e ferramentas para desenvolvimento de aplicativos e suporte a decisões. a Oracle está comprometida em garantir que todo o seu software seja projetado para trabalhar em conjunto – a abordagem de suíte – e outras empresas. www. oracle. para que mais pessoas tivessem acesso à ele e conhecessem essa magnífica ferramenta. Larry Ellison vislumbrou uma oportunidade que outras companhias não haviam percebido. A Oracle é a primeira empresa de software a desenvolver e empregar software empresarial totalmente habilitado para Internet em toda a sua linha de produtos: banco de dados. PHP. Foi desenvolvido visando a comunidade acadêmica. Por esse motivo a Oracle lançou sua versão gratuita do seu BD. Há quase trinta anos.atualmente. esse conceito é predominante. Ellison e os co-fundadores da Oracle. O BD Oracle 10g Express Edition é a versão gratuita do BD da Oracle. Bob Miner e Ed Oates. C++. C. que é utilizada para a comunicação com o BD. mas não se deram conta de que mudariam a face da computação empresarial para sempre. é baseado no conceito de tabelas para armazenamento de dados. desenvolvida pela Oracle e que também será apresentada no decorrer do curso. O que estamos preparando para o futuro? Continuaremos a inovar e liderar o mercado – nos preocupando sempre em resolver os problemas dos nossos clientes. versão otimizada da linguagem SQL. entre outros. Hoje a Oracle (Nasdaq: ORCL) continua à frente de seu tempo. 1 .Introdução • Visão geral da Oracle. A Oracle é uma empresa inovadora. A Oracle é o principal fornecedor de software para gerenciamento de informações e a segunda maior empresa de software independente do mundo. Esse é um BD relacional. Frente a esse fato. quando encontrou uma descrição de um protótipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia. Foi uma das primeiras a tornar seus aplicativos empresariais disponíveis através da Internet -. já que os estudantes da área de tecnologia não tinham acesso às versões licenciadas desse banco. perceberam que havia um tremendo potencial de negócios no modelo de banco de dados relacional. à integração com as linguagens Java. A tecnologia Oracle pode ser encontrada em quase todos os setores do mundo inteiro e nos escritórios de 98 das empresas citadas na lista “Fortune 100”. Agora. para quem desenvolve softwares. pois as mesmas são muito caras para as pessoas em comum e até mesmo para pequenas empresas.NET. os profissionais que sabiam trabalhar com esse banco estavam cada vez mais escassos. ou seja.html • O que é o BD Oracle 10g XE. analistas e a imprensa vem reconhecendo que ela está certa.com/global/br/corporate/story. VB. O Oracle 10g Express Edition conta ainda com o mesmo suporte oferecido pela sua versão comercial. O BD possui suporte ao PL/SQL.

basta acessar o endereço abaixo: http://www. basta clicar em “Próximo” até chegar na seguinte tela: Figura 1.1: Assistente de Instalação Nessa etapa deverá ser informada a senha do usuário System. Após instalado será exibida a janela de confirmação da instalação.com/technology/software/products/database/xe/index. depois que a janela do instalador estiver aberta. Para quem desejar baixar o Oracle XE. clique em “próximo” e na tela que seguinte clique em “instalar”. o cadastro será requerido e você pode fazê-lo pois é totalmente grátis.oracle. Dica: escolha seu primeiro nome (opcional). basta dar um duplo clique sobre ele para iniciar a instalação. A Oracle também possui a versão para Linux desse BD para aqueles que preferem esse SO. Como é padrão no Windows. Com o software devidamente baixado em seu microcomputador. 2 . Desmarque a opção “Acionar a homepage do Banco de Dados” e clique em “Finalizar”. Nesse curso utilizaremos a versão do Oracle XE para Windows. que é o usuário padrão do Oracle XE.1ª Etapa • Instalação do Oracle 10g XE.html Caso você ainda não tenha se cadastrado no site da Oracle. Feito isso.

acesse o menu Iniciar. Executar linha de comandos SQL: essa opção abre o SQL*Plus. 8. Iniciar Banco de Dados: caso o banco não esteja iniciado essa opção dá um “start” no banco. 6.• Apresentação das ferramentas do Banco. 4. 7. Fazer Backup do Banco de Dados: opção para backup do banco. • Ferramentas SQL*Plus. Restaurar Banco de Dados: caso haja um arquivo de backup essa opção é utilizada para restaurar esse arquivo. que será discutida mais adiante aqui no curso. Após a conclusão da instalação. Interromper Banco de Dados: essa opção encerra todos os serviços do banco de dados que estiverem sendo executados no computador. que aqui não será discutida. Ir para a Home Page de Banco de Dados: essa opção abre uma tela para gerenciamento do BD no navegador padrão do computador. exiba todos os programas e procure a pasta Oracle Database 10g Express Edition. 5. Para iniciar. iniciaremos a opção Executar linha de comandos SQL. que será muito utilizada nesse curso. Figura 1. Diretório “Obter Ajuda”: nesse diretório temos mais 4 opções de ajuda online. Deverá aparecer a seguinte tela: 3 . Obter ajuda: outra opção de ajuda online. que não serão aqui discutidas. 3. 2.2: Menu Iniciar Pode-se visualizar 8 opções: 1.

e pressione a tecla “Enter”.3: SQL*Plus Essa é a tela inicial do SQL*Plus. Para isso utilizamos o seguinte comando: show user. Após digitar esse comando pressione “Enter”.Figura 1. serve para o usuário conectar-se ao BD. O comando conn. Será esse ambiente que usaremos no decorrer de grande parte do tutorial. o único usuário existente é o “system”. A tela deverá estar como abaixo: 4 . • Criação e exclusão de usuários. Nessa tela digite conn. Podemos ainda visualizar qual usuário está conectado ao banco. Portanto digite “system” assim que o SQL*Plus solicitar e pressione “Enter”. Após isso o SQL*Plus solicitará a senha. Informe a senha que você cadastrou no momento da instalação do BD. Como estamos acessando o BD pela primeira vez após a instalação.

Figura 1. Para criarmos usuários no Oracle utilizamos o seguinte comando: create user [login] identified by [senha]. Cadastre alguns usuários (5 ao menos) no Oracle. como no exemplo a seguir: 5 . e isso é muito perigoso. mas atenção aos logins e senhas. Sempre que um usuário é criado corretamente deverá ser exibida a mensagem de confirmação. portanto.4: Show User Não é aconselhável usar o usuário padrão do Oracle. recomenda-se não usar caracteres especiais para login e senha. você é o responsável pela criação de usuários. Portanto aprenderemos a seguir como criar usuários no BD. Como em geral. Suponha que você é o administrados do banco de dados de uma organização e. Vamos aos testes! A partir desse ponto exercitaremos a criação de usuários. pois o mesmo pode realizar toda e qualquer ação dentro do banco de dados. Onde [login] é o nome do usuário e [senha] será o código de acesso dele ao banco. pois somente o administrador do BD deve possuir tais privilégios. pois utilizaremos esses usuários para exercícios posteriores (é recomendável que tais informações sejam anotadas em algum lugar de sua preferência).

Caso o comando CASCADE não esteja no fim da linha de comando será exibida na tela uma mensagem de erro da Oracle.5: Create User Fatec Suponha que você está cadastrando usuários que foram recentemente contratados pela empresa onde você trabalha. Quando criamos objetos dentro do banco de dados (tabelas. Após a exclusão de um usuário deverá aparecer na tela uma mensagem tal qual a ilustração a seguir: 6 . Esse comando só será dispensável caso o usuário em questão não tenha criado nenhum objeto no BD. Para que essa exclusão "em cascata" ocorra. etc. Para excluirmos usuários no Oracle utilizamos o seguinte comando: drop user [login] cascade. funções. veremos a seguir o comando que nos possibilita a exclusão de usuários do BD.). consequentemente eles não possuíam usuário e senha de acesso ao sistema. Onde o [login] é o nome do usuário que deseja-se deletar. o comando CASCADE deve estar presente ao final do comando DROP USER. A palavra CASCADE no fim do comando significa "em cascata" e é opcional. Desse modo. Lógicamente você precisará excluir esse usuários do banco de dados.Figura 1. Como são funcionários novos na empresa. Mas vamos supor uma outra situação: a empresa onde você trabalha demitiu alguns funcionários. estes objetos ficam na área do usuário que os criou e se este for deletado seus objetos serão deletados também. por isso você ficou encarregado de realizar essa tarefa.

a tela deverá estar parecida com a que segue: 7 .6: Drop User Fatec • Edição de senhas dos usuários. mas que pode posteriormente ser alterada. segundo a solicitação do mesmo. Normalmente nas empresas em geral o usuário é cadastrado com uma senha padrão. Veremos agora como fazer para alterar a senha de um usuário. Outra função muita usada por um administrador de banco de dados é a alteração de senhas dos usuários.Figura 1. Para alterarmos as senhas dos usuários no Oracle utilizamos o seguinte comando: alter user [login] identified by [nova senha]. Vale lembrar que caracteres especiais são dispensáveis! Assim que um usuário é alterado. Onde [login] é o nome do usuário que deseja-se alterar e [nova senha] é o novo código de acesso do usuário ao banco.

CONNECT inclui o privilégio CREATE SESSION. Conceda este privilégio ao usuário ou aplicação que necessite acessar o banco de dados.7: Alter User Fatec “É importante ressaltar que toda alteração de senha deve ser anotada em um local aonde o administrador do banco de dados poderá consultar posteriormente. mas não inclui os privilégios necessários para iniciar ou parar o banco de dados. o usuário padrão (System) do Oracle pode executar qualquer ação dentro do banco. exclusão e alteração de usuários dentro do banco de dados. funções. CREATE INDEXTYPE. pois casos em que o usuário esquece a senha não são raros. respectivamente. inclusive os demais usuários. Conceda este privilégio apenas aos usuários que desenvolvem no banco de dados. Como já foi comentado anteriormente. Por isso neste tópico. Permite que o usuário crie objetos (tabelas.Figura 1. DBA inclui o privilégio de sistema com WITH ADMIN OPTION. que significa: com opção de administração.” • Privilégios. que permite somente acesso ao banco. Por isso demos início aos tópicos de criação. Mas isso de nada adiantaria se esses usuários tivessem as mesmas permissões do usuário System. Mas antes disso é interessante conhecer os tipos de permissões e suas características. aprenderemos como adicionar ou remover permissões de um usuário. start up e shut down. CREATE 8 DBA RESOURCE . RESOURCE inclui os seguintes privilégios do sistema: CREATE CLUSTER. etc). Privilégio CONNECT Descrição Permite que o usuário conecte-se ao banco de dados e execute ações básicas nele. Permite que um usuário administre todos os objetos do banco de dados.

tal qual demonstramos no exemplo anterior. E ele só poderá fazer isso se quando esse usuário recebeu a permissão foi especificado no comando grant a opção WITH ADMIN OPTION. No exemplo acima o usuário poderá conceder o privilégio resource a qualquer outro usuário. CREATE PROCEDURE. O comando que nos possibilita esse ação é o REVOKE (revogar). porém ele só pode conceder as permissões que ele possui. usuário2]. Para isso é necessário separar os privilégios com uma vírgula. como pode-se notar a seguir: grant [privilégio] to [usuário]. Crie um usuário com o seu nome. Ex: grant [privilégio1. caso não esteja. CREATE SEQUENCE. Conectese ao banco com o usuário SYSTEM. CREATE TRIGGER. Há também a possibilidade de conceder um ou mais privilégios a um ou mais usuários. privilégio2] to [usuário]. como pode ser observado a seguir: 9 .OPERATOR. Quando desejamos adicionar/alterar a permissão de usuários. e CREATE TYPE . bastando somente separar o nome dos usuários com uma vírgula. privilégio2] to [usuário1. utilizamos o comando GRANT (conceder). A sintaxe desse comando não possui segredos. Para melhor entendimento. Agora que sabemos como conceder privilégios à usuários. pois está especificado na última parte do comando a opção with admin option. vamos conhecer o comando para tirar privilégios. vamos fazer alguns testes. A sintaxe desse comando é muito simples. Tabela 1. segue a sintaxe do comando: grant [resource] to [usuário1] with admin option. a senha ficará por sua conta. Ex: grant [privilégio1. Um usuário que não possui o privilégio de DBA pode conceder permissões a outros usuários. É possível conceder mais de um privilégio a um usuário numa mesma linha de comando. CREATE TABLE.1: Permissões Agora que já conhecemos as permissões.

etc. Ou ainda podemos revogar mais de uma permissão de mais de um usuário no mesmo comando. 10 . mas somente se o primeiro estiver habilitado para conceder esse privilégio. 2ª Etapa • Tipos de dados. usuário2]. vamos aos testes! Faremos vários testes com diferentes usuários e permissões para ver na prática o que cada privilégio concede ao usuário. Um usuário que não tem o privilégio DBA pode tirar privilégio de outro usuário. Frente a esses fatos é importante saber os tipos de dados que podemos armazenar na tabelas. Assim como no comando grant podemos revogar mais de um privilégio de um ou mais usuários na mesma linha de comando. Isso porque quanto melhor específicas forem essas informações melhor será o rendimento do banco de dados. Para acabar com qualquer confusão. são extremamente prejudiciais ao desempenho do sistema. Para todo administrador do banco de dados ou desenvolvedor de sistemas em geral é extremamente importante saber quais os tipos de dados que serão armazenados. Esse foi um exemplo banal. campos inúteis. ou revoke [privilégio1] from [usuário1. Logo após faremos vários testes para tirar as permissões dos usuários e ver quem pode o quê. mas que é perfeitamente adequado à nossa realidade. não faz sentido algum eu definir esse campo para que o mesmo receba letras. Ex: revoke [privilégio1.revoke [privilégio] from [usuário]. usuário2]. privilégio2] from [usuário]. fazendo uma junção dos dois comandos demonstrados anteriormente: revoke [privilégio1. Quando criamos uma tabela no banco e definimos as colunas e as propriedades das colunas consumimos recursos tanto do banco de dados quanto do sistema. por isso espaços desperdiçados. privilégio2] from [usuário1. Vamos analisar juntos: se eu necessito de um campo para armazenar o CPF de um cliente. o que o obriga a possuir tal privilégio.

tem precisão de 1 a 38 no que se refere à casas decimais. Recomenda-se o uso deste campo sobre o char. Para campos de texto. Para compos que armazenarão dados binários (sons. etc. cujo comprimento é fixo. vídeos. Utilizado em campos do tipo data e hora. porém há casos onde na presença de caracteres especiais o varchar2 poderá aparecer desconfigurado. cujo tamanho máximo é de 2000 caracteres. Utilizado em campos do tipo data e hora. Ex: a palavra pendência pode ser exibida como “pend?encia” se for do tipo varchar2.2) onde o valor 12 referese a quantidade máxima de números antes das vírgula e o valor 2 refere-se a quantidade de casas decimais após a vírgula. Ex: VARCHAR2(50) Assim como os campos do tipo varchar2. 11 CHAR VARCHAR2 NVARCHAR2 DATE TIMESTAMP BLOB (binary large object) CLOB (character large object) . É aconselhável utilizá-lo quando os valores numéricos possam ser utilizados para cálculos.A seguir observamos uma tabela com os tipos de dados suportados Oracle XE: Tipo de dados NUMBER Descrição pelo Armazena números reais com sinal (negativos e positivos). imagens.) de tamanho variável até um limite máximo de 4GB Para campos de textos de tamanho variável com um tamanho máximo de 4GB. Em casos com esse se o nvarchar2 for utilizado esse erro não acontecerá. cujo maior valor possível é 4000 caracteres. o que não ocorre se ela for do tipo nvarchar2. Ex: CHAR(5) Para campos de texto de comprimento variável com tamanho máximo dimensionado por N. incluindo valores de milissegundos . determinado por “n”. muito útil para textos longos. Ex: NUMBER(12. os campos do tipo nvarchar2 também armazenam textos de comprimentos variáveis.

[Nome da tabela] é onde deve ser informado o nome de identificação da tabela. Pode ser comparado ao infinitivo ou ao NaN (Not a Number). [nome do campo 1]. [nome do campo n] [tipo] [valor padrão] [nulo?] ). que pode gerar erros ao realizar arredondamento. [nome do campo 2]. Necessita de menos memória e utiliza aritmética de máquina nativa . Apresenta o armazenamento da precisão binária. pois não é esse o objetivo do curso. Alto desempenho pois utiliza a aritmética de máquina nativa. • Criação e manipulação de tabelas. Ainda assim é armazenado com precisão binária – não deve ser utilizado em sistemas com necessidades financeiras de arredondamento. . [tipo] é o tipo de dados que cada coluna armazenará (os tipos possíveis foram mostrados na última tabela deste documento). Tabela 2. com cumprimento ao IEEE-754. . etc. manipulação e manutenção de tabelas. vamos partir para o próximo passo. Nosso foco a partir daqui será a criação.BINARY_FLOAT Número de ponto flutuante. de precisão simples.o que proporciona alto desempenho para sistemas de computação intensiva. . porém com precisão dupla. A sintaxe para criação de tabelas é a seguinte: create table [nome da tabela] ( [nome do campo 1] [tipo] [valor padrão] [nulo?]. são os nomes que serão atribuídos às colunas. Observemos a seguir o bloco de comandos da criação da nossa primeira tabela: 12 . Semelhante ao BINARY_FLOAT. Quando falamos de banco de dados relacional automaticamente estamos nos remetendo ao conceito de tabelas para armazenagem da massa de dados. [nulo?] é onde devemos informar se a tabela poderá conter valores nulos (vazios) ou não. [nome do campo 2] [tipo] [valor padrão] [nulo?].1: Tipos de Dados BINARY_DOUBLE Agora que já conhecemos os tipo de dados suportados pelo Oracle 10g Express Edition. tuplas. etc. Não detalharemos aqui o conceito de tabelas.

sua tela deverá estar semelhante à tela a seguir: Figura 2. Nos é exibida a seguinte tela: 13 . not null.create table teste ( codigo varchar2(10) nome varchar2(50) sexo char(1) default 'M' dt_nasc date idade number ). tanto faz. Se não houver nenhum erro no código. Vamos fazer um teste: digite no SQL*Plus o comando: desc teste.1: Create Table Teste Após criarmos uma tabela. podemos visualizar sua estrutura utilizando o comando DESCRIBE. not null. not null. null. null Após a digitação desse bloco de código devemos pressionar a tecla “Enter” para confirmar a criação da nossa tabela 'TESTE'. A sintaxe desse comando é a seguinte: desc [nome da tabela]. ou DESC.

Primeiramente veremos como alterar um campo em uma tabela. Mas por vezes somos obrigados a isso. alteração na regra de negócio da empresa. Após a digitação do código anterior.Figura 2. Utilizaremos a tabela criada anteriormente para esses exercícios. pressionamos a tecla “Enter” e nos deverá ser exibida uma tela semelhante à essa: 14 .2: Desc Teste 1 Por se tratar de um comando extremamente simples. é comum alterarmos as propriedades de seus campos. Atualmente ele está com o tipo varchar2(10) e nós iremos alterá-lo para number. ou por qualquer outro motivo. modificar também seu valor padrão e se poderá ser nulo ou não. Segue a sintaxe do comando para alteração das propriedades do campo: alter table [nome da tabela] modify [nome do campo] [tipo]. Perante essa situação. embora o ideal é que não seja necessário a alteração da estrutura da tabela. além de modificar o tipo do campo. Para realizarmos essa alteração utilizamos o código que segue: alter table teste modify codigo number. Após a criação de uma tabela. [nome do campo] é o campo que será alterado e [tipo] é a alteração que faremos nele. vamos conhecer os comando para que seja possível adicionar. dispensaremos explicações sobre ele. Vamos supor que nossa intenção seja alterar o campo código. Onde [nome da tabela] é o nome de identificação da tabela no banco. Podemos. remover e alterar as propriedades de um campo. seja por alterações na legislação do país.

3: Desc Teste 2 No exemplo anterior alteramos apenas o tipo de dado que o campo armazenará. Dando sequencia aos nossos testes.Figura 2. Agora utilize o comando desc para ver como ficou a estrutura da sua tabela. pressione “Enter” para confirmar a alteração. Ela deve estar parecida com a tabela ilustrada na sequencia: 15 . [nome do campo] é o campo que será adicionado. Ao digitar o comando acima. [tipo] é o tipo de dados que o campo armazenará e [nulo?] é a propriedade que indica se o campo poderá ser nulo ou não. Vamos supor que na tabela testes devemos criar um campo chamado rg. para armazenar o número desse documento dos indivíduos que serão cadastrados. veremos agora como adicionar um campo em uma tabela. Faça teste nos demais campos antes de prosseguir. mas é perfeitamente possível alterar o valor padrão desse campo assim como se ele poderá ou não ser nulo. Para realizamos essa alteração utilizamos o comando a seguir: alter table teste add (rg varchar2(12) null). Vale lembrar que podemos ainda definir o valor padrão do campo. Onde [nome da tabela] é o nome de identificação da tabela. A sintaxe para adição de campos em uma tabela é a seguinte: alter table [nome da tabela] add ([nome do campo] [tipo] [nulo?]).

Figura 2.4: Alter Table Teste Agora que já sabemos como alterar as propriedades de um campo e como adicionar campos em uma tabela, vamos aprender a apagar campos de uma tabela. A sintaxe desse comando é a seguinte: alter table [nome da tabela] drop column [nome do campo]; Onde [nome da tabela] é o nome de identificação da tabela e [nome do campo] é o campo que será excluído. Vamos apagar a coluna que acabamos de criar: rg. Digite o código: alter table teste drop column rg; Após a digitação do código anterior, sua tela do SQL*Plus deverá estar parecida com a tela seguinte:

16

Figura 2.5: Alter Table Teste Drop Column “MUITO CUIDADO AO EXCLUIR UM CAMPO, POIS TODOS OS REGISTROS QUE ESTIVEREM GRAVADOS NELE SERÃO AUTOMATICAMENTE EXCLUÍDOS SEM AVISO PRÉVIO!!!” Agora que já sabemos como alterar, incluir e excluir campos de uma tabela, vamos exercitar os conhecimentos até aqui adquiridos. Faça testes e veja pense em diferentes situações que possam ser aplicados os conceitos até aqui discutidos. • Relacionamento de tabelas.

Por mais tabelas que um banco de dados tenha, elas nunca poderão ser independentes umas das outras. Em banco de dados, vemos que as tabelas relacionam-se entre si, por meio de campos que nós definimos. A esses campos chamamos de chaves primárias e chaves estrangeiras. Não explicaremos aqui o conceito de chave primária e estrangeira pois não é o objetivo do curso. Partiremos do princípio que todos sabem, ao menos na teoria, o que é uma chave primária e o que é uma chave estrangeira. A seguir começaremos a discutir como tratar esses campos dentro do Oracle 10g Express Edition.

Tipos de Constraints.

A partir daqui trataremos de um assunto de extrema importância. Constraints são restrições que colocamos para determinados campos das tabelas do BD. Antes de definirmos os campos que receberão essas restrições, precisamos primeiro analisar cuidadosamente a regra de negócio envolvida, pois uma restrição errada pode complicar toda programação futura. Vamos estudar três tipos de constraints: primary ker, foreign key e check. Começaremos pela primary key. 17

Uma contraint do tipo primary key (chave primária), deve ser atribuída ao(s) campo(s) que deverá possuir valores únicos dentro da tabela. Para conhecermos a sintaxe desse comando utilizaremos a tabela que temos trabalhado até aqui, ou seja, a tabela teste. Observe que na tabela teste temos cinco campos: codigo, nome, sexo, dt_nasc e idade. O campo código foi colocado de propósito para que viesse a ser nossa chave primária. O campos CPF também poderia ser definido como chave primária, já que não existe CPF’s com números iguais, mas para facilitar utilizaremos o campo código. A sintaxe desse comando é a seguinte: alter table [tabela] add constraint [nome da constraint] primary key ([campo]); Onde [tabela] é o nome da tabela que será alterada, [nome da contraint] é o nome que daremos à nossa restrição e [campo] é o nome do campo que possuirá essa restrição. Agora que já conhecemos a sintaxe, podemos fazer o teste na tabela teste. Então digite no SQL*Plus o seguinte código: alter table teste add constraint cp_teste primary key (codigo); “Aqui demos o nome de cp_teste à constraint. Demos esse nome pelo seguinte motivo: cp são as iniciais de Chave Primária. É sempre bom estabelecer um padrão para criação de objetos dentro do banco de dados. Por isso utilizamos cp para sabermos que é uma chave primária, e logo em seguida, complementado o nome da nossa contraint, utilizamos o nome da tabela a qual pertence a constraint. E para melhor visualização separamos esse nome composto com o underline.” Confirme o comando anteriormente digitado pressionando a tecla “Enter”. Sua tela do SQL*Plus deverá estar semelhante a tela seguinte:

18

vamos aprender a sintaxe para criação de uma chave primária composta que é muito parecida com a sintaxe que vimos anteriormente. mostraremos a seguir como fazer uma chave primária composta: alter table teste add constraint [nome da constraint] primary key ([campo1. mas como isso é muito comum acontecer em um sistema. [campo2] [tipo] [default] [nulo?]. Como pode ser observado. campo2]). . [campoN] [tipo] [nulo?]. 19 . Vamos agora ver como criar uma chave primária no momento de criação de uma tabela. Até aqui vimos como criar uma chave primária em uma tabela que já existia no BD. No nosso caso isso não será necessário. Para que não fique nenhuma dúvida.Figura 2. apenas a última parte do comando sofre alteração.6: Alter Table Teste Add Constraint Podemos ainda criar uma chave primária composta por mais de um campo. A sintaxe para criação de uma chave primária no momento da criação da tabela segue: create table [tabela] ( [campo1] [tipo] [default] [nulo?]. . Quando criamos uma chave primária composta devemos apenas separar os campos que farão parte dela com uma vírgula. constraint [nome da constraint] PRIMARY KEY ([Campo]) ). .

sexo char(1) not null. vamos aprender a criar constraint do tipo chave estrangeira. Segue a sintaxe: 20 . Uma chave estrangeira é um campo que possuo em uma tabela e esse mesmo campo é chave primária em outra tabela. No exemplo que vimos criamos uma chave primária simples. constraint cp_aluno primary key (codigo) ). Confirme o comando pressionado “Enter”. Embora não haja segredos. Sua tela do SQL*Plus deverá estar parecida com a seguinte: Figura 2. Para isso vamos criar a tabela aluno. Vamos inverter a ordem que seguimos no aprendizado de chave primária. mas se desejássemos criar uma composta deveríamos apenas informar os campos que a receberiam. Abaixo segue o código para criação da tabela aluno: create table aluno ( codigo number(5) not null. Veremos primeiramente como criar uma chave estrangeira no momento da criação de uma tabela.Na verdade a única coisa que devemos fazer para criar uma restrição no momento da criação da tabela é fazer a junção dos dois comandos. separando-os com vírgula.7: Create Table Aluno Agora que sabemos como criar constraint do tipo chave primária. curso number(5) not null. nome varchar2(50) not null. vamos testar.

[campoN] [tipo] [nulo?]. cod_aluno e nota_final.create table [tabela] ( [campo1] [tipo] [nulo?]. Possuirá apenas três campos: cod_modulo. [campoE] [tipo] [nulo?]. create table nota_modulo ( cod_modulo number(5) not null. . . . cod_aluno number(5) not null. Sua tela do SQL*Plus deverá estar parecida com a seguinte: 21 . Como é apenas uma tabela que usaremos para estudo ela será o mais simples possível. Confirme o comando pressionando “Enter”. Vamos testar! Vamos agora criar a tabela nota_modulo. por meio do comando references. [campoE] é o campo que é chave primária na [tabelaE] e que nessa tabela que criamos será chave estrangeira. constraint [nome da constraint] foreign key ([campoE]) references [tabelaE]([campoE]) ). constraint ce_nota_modulo-aluno foreign key (cod_aluno) references aluno (codigo) ). Onde [nome da constraint] é o nome que daremos à nossa chave estrangeira. [campo1] [tipo] [nulo?]. nota_final number(2. Essa tabela registrará a nota final dos alunos por módulo.2) not null. A diferença principal do código de criação de chave estrangeira para chave primária é que na chave estrangeira temos que especificar o nome da tabela em que esse campo é chave primária e o nome desse campo na outra tabela.

. porém é necessário que elas armazenem o mesmo tipo de dados. [campoE2] [tipo] [nulo?]. . basta apenas nos acostumarmos com determinados padrões. Mesmo que a princípio pareça complicado.8: Create Table Nota_Aluno Na tabela que acabamos de criar o indicamos que o campo cod_aluno é chave estrangeira do campo codigo que está na tabela aluno.Figura 2. pois quando o sistema começa a ganhar volume esses padrões facilitam a vida de qualquer desenvolvedor. constraint [nome da constraint 1] foreign key ([campoE1]) references [tabelaE1] ([campoE1]). [campo1] [tipo] [nulo?]. [campoE1] [tipo] [nulo?]. No nosso caso criamos uma tabela com apenas uma chave estrangeira. . 22 . Definimos o nome da constraint chave estrangeira seguindo o mesmo padrão que usamos na definição da constraint chave primária. Usamos o prefixo 'ce' como sigla de Chave Estrangeira e separamos com underline esse prefixo do nome da tabela em que se encontra essa constraint. Na sequencia é exibida a sintaxe para esse caso: create table [tabela] ( [campo1] [tipo] [nulo?]. [campoN] [tipo] [nulo?]. Lembrando que seguir padrões é um bom hábito de programação. futuramente isso nos auxiliará muito. basta separar as constraints com vírgulas. mas e se quiséssemos criar uma tabela com várias constraints do tipo chave estrangeira? Muito simples. Note que chave primária e estrangeira não necessitam ter o mesmo nome.

Usaremos a tabela aluno para entendermos melhor esse conceito. Vamos ver agora como criar chaves estrangeiras para tabelas que já existem. ou até mesmo um número? Se esse campo não possuir nenhuma restrição ele aceitará o que o usuário inserir. Para finalizar essa parte de nossos estudos sobre contraints falta-nos conhecer o último tipo de constraint que estudaremos aqui: constraint check. [campo] é o campo que receberá a restrição e [condição] é o que pode ou não ser inserido no campo. Mas. Onde [tabela] é a tabela que possui o campo que receberá a constraint. [nome da constraint] é o nome que usaremos para identificar a constraint no banco de dados. Vamos conhecer e entender a sintaxe do comando que adiciona check's: alter table [tabela] add (constraint [nome da constraint] check ([campo] [condição])). Bem. e em vez de 'M' ou 'F' colocar uma outra letra qualquer. na verdade não há segredo nenhum. Segue a sintaxe: alter table [tabelaX] add (constraint [nome da constraint] foreign key ([campoY]) references [tabelaY] ([campoY])). Para entendermos melhor. Desse modo podemos criar quantas chaves estrangeiras forem necessárias no momento da criação das tabelas. Esse campo está definido como tipo char(1). Usando esses comandos podemos criar chaves estrangeiras sem maiores problemas. Mas e se o usuário errar na hora da digitação. Nessa tabela temos o campo sexo. Como é um erro perfeitamente possível acontecer (e acredite. Até o momento vimos como criar chaves estrangeiras no momento da criação das tabelas. para que o mesmo aceite apenas as letras 'M' ou 'F'. a única coisa que temos que fazer é usar o comando de criação de chave estrangeira dentro do comando alter table. só armazenará um caracter. ou seja. nada como vermos a aplicação na prática. afinal de contas. para que serve a restrição check? Essa constraint serve para limitar as informações que o usuário pode inserir em determinado campo.constraint [nome da constraint 2] foreign key ([campoE2]) references [tabelaE2] ([campoE2]) ). mais frequente do que se imagina) é necessário colocarmos uma restrição no campo sexo. Vejamos na prática! 23 . Definimos esse campo dessa maneira para que nele seja informado 'M' ou 'F'.

Confirme o comando pressionando “Enter”. Segue a sintaxe create table [tabela] ( [campo1] [tipo] [nulo?]. . criar uma restrição do tipo check no momento da criação da tabela. Seguindo a sintaxe do comando anterior podemos.Vamos adicionar uma restrição do tipo check no campo sexo da tabela aluno. . é extremamente simples fazer isso.9: Alter Table Aluno Add Constraint Vimos como com o comando anterior como adicionar uma constraint do tipo check em uma tabela já existente. sem maiores dificuldades. constraint [nome da constraint] check ([campo] [condição]) ). 24 . Até aqui aprendemos a criar restrições no banco de dados Oracle 10g XE. mas como nos outros tipo de constraints é possível inserir a restrição no momento da criação da tabela. E. [campoN] [tipo] [nulo?]. . Sua tela do SQL*Plus deverá estar parecida com a seguinte: Figura 2. A seguir o comando: alter table aluno add (constraint ck_sexo check (sexo in ('M'. 'F'))). assim como nos outros tipos de constraints. [campo1] [tipo] [nulo?].

A seguir o comando: alter table aluno drop constraint ck_sexo_aluno. 25 . Confirme o comando pressionando “Enter”. Caso a restrição seja criada de maneira errada. o qual a sintaxe é a que segue: alter table [tabela] drop constraint [nome da constraint]. Onde [tabela] é o nome da tabela que possui a constraint e constraint] é a restrição em si.Veremos agora como apagar essas restrições. pois são fundamentais para qualquer profissional que deseja trabalhar com o banco de dados Oracle. independente da versão do mesmo. Vamos testar! Apagaremos a restrição do tipo check que criamos anteriormente na tabela aluno.10: Alter Table Aluno Drop Constraint Finalizamos aqui nosso aprendizado sobre contraints. ou mesmo que muda alguma situação e haja a necessidade de apagar uma restrição usamos um comando muito simples. Sempre fique atento à essas restrições. Sua tela do SQL*Plus deverá estar parecida com a seguinte: [nome da Figura 2.

etc. Sua tela do SQL*Plus deverá estar como a seguinte: 26 .. Para essa tarefa criaremos a tabela cidades com as seguintes especificações: Tabela: cidades CAMPO codigo nome estado pais_regiao TIPO number varchar2 char TAMANHO 5 30 2 NULO Não Não Não Sim varchar2 20 Tabela 2. ou seja. vamos inserir os dados. [valor2]. são os nomes das colunas que receberão valores e [valor1]. Onde [tabela] é o nome da tabela que receberá os dados [campo1]..... são as informações que inseriremos. ‘SP’. ‘Ourinhos’. Digite a seguinte linha de comando: insert into cidades (codigo. nome.• Manipulação de dados com SQL Até o momento vimos como formatar e organizar tabelas e campos. Note que os dados que preencherão os campos do tipo char e varchar2 estão entre aspas simples. campoN]) values ([valor1. etc. Sempre que formos inserir números reais.. Pra início de nossos estudos veremos como inserir dados em uma tabela. estado.. E quando formos inserir dados do tipo de texto ou data. Mas até o momento não trabalhamos com dados. Após digitar o comando acima confirme pressionando a tecla “Enter”. valor2. valorN]). Vamos agora inserir valores na tabela que acabamos de criar. no lugar da vírgula devemos colocar o ponto. devemos colocar os valores entre aspas simples. com as informações que precisaremos gerenciar. pois a configuração de números reais do Oracle 10g XE segue o padrão dos Estados Unidos. pais_regiao) values (1. ‘Sudeste’). [campo2]. campo2.. A sintaxe para inserção de dados na tabela é a seguinte: insert into [tabela] ([campo1.2: Tabela Cidades Após a criação dessa tabela.

Figura 2.11: Insert Into Cidades Para visualizarmos os dados inseridos utilizaremos o comando mais simples em SQL. Digite no SQL*Plus o comando a seguir: select * from cidades; Após digitar esse comando confirme pressionando a tecla “Enter”. Sua tela deverá estar semelhante a seguinte:

Figura 2.12: Select Cidades 1 Note uma peculiaridade: foi reservado um espaço muito pequeno para o campo estado, fazendo com que o nome do mesmo não apareça inteiro.

27

É interessante que visualizemos o nome dos campos completos, assim como os dados contidos nos mesmos. Para isso vamos aprender um comando muito simples, mas que é muito interessante e útil nesses casos. Por se tratar de um comando simples, não vamos analisar a sua sintaxe, mas veremos como ele funciona diretamente na prática. Digite no SQL*Plus o seguinte comando: column estado format a8; O número ‘8’ é o espaço que será reservado para a exibição da coluna estado. Confirme o comando pressionando a tecla “Enter”. Neste momento não é percebida nenhuma alteração; então digite novamente o comando SQL que digitamos para visualizar os dados da tabela.

Figura 2.13: Column Format Sua tela do SQL*Plus deverá estar como a seguinte: Agora que já sabemos inserir dados na tabela e como formatar o tamanho das colunas para melhor visualizá-las, vamos aprender a atualizar dados que já estão inseridos. Para isso vamos inserir mais uma linha de dados na tabela cidades. Insira os dados exibidos a seguir: Tabela: cidades CAMPO codigo nome VALOR 2 Assis

28

estado

SP

pais_regiao Sudeste Tabela 2.3: Cidade 2 Após a inserção desses dados, digite um comando SQL de forma que todos os dados da tabela cidades sejam visualizados. Sua tela do SQL*Plus deverá estar semelhante a seguinte:

Figura 2.14: Select Cidades 2 Vamos agora alterar a última linha inserida. Vamos supor que a cidade Assis não era para ser cadastrada com o código número 2, em vez disso deveria ser cadastrada com o código número 5. Em vez de apagar toda a linha, alteraremos apenas o campo necessário. Para isso vamos usar o comando update. Então digite no SQL*Plus o comando a seguir: update cidades set codigo = 5 where codigo = 2; Após a digitação desse comando pressione a tecla “Enter” para confirmar. Se a operação for realizada com sucesso, sua tela do SQL*Plus deverá estar parecida com a seguinte:

29

15: Update Cidades Agora digite um comando SQL que possibilite visualizar todos os registros da tabela cidades. separando-os com uma vírgula. [campo2] = [valor2]. Sua tela do SQL*Plus deverá estar semelhante a seguinte: Figura 2. [campoN] = [valorN] where [campoX] = [condiçãoX]. apenas teríamos que informar os campos a serem atualizados... . . aprenderemos agora a excluir linhas das tabelas do banco de dados.Figura 2.16: Select Cidades 3 Note que apenas a coluna código teve seu valor alterado. Por fim. A seguir a sintaxe para podermos entender melhor: update [tabela] set [campo1] = [valor1]. 30 . Se desejássemos alterar mais de um campo num único comando update.

Para isso utilizamos o comando delete.17: Delete Cidades Digite um comando SQL que possibilite visualizar todos os registros da tabela cidades. Figura 2. Sua tela do SQL*Plus deverá estar como a seguinte: Figura 2. Para tal. utilizaremos o seguinte comando: delete from cidades where codigo = 5. Vamos então apagar a linha da cidade Assis da nossa tabela cidades.18: Select Cidades 4 Sua tela do SQL*Plus deverá estar assim: 31 . Após a digitação do código anterior. pressione a tecla “Enter”.

que cancela todas as modificações realizadas na sessão atual do banco de dados. • Commit e Rollback. Em toda inserção. Assim como temos o comando commit confirmar todas as modificações no banco de dados. utilizamos o comando commit. se iniciarmos uma sessão e nessa sessão fizermos várias alterações nos dados e sairmos da sessão sem dar um commit tudo o que realizamos será perdido. Já o comando rollback quando informado por nós.Finalizamos assim nosso aprendizado sobre inserção. é necessário confirmar a operação realizada. Para tal. Digite um comando select que lhe permita ver todos os dados da tabela cidades. Sua tela do SQL*Plus deverá estar assim: Figura 2. Sua tela do SQL*Plus deverá estar assim: 32 . Ou seja. O comando commit confirma todas as transações realizadas no banco de dados. Digite um comando select que lhe permita ver todos os dados da tabela cidades. atualização e exclusão de dados no banco de dados.19: Select Cidades após Delete Após a confirmação da exclusão digite no seu SQL*Plus: rollback. Vamos testar! Exclua o registro da cidade Ourinhos na tabela cidades. cancela todas as alterações realizadas após o último commit. temos também o comando rollback. alteração ou exclusão de dados.

Digite na tela do SQL*Plus o seguinte comando: 33 . na verdade. • “Rotulando” campos das tabelas. Mas. Vamos testar! No nosso teste continuaremos utilizando a tabela cidades. ou seja.Figura 2. e usá-los é um ótimo hábito para todo profissional que trabalha com banco de dados. a estrutura da tabela dentro do banco de dados permanece a mesma. Para utilizar o comando commit basta digitá-lo como aparece a seguir sempre que se realizar alguma alteração no banco: commit. a coluna pais_regiao aparece exatamente o nome dela na íntegra. Sempre que qualquer alteração for realizada no banco de dados. para garantir que essa alteração foi salva. Antes de vermos isso.20: Rollback Note que o rollback desfez a modificação que havia sido realizada anteriormente. A partir de agora. Para rotularmos campos é muito simples. commit e rollback são indispensáveis. o campo não tem seu nome alterado. Embora sejam muito simples. veremos como “rotular” campos. veremos como fazer o comando select que vinhamos fazendo até o momento de forma diferente. Note que quando efetuamos um comando select. Rotular campos nada mais é que mudar o nome dos campos para melhor visualizá-los. apenas é exibido um nome diferente quando executamos um comando select. deve-se confirmar com o comando commit. Vamos mudar esse nome (somente para efeito de visualização).

Já que fizemos isso. escolhemos digitar o nome dos campos. pais_regiao from cidades. estado. nome. digitaremos novamente o comando anterior. estado. nome. que indica que queremos trazer o resultado de todos os campos.21: Select Cidades 5 Veja que o resultado que obtivemos é o mesmo resultado do comando quando usamos o asterisco. Sua tela do SQL*Plus deverá estar semelhante a seguinte: Figura 2. mas dessa vez com uma diferença que está destacada: select codigo. Observe a diferença! No topo da coluna temos o nome regiao no lugar de pais_regiao: 34 . pais_regiao as regiao from cidades. Isso porque em vez de usar o asterisco.select codigo.

Então digite o seguinte comando: select codigo.22: Select com Rótulo Se desejarmos colocar um rótulo com duas ou mais palavras.Figura 2. temos que utilizar as palavras entre aspas duplas. Vamos colocar um rótulo no campo nome. pais_regiao from cidades. Vamos à um exemplo. estado. O rótulo será NOME DA CIDADE. Sua tela do SQL*Plus deverá estar parecida com a seguinte: Figura 2. nome as “NOME DA CIDADE”.23: Select com Rótulo 2 35 .

Sua tela deverá estar como a seguinte: Figura 2. vamos sair da teoria e vamos à prática! Observe com atenção a parte do código que está em destaque. Ainda é possível colocar entre os campos textos que o desenvolvedor achar necessário. Além de concatenarmos esses campos. Para que tudo isso não fique muito abstrato. Concatenar nada mais é que unir duas colunas. a concatenação é utilizada para melhor visualizar as informações. seja por necessidade. Digite no SQL*Plus o seguinte comando SQL: 36 . conheceremos um outro recurso que facilita a visualização de dados no SQL*Plus: a concatenação de colunas. Utilizaremos para essa fase de nosso aprendizado a tabela cidades. Vejamos na prática! Digite no SQL*Plus o código a seguir: select codigo. e esses textos devem estar entre aspas simples. Nessa tabela vamos concatenar os campos nome. vamos colocar um rótulo que servirá para todos eles. A partir desse ponto. para que os dados sejam melhor visualizados.24: Concatenando Campos Como mencionamos anteriormente. Mas no último exemplo tudo o que conseguimos foi fazer uma tremenda confusão entre os campos. Quando desejamos realizar uma concatenação devemos usar o símbolo pipe duas vezes consecutivas (||). • Concatenando colunas. estado e pais_regiao. seja por capricho do desenvolvedor.Finalizamos assim nosso estudo sobre rótulos de campos das tabelas do banco de dados. nome || estado || pais_regiao as local from cidades.

Para que isso não ocorra podemos criar scripts SQL's e salvá-los em um diretório qualquer de nosso computador. Analisemos a seguinte situação: imaginemos que estamos inserindo dados por meio do SQL*Plus. nome ||'.select codigo. A partir daqui iniciaremos nossos estudos sobre scripts SQL's.Regiao: '|| pais_regiao as local from cidades. O resultado na sua tela do SQL*Plus deverá estar semelhante à seguinte: Figura 2. Continuaremos usando a tabela cidades. é útil em determinadas situações. pois esse assunto é muito simples. Vamos entender melhor. pois não teríamos tempo suficiente para executar o comando commit e perderíamos todo o nosso trabalho. utilizando o comando já conhecido insert. '|| estado ||' . Mesmo sendo simples. pois ele é pode te auxiliar posteriormente. Seria uma tragédia. No nosso exemplo utilizaremos o comando insert. E vamos pensar grande! E se estivéssemos cadastrando uma carga de dados de 20 clientes e no 16º cadastro acabasse a energia ou acontecesse algum incidente que forçasse o desligamento de nosso computador. Portanto vamos inserir uma nova cidade na nossa tabela. 3ª Etapa • Criação e execução de scripts SQL.25: Concatenando Campos 2 Assim fica bem melhor! Com relação à concatenação não há mais nada a estudar. portanto não menospreze esse tópico. Segue a tabela dos dados que vamos inserir: Tabela: cidades CAMPO VALOR 37 .

tal como seria feito no SQL*Plus. insert. Então. Após digitar o comando insert salve o seu arquivo . Vale ressaltar que todo script que criarmos deverá ter a extesão .sql.1: Iniciando Script Assim que pressionarmos “Enter” será aberta uma janela do Bloco de Notas. após digitar o código anterior confirme pressionando o “Enter”.sql. O resultado deverá ser o seguinte: Figura 3. Vamos entender: a palavra edit indica que iniciaremos um novo script. utilizando o comando dentro de um script SQL. pois realizaremos essa tarefa de forma diferente.sql. Para criarmos o script digite no seu SQL*Plus o seguinte código: edit C:\insert. 38 .codigo nome estado 3 Florianoplois SC pais_regiao Sul Tabela 3. Agora na janela do Bloco de Notas digite o comando para inserção dos dados que estão na tabela anteriormente informada. C:\ é o diretório escolhido onde o script será salvo. Confirme clicando na opção Sim.sql é o nome que demos ao nosso script.1: Cidade 3 Por enquanto não insira as informações.

sql. Agora faremos o seguinte: carregaremos o script criado. apenas criamos o script. O resultado deverá estar parecido com o que segue: 39 . Até o momento não inserimos nada na tabela cidades. Digite a seguinte linha de comando no SQL*Plus: start C:\insert.Feito isso feche a janela do Bloco de Notas. Automaticamente voltamos à janela do SQL*Plus.2: Executando Script Digite o comando SQL que possibilite a visualização de todos os registros da tabela cidades. Veja que é exibida a mensagem de confirmação de inclusão do registro: Figura 3.

sql. Exemplo: Figura 3.3: Select Cidades 6 Qualquer comando SQL pode ser gravado num script. tudo vai depender da necessidade do desenvolvedor. Vamos agora visualizar o diretório onde salvamos nosso script. Vá até o diretório que você escolheu e encontre o arquivo .Figura 3.4: Diretório do Script 40 .

Assim como o sinal de 'maior' e 'igual'. é a junção do sinal de 'maior' com o sinal de igual 'igual' (sempre nessa ordem). temos uma tabela com os operadores lógicos que abordaremos nesse curso: Operador lógico = Nome igual Descrição Esse é o operador básico de qualquer linguagem de programação ou de consulta. ou seja. No nosso parecido contexto pode ser traduzida como 'parecido'. O between retornará inclusive os parâmetros informados. Usamos o between quando queremos retornar um intervalo de valores. Aqui temos o sinal de 'diferença'. então informamos o valor mínimo e o valor máximo como parâmetros. essa sim é uma linguagem de programação da Oracle baseada em SQL. caso os mesmos existam no campo que estivermos trabalhando. O sinal de 'maior'. Ele é a junção dos igual símbolos de 'menor' e 'igual' (sempre nessa ordem). é representado apenas pelo seu símbolo.Encerramos assim nosso aprendizado sobre criação e execução de scrips SQL. o operador or nos permite comparar uma ou mais colunas com um ou mais valores. Portanto aprender o básico de SQL é fundamental para que posteriormente não tenhamos maiores dificuldades em PL/SQL. Mais um assunto simples e que é extremamente importante! • Operadores lógicos em SQL. Usamos o in quando queremos comparar o valor de uma coluna com vários valores. É reprensentado pela junção do sinal de 'maior' e 'menor'. Sua representação. Utilizamo-os quando trabalhamos com mais de uma cláusula de comparação. Vale lembrar que SQL não é uma linguagem de programação. assim como o de 'igual'. conheceremos os operadores lógicos da linguagem SQL. A partir desse tópico. Como o próprio nome diz. e ou O operador and é um dos mais utilizados em consultas SQL's. A seguir. deiferente de algumas linguagens de programação. <> > < >= <= AND OR diferente maior menor 'Maior ou igual' também segue o modelo que vimos até o maior ou momento. Porém. menor ou 'Menor ou igual' também não foge à regra. Utilizamos esse operador quando queremos informar uma 41 . veremos a PL/SQL. o sinal de 'menor' também é representado pelo seu símbolo. é simplesmente o sinal de 'igual'. e sim uma linguagem de busca que é padrão nos diversos bancos de dados existentes. mais adiante. BETWEEN entre IN LIKE em A palavra like em inglês possui algumas traduções.

Ou seja. A seguir a tabela dos dados que devemos inserir (se optar salve os comando de inserção em scrips SQL): Tabela: cidades CAMPO codigo nome estado VALOR 4 São Paulo SP pais_regiao Sudeste Tabela 3.3: Cidade 4 Tabela: cidades CAMPO codigo nome estado VALOR 5 Belo Horizonte MG pais_regiao Sudeste Tabela 3. vamos inseri na nossa tabela cidades mais alguns registros.sequencia de caracteres especificos. Tabela 3.4: Cidade 5 Tabela: cidades CAMPO codigo nome estado VALOR 6 Goiania GO pais_regiao Centro-oeste Tabela 3.5: Cidade 6 Tabela: cidades 42 . Para isso. NOT O operador not é utilizado sempre em conjunto com outro operador lógico (normalmente com o in ou like). mas na prática veremos que ele é bem mais simples do que parece. não usamos ele quando queremos obter o resultado contrário de determinda operador. Na teoria é complicado entendermos como funciona o like. que normalmente é utilizado em conjunto com o símbolo %.2: Operadores Lógicos Vejamos na prática algumas situações em que podemos utilizar os operadores descritos acima.

CAMPO codigo nome estado VALOR 7 Recife PE pais_regiao Nordeste Tabela 3. Se houver algum erro fique na liberdade de corrigi-lo. Vamos imaginar que não sabemos a qual cidade está atribuído o código 7. Sua tela do SQL*Plus deverá estar como a seguinte: 43 . Após digitar o comando anterior pressione “Enter” para confirmar.7: Cidade 8 Após a inserção. Digite no SQL*Plus o comando seguinte: select * from cidades where codigo = 7. digite um comando SQL de forma que seja possível visualizar todos os dados da tabela cidades.6: Cidade 7 Tabela: cidades CAMPO codigo nome estado VALOR 8 Assis SP pais_regiao Sudeste Tabela 3. Vamos então elaborar um comando SQL para retornar esse resultado.

Confirme pressionando “Enter”. necessitamos informar o texto entre aspas simples. Para isso digite o comando abaixo: select * from cidades where pais_regiao <> 'Sudeste'.5: Select Cidades Codigo 7 Neste exemplo vimos como utilizar o operador lógico 'igual'.Figura 3. menos as da região Sudeste. assim como para inserí-los. No nosso próximo exemplo. Sua tela deverá estar semelhante a seguinte: 44 . utilizaremos o operador lógico 'diferente'. Note que quando vamos fazer comparação com campos de texto. Vamos imaginar que queremos visualizar todas as cidades.

porém no lugar do sinal 'maior' utilizaremos o 'menor': 45 . você terá na tela o seguinte resultado: Figura 3. Vamos fazer uma consulta que retorne apenas os códigos maiores que 6.7: Oprador Lógico “Maior” No nosso próximo exemplo vamos ver o resultado do mesmo comando anteriormente digitado. Após pressionar o “Enter”.6: Operador Lógico “Diferente” Vamos a mais testes! Agora veremos a funcionalidade do operador 'maior'. que diga-se de passagem. não tem nenhum segredo. Segue o código: select * from cidades where codigo > 6.Figura 3.

select * from cidades where codigo <= 6. Segue os exemplos para os dois casos: select * from cidades where codigo >= 6.8: Operador Lógico “Menor” Veja que tanto na utilização dos sinais 'maior' e 'menor'. o valor que é comparado (no nosso caso o número 6) não é exibido. Observe sua tela. devemos utilizar o sinal de 'maior' ou 'menor' juntamente com o sinal de 'igual'. Em seguida as telas que deverão ser exibidas. respectivamente: 46 .select * from cidades where codigo < 6. ela deve estar semelhante à seguinte: Figura 3. Para que ele seja exibido.

vamos a um exemplo. Sem mais delongas. Para isso. veremos a funcionalidade do and.9: Operador Lógico “Maior ou Igual” Figura 3.Figura 3.10: Operador Lógico “Menor ou Igual” No nosso próximo exemplo. Digamos que nossa intenção seja retornar no SQL*Plus as cidades que pertencem a região sudeste e que possui o código maior que 4. podemos executar um comando SQL como o seguinte: select * from cidades where pais_regiao = 'Sudeste' and codigo > 4. O resultado deverá estar parecido com o seguinte: 47 .

Vamos usar o mesmo exemplo anterior.11: Operador Lógico “And” Vejamos agora o funcionamento do operador or.12: Operador Lógico “Or” Vamos agora conhecer o between. mas substituiremos o and pelo or e o 4 pelo 7. Digete no seu SQL*Plus: select * from cidades where pais_regiao = 'Sudeste' or codigo > 7. Como já foi dito.Figura 3. O resultado deverá ser o seguinte: Figura 3. Então façamos um comando SQL de tal forma que ele nos retorne as cidades que possuem códigos entre 3 e 5. precisamos informar um valor inicial e um final para que o between traga todos os valores que ele encontrar que estiverem entre os valores informados. 48 .

13: Operador Lógico “Between” Note que os valores 3 e 5 (os que usamos como parâmetros) também são exibidos. na verdade. Vamos supor que nossa necessidade seja buscar cidades de código aleatórios. vamos ao exemplo. Ele. 8. veremos agora como funciona o operador in. 3. diferentemente do 'igual'. porém. Dando sequencia aos nossos estudos. 5). tem a mesma funcionalidade do operador 'igual'. Segue o comando SQL que nos permite realizar essa busca: select * from cidades where codigo in (1. no in podemos comparar vários valores ao mesmo tempo.Segue o comando a ser digitado: select * from cidades where codigo between 3 and 5. 6. Para entendermos melhor. Observe: 49 . Para isso faremos uso do in. Observe o resultado: Figura 3.

Podemos. Quando colocamos o % antes dos caracteres indicamos que não importa o que há antes dos caracteres informados. Para isso podemos digitar o seguinte comando: select * from cidades where pais_regiao like '%este'. Quando colocamos depois da sequencia de caracteres.14: Operador Lógico “In” Veja que o select que elaboramos nos retornou os códigos que informamos dentro do parênteses do in. ainda. O próximo tópico que abordaremos faz referência ao operador like. ou ainda antes e depois. indicamos que esses caracteres podem estar entre qualquer palavra ou texto. Vamos supor que queremos trazer todas as cidades que ficam em regiões terminadas com 'este'. e quando colocamos o % antes e depois. informamos que não importa o que vem depois. devemos informar uma sequencia de caracteres. Vejamos na prática! Primeiramente vamos ver um exemplo do uso do like com o símbolo % antes da sequencia de caracteres. Vale ressaltar que os valores sempre deverão estar entre parênteses na utilização do in. utilizar o símbolo % antes ou depois dessa sequencia. Toda vez que utilizarmos o like. Veja: 50 .Figura 3.

51 .15: Operador Lógico “%Like” Vamos a outro exemplo! Dessa vez vamos utilizar o like para retornar os estados que começam com a letra 's'. Então digite o seguinte comando: select * from cidades where estado like 'S%'. Observe o resultado: Figura 3. veremos como utilizar o like entre os símbolos de %.16: Operador Lógico “Like%” E por último.Figura 3.

Digite o comando a seguir: select * from cidades where codigo not in (1. Digite o comando que segue: select * from cidades where nome like '%e%'. uniremos ele ao in e ao like. o operador not. 6. Primeiramente vejamos o not com o in. vamos buscar as cidades que possuem a letra 'e'.Para esse exemplo. 8. vermos. 3. por fim. Quando utilizamos o like entre %. 5). Eis o resultado: 52 . Vamos utilizar o mesmo exemplo que utilizamos quando estudamo o in. Nos exemplos que vamos usar. O resultado deverá ser semelhante ao seguinte: Figura 3. não importa se o que buscamos encontra-se no início. meio ou fim da palavra.17: Operador Lógico “%Like%” Para finalizarmos essa parte do estudo.

19: Operador Lógico “Not Like” 53 . A mesma coisa acontece com o like.18: Operador Lógico “Not In” Compare o resultado do in com o resultado do not in. É fácil perceber que a adição do not fez com que o in retornasse exatamente o contrário do que retornou quando o mesmo não sofreu alteração do not.Figura 3. só que dessa vez utilizando o not like: select * from cidades where nome not like '%e%'. Observe o resultado: Figura 3. Por isso no exemplo seguinte usaremos o mesmo exemplo que usamos no último like que vimos.

Usaremos duas funções de ordenação: order by e order by desc. Nesse momento. depois a segunda e assim sucessivamente. • Funções de ordenação. Podemos realizar a ordenação utilizando uma ou mais colunas. O resultado deverá estar parecido com o seguinte: Figura 3. ou seja. Neste tópico veremos como ordenar os dados em um comando select. vamos ordenar as cidades por ordem alfabética. Vale lembrar que esses dados podem ter a ordem alterada apenas na visualização. Note que a parte em destaque é onde informamos o order by. no banco de dados eles continuam na mesma ordem em que foram gravados. especificamente o Oracle. sendo que o Oracle ordenará a primeira. A função order by serve para ordenar determinados dados de uma coluna em ordem alfabética ou numérica. Vejamos na prática! Digite um comando select de modo que sejam exibidas todos os registros da tabela cidades. Após o order by devemos informar a coluna que será a base da nossa ordenação.Dessa forma finalizamos essa parte de nosso estudo. Pressione o “Enter” para ver o resultado. A princípio a utilidade desses operadores pode parecer pouco necessária. pois esse conhecimento e o domínio do mesmo é básico para qualquer profissional que desejar trabalhar com banco de dados. Mas não se deixe enganar.20: Função “Order By” 54 . Digite o seguinte comando: select * from cidades order by nome.

Por isso o desc. Modificaremos a coluna base de ordenação. Digite no SQL*Plus (ou em um script SQL. nada complicado. Agora vamos ver a funcionalidade da função order by desc. e não exibiremos o código da cidade. vamos realizar mais um teste com o comando order by. Isso acontece sem que a coluna estado seja desordenada. pais_regiao from cidades order by estado. isso porque quando informamos a coluna nome após a coluna estado. Visualize o resultado. Observe o resultado. respectivamente nessa ordem. há algumas diferenças com relação a aplicação do order by desc. Embora o conceito seja simples.Vamos agora refazer o último comando que digitamos. se preferir) o seguinte comando: select nome. ordenar a coluna nome. pais_regiao from cidades order by estado. 55 . nome. Dessa vez vamos usar duas colunas base para nossa ordenação. a coluna estado e a coluna nome. estado. Não há muito o que explicar sobre o order by desc. Digite o comando seguinte: select nome. ele deverá estar parecido com o exibido a seguir: Figura 3. estado. Se colocássemos um terceira coluna para ordenação a mesma seria ordenada após as duas primeiras e a ordenação dela respeitaria suas duas antecessoras. mas que vale a pena a gente ver. que será a coluna estado. uma vez que ele é o order by invertido.21: Select com Order By Por fim. passamos para o Oracle a função de ordenar a coluna estado e após a ordenação desta estar concluída. que pode ser entendido como decrescente. Veja que as últimas três linhas ficaram em ordem diferente com relação ao último select que tínhamos realizado.

Então digite o primeiro exemplo usado no order by. Veja o resultado: Figura 3. O resultado deverá estar semelhante ao seguinte: 56 .22: Select com Order By Desc Agora vamos utilizar o segundo exemplo que fizemos no order by. Observe que a palavra desc não fica logo em seguida ao order by. pais_regiao from cidades order by estado desc. mas sim após o campo que queremos que seja ordenado de forma decrescente. porém dessa vez usando o order by desc: select * from cidades order by nome desc. estado.Utilizaremos os mesmos exemplos que utilizamos no order by para que fique mais fácil visualizar a diferença entre eles. Digite no SQL*Plus o seguinte comando: select nome.

A primeira será elaborar uma consulta que nos retorne o nome da cidade.23: Select com Order By Desc 2 Quando trabalhamos com mais de uma coluna base no order by desc. pais_regiao from cidades order by estado desc. nome. temos que tomar cuidado com um aspecto: se quisermos que todas as colunas base fiquem na ordem decrescente temos que colocar a palavra desc após cada um delas. estado.Figura 3. Observe o resultado: 57 . Para realizarmos tal tarefa. Vamos analisar três situações. a qual estado pertence e em qual região do país esse estado está. utilizamos um comando SQL da seguinte maneira: select nome. respectivamente. O estado deve estar ordenado de forma decrescente. tudo isso ordenando por estado e pelo nome da cidade.

nome desc.Figura 3. Veja e compare a diferença entre esse e o último comando SQL que realizamos: Figura 3.24: Select com Order By Desc 3 A segunda situação é idêntica a primeira. Para tal digite o código: 58 .25: Select com Order By Desc 4 Nossa última situação será idêntica as duas primeiras. pais_regiao from cidades order by estado. mas dessa vez ordenaremos nossas duas colunas bases de forma decrescente. ordenaremos a coluna nome. estado. Então digite o seguinte código SQL: select nome. porém em vez de ordenarmos a coluna estado de forma decrescente.

Segue as especificações das tabelas: Tabela: vendas CAMPO codigo cod_vendedor data valor_total TIPO number number date number 5. vamos criar duas tabelas e inserir alguns dados nas mesmas. Por esses motivos vamos começar a estudar esse assunto. nome desc.2 Tabela 3. pois na estrutura do banco elas permanecem intactas. • SELECT com mais de uma tabela. as tabelas relacionam-se entre si. e essas ficam armazenadas em tabelas.select nome. Antes de começarmos a fazer testes e estudos de situações.26: Select com Order By Desc 5 Dessa forma podemos finalizar nossos estudos sobre ordenação de colunas no Oracle 10g. Como vimos no início desse documento.8: Tabela Vendas TAMANHO 5 5 NULO Não Não Não Não 59 . Logo. estado. Lembrando que as mesmas são ordenadas apenas para efeito de visualização. pais_regiao from cidades order by estado desc . Veja o que acontece: Figura 3. realizar selects envolvendo mais de uma tabela é uma tarefa comum e necessário. um banco de dados é um lugar onde armazenamos diversas informações. Como já vimos também.

00 Tabela 3.00 Tabela 3. pois se fossemos analisar mais a fundo ambas teriam mais colunas.10: Venda 1 Tabela: vendas CAMPO codigo cod_vendedor data VALOR 2 2 31/03/10 valor_total 210. vamos inserir alguns dados para que possamos trabalhar com eles.12: Venda 3 Tabela: vendas 60 . Antes de mais nada. Insira na tabela vendas: Tabela: vendas CAMPO codigo cod_vendedor data VALOR 1 3 01/04/10 valor_total 465.00 Tabela 3.Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc cpf TIPO number varchar2 char date number 11 Tabela 3.11: Venda 2 Tabela: vendas CAMPO codigo cod_vendedor data VALOR 3 2 05/04/10 valor_total 90.9: Tabela Vendedores TAMANHO 5 50 1 NULO Não Não Não Sim Sim São duas tabelas bem enxutas.

15: Vendedor 1 Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc VALOR 2 Amelia F 17/09/79 cpf 19847125943 Tabela 3.CAMPO codigo cod_vendedor data VALOR 4 1 10/04/10 valor_total 760.14: Venda 5 Agora insira na tabela vendedores: Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc VALOR 1 Zezao M 02/07/75 cpf 19837651294 Tabela 3.13: Venda 4 Tabela: vendas CAMPO codigo cod_vendedor data VALOR 5 1 15/04/10 valor_total 175.16: Vendedor 2 Tabela: vendedores CAMPO cod_vendedor nome VALOR 3 Mika 61 .00 Tabela 3.00 Tabela 3.

O resultado deverá ser parecido com o que segue: 62 .19: Vendedor 5 Após realizar a inserção da massa de dados execute um comando SQL de forma que seja possível visualizar todos os registros da tabela vendas.18: Vendedor 4 Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc VALOR 5 Mel F 10/06/85 cpf 92845840662 Tabela 3.17: Vendedor 3 Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc VALOR 4 Guigo M 28/01/69 cpf 93840956571 Tabela 3.sexo data_nasc F 25/11/82 cpf 47669387993 Tabela 3.

Porém como elaborar 63 . Ele está sendo exibido em forma de número hexadecimal. Se usarmos ferramentas mais potentes de consulta ao banco de dados Oracle.Figura 3. imaginemos o seguinte caso: necessitamos saber o nome dos vendedores que fizeram vendas no mês de abril. A essa associação damos o nome de join.27: Select Vendas Em seguida execute um comando para retornar todos os registros da tabela vendedores. Ora. Logo temos que associar essas duas tabelas pelo campo que elas tem em comum: cod_vendedor. Não se preocupe com isso pois quando o valor numérico é muito extenso o SQL*Plus o trata dessa forma. o nome dos vendedores está na tabela corretores e as vendas estão cadastradas na tabela vendas. veremos que os dados estão cadastrados corretamente.28: Select Vendedores Observe o campo cpf. O resultado deverá ser semelhante ao seguinte: Figura 3. Internamente no banco os números estão gravados tal qual as informações que passamos para ele. e no caso de campos numéricos a função column format não é eficiente. Agora que já temos os dados inseridos.

um comando select com duas tabelas que possuem o determinado campo com o mesmo nome? A resposta para essa questão é simples: damos “apelidos” às tabelas.data between '01/04/2010' and '30/04/2010'.cod_vendedor and x.29: Select com Join Lhe parece complicado? 64 . vendedores z where x. mesmo se houver outro campo com o mesmo nome na tabela que fizer parte do relacionamento. para que o banco de dados saiba qual campo é de determinada tabela.nome from vendas x. O resultado deverá ser o seguinte: Figura 3. Vejamos isso na prática! Para a solução do problema acima podemos elaborar um comando SQL semelhante ao seguinte: 1 2 3 4 select z.cod_vendedor = z.

Amarramos a tabela vendedores com a tabela vendas. Ou seja. Quando digitamos o comando da linha 1. separando eles com um ponto.Figura 3. os caracteres z. esse apelido sempre deve ser informado após o nome da tabela. quando vamos informar o campo devemos colocar o “apelido” junto ao nome do campo. Na linha 1 informamos qual o campo que estamos buscando. porém há uma peculiaridade: informamos. Dessa forma nosso select não retornará os vendedores que não possuem o seu código na tabela vendas. informamos que só deverá aparecer na nossa consulta os nomes dos vendedores cujo código existir na tabela vendas. 65 . mas antes disso execute novamente um comando select que nos possibilite visualizar todos os registros da tabela vendas de modo que o resultado seja parecido com o seguinte: Veja que em abril temos uma venda do vendedor de código 3 (Mika). o select com relacionamento entre duas tabelas que realizamos está correto. na linha 4.30: Select Vendas 2 Então vamos entender o que fizemos. já devemos ter em mente a tabela que possui esse campo e o “apelido” que daremos à tabela. que é o “apelido” dado à tabela vendedores. temos a última cláusula da nossa consulta. Note que informamos que o campo cod_vendedor da tabela vendedores (representada pela letra z) deve ser igual ao campo cod_vendedor da tabela vendas (representada pela letra x). ou seja. Mas tão importante quanto ele estar correto é entendermos o que fizemos. antes do campos.que deve trazer as vendas do mês de abril. quando vamos definir o “apelido” da tabela. e na frente de cada uma delas informamos qual será o “apelido”. Na linha 3 temos o ponto-chave de nosso select. separando o apelido do nome da tabela apenas com um espaço. Ressaltando que.. Informamos que a data da venda (que fica gravada na tabela vendas) deve estar entre o primeiro e o último dia de abril. Na linha 2 informamos quais tabelas vão se relacionar. uma venda do vendedor de código 2 (Amelia) e duas vendas do vendedor de código 1 (Zezao). Por fim. mas é aconselhável que esses apelidos sejam o mais curto possível. Podemos utilizar qualquer sequência de caracteres como apelido para tabelas.

Ou seja. vendedores z where x. basta executarmos o seguinte comando SQL: 1 2 3 4 select z. independente se estes realizaram vendas ou não. O resultado deverá ser o seguinte: Figura 3. Vamos propor um segundo caso: imaginemos que gostaríamos de visualizar o nome de todos os vendedores e a data em que os mesmos realizaram as vendas (vendas que foram realizadas no mês de abril). dependendo da complexidade da consulta.data from vendas x. Ora. você saberá relacionar cinco.A única forma de aprendermos esse conceito é praticando. Digamos que queremos que apareçam todos os vendedores. O único trabalho que teremos será informar que o campo data da tabela vendas deverá ser exibido.data between '01/04/2010' and '30/04/2010'. vinte tabelas se for o caso. que nesse caso é representada pela letra anteriormente mencionada. dez.cod_vendedor = z. Para tal. Note que apenas adicionamos o campo data que está na tabela vendas à linha 1. mas há selects que relacionam muitas tabelas. Lembrando que antes de informarmos o campo colocamos a letra x seguida de um ponto para identificar que esse campo pertence a tabela vendas. 66 . para realizar esse comando é muito simples.nome.31: Select com Join 2 Vamos pensar numa terceira situação. Uma vez que você souber como relacionar duas tabelas em um comando SQL.cod_vendedor and x. Portanto não hesite em fazer testes diversos. pois já temos a lógica elaborada no último comando SQL que desenvolvemos. tudo vai depender muito da sua interpretação do problema e da lógica que utilizar. Aqui abordamos um exemplo extremamente simples. x.

cod_vendedor. uma vez que o último select que elaboramos está relacionando duas tabelas.cod_vendedor (+) = z. Finalizamos assim o estudo do conceito de relacionamento entre tabelas em um comando SQL. Aqui apresentamos a teoria. 67 . Veremos uma pequena descrição de cada uma delas e sua aplicabilidade.cod_vendedor. mas também queremos trazer os corretores que não realizaram vendas. tudo em um único comando SQL.data from vendas x. Parece meio complicado. Para tal. vendedores z where x. Observe: 1 2 3 select z. • Funções do Oracle 10g XE A partir daqui. veremos o comando na prática. para indicar que o select deve buscar também os valores do campo z. mesmo que estes não existam em x. mas que também sejam exibidos os valores que não se encaixam nessa amarração. Para acabarmos com toda essa enrolação e confusão de ideias. x.cod_vendedor. Apenas temos que colocar um sinal de adição entre parênteses na frente do campo que for a chave estrangeira do relacionamento (no nosso caso. conheceremos o recurso outer join. comparando valores entre elas e os retornando. conheceremos várias funções que o Oracle 10g possui. Nesse caso queremos que haja essa comparação. em sala exploraremos muito mais esse recurso. exatamente onde ocorre a amarração.cod_vendedor.32: Select com Outer Join Veja que colocamos o (+) na frente do campo x. Resultado: Figura 3. o campo cod_vendedor da tabela vendas) Tudo isso na cláusula where. que na verdade é muito simples.queremos retornar todos os corretores cadastrados e também a data em que estes fizeram realizaram vendas.nome.

Funções de grupo.79) from dual. Digite no SQL*plus o seguinte código: select sqrt(49) from dual. O resultado deverá ser o seguinte: Figura 3.33: Função SQRT “Só para não ficar dúvidas.Podemos separar as funções em seis grupos: 1. Funções numéricas. Funções numéricas: Funções numéricas são aquelas que nos auxiliam quando estamos trabalhando com cálculos matemáticos. 3. Funções de manipulação de caracteres. Vamos estudar cada uma delas. a tabela dual é uma tabela que já vem configurada no Oracle 10g XE. Vamos conhecer algumas: sqrt: esta função retorna a raiz quadrada de determinado valor. Funções condicionais. Portanto quando queremos retornar no select um valor específico informamos que esse valor deve vir da tabela dual. 4.” round: esta função arredonda um valor informado ou armazenado no banco de dados. 2. Digite no SQL*plus: select round(5. 68 . 5. 6. Funções de conversão. Funções de manipulação de datas. Obviamente essas funções são aplicáveis em campos do tipo number.

Observe: Figura 3.35: Função TRUNC 69 . Digite o seguinte comando: select trunc(15. Veja o resultado: Figura 3. conforme desejarmos.9) from dual.34: Função ROUND trunc: função que desconsidera valores decimais e que nos permite exibir o primeiro dia do mês ou do ano de determinada data.

Agora digite: select trunc(data. Veja: 70 .36: Função TRUNC 2 power: função que eleva um determinado valor a uma determinada potência. visualize o resultado: Figura 3. por isso após o mesmo colocamos uma vírgula e a máscara mm. Vamos entender o último comando select: informamos que queremos retornar o compo data da tabela vendas. 2) from dual. Digite: select power(9. Para melhor entendimento. 'mm') from vendas. dizemos que deverá ser retornado o primeiro dia do mês do valor que o campo data possui. Mas quando informamos a função trunc.

Figura 3.Funções de manipulação de caracteres. upper: esta função transforma todas as letras de uma coluna em maiúsculas. Usemos o exemplo anterior. lower: função capaz de transformar todas as letras de uma coluna em minúsculas. Observe o resultado: Figura 3. Digite no seu SQL*Plus: select upper(nome) from cidades.37: Função POWER .38: Função UPPER Repare que o nome das cidades são exibidos em caixa alta. Digite no seu SQL*Plus: 71 .

'r') from dual. 'p'. Figura 3.select lower(nome) from cidades. Observe o resultado: 72 .39: Função LOWER Todas as palavras são exibidas em caixa baixa. replace: função que substitui a ocorrência de um ou vários caracteres por outros informados. Digite: select replace('pato'.

ou seja. nvl: função que insere determinado dado quando o campo consultado estiver nulo. Segue a tabela para nos auxiliar: Tabela: vendedores CAMPO cod_vendedor nome sexo data_nasc cpf Tabela 3. Para nosso exemplo. nome. Para entendermos essa função vamos inserir mais um registro na tablea vendedores.40: Função REPLACE Veja que nesse comando informamos que a letra P deverá ser substituída pela letra R.Figura 3. cod_vendedor. sexo. nvl(cpf. mas como utilizamos o comando replace foi-nos retornado a palavra rato. o valor de data_nasc e de cpf deverão ser nulos. informamos a palavra pato. 0) from VALOR 6 Sergio M 73 . data_nasc.20: Vendedor 6 Agora digite o seguinte comando: select vendedores. Dessa vez informaremos apenas os campos obrigatórios.

Sintaxe a seguir: select to_char([campo]) from [tabela].41: Função NVL . o valor que informarmos deverá ser coerente ao tipo de dados que o campo armazena. 0. Note que informamos após o campo a máscara 'dd/mm/yyyy hh24:mi:ss'. Ressaltamos aqui que.Note que informamos o comando nvl para o campo cpf.25. será exibida os caracteres que escolhemos. Digite: select to_char(1500. to_date: converte um certo valor do tipo caracter para o tipo data e hora. Segue a sintaxe: select to_date([campo] [hora]. 'dd/mm/yyyy hh24:mi:ss') from [tabela]. Veja o resultado: 74 .Funções de conversão. to_char: converte números e datas para o tipo de dados caracter. no nosso caso. Então quando o campo cpf for nulo. sempre que usarmos a função nvl. Isso fará com que a data e o horário apareçam conforme especificado. Veja o resultado: Figura 3. '999G999D00') from dual. to_number: converte um certo valor do tipo caracter para o tipo número.

Funções de manipulação de datas. Digite: select sysdate from dual. Veja o resultado: Figura 3. sysdate: esta função retorna a data atual do sistema.42: Função TO_CHAR Nesse exemplo usamos uma máscara para números. . A letra G indica separador de milhar e a letra D indica separador de decimais.Figura 3.43: Função SYSDATE 75 . no qual está instalado o banco de dados Oracle.

Caso o mês da data do resultado não possuir o dia informado. Isso porque o ano de 2012 será bissexto. é retornado o último dia do mês. Observe que o resultado é 29/02/12.last_day: esta função retorna o último dia do mês. O número 3 após a virgula informa a quantidade de mês que queremos adicionar à data informada. Digite no SQL*Plus: select last_day('15/02/2012') from dual. Resultado: Figura 3. caso contrário o último dia do mês de fevereiro seria 28. Veja o resultado do nosso select: 76 . 3) from dual. Digite: select add_months('31/01/2010'.44: Função LAST_DAY add_months: adiciona a quantidade de meses indicada a uma determinada data. de acordo com a data informada.

Figura 3.45: Função ADD_MONTHS - Funções condicionais. decode: esta função exibe ou não uma determinada informação de acordo com o valor armazenado no campo. Vejamos um exemplo: select estado, decode(estado, 'SP', 'São Paulo') from cidades; O comando decode que usamos no exemplo procura todas as ocorrências SP e substitui por São Paulo. Veja o resultado:

Figura 3.46: Função DECODE Podemos ainda informar mais valores no comando decode. Observe:

77

select estado, decode(estado, 'SP', 'São Paulo', 'MG', 'Minas Gerais') from cidades; Resultado:

Figura 3.47: Função DECODE 2 - Funções de grupo. As funções de grupo atuam em um conjunto de registros e retornam um determinado valor correspondente a cada subconjunto selecionado. Os grupos são formados de acordo com a consulta, e em certos casos, faz-se o uso da cláusula group by. Avg: função que calcula a média aritmética de um determinado conjunto de registros. Digite: select avg(valor_total) from vendas; O select que acabamos de digitar retorna a média de todas as vendas cadastradas na tabela vendas. Veja o resultado:

78

Figura 3.48: Função AVG max: função capaz de retornar o maior valor armazenado em um campo. É aplicável a qualquer tipo de dado. Digite: select max(valor_total) from vendas; No select que elaboramos buscamos o maior valor de uma vendas cadastrada em vendas. Veja o resultado:

Figura 3.49: Função MAX min: função que retorna o menor valor armazenado em um campo. Assim como a função max, é aplicável a qualquer tipo de dado. Digite o seguinte código: 79

Observe: Figura 3.select min(valor_total) from vendas.51: Função SUM 80 . Veja: Figura 3. Agora buscamos na tabela vendas o menor valor registrado em uma venda. Vamos ver: select sum(valor_total) from vendas.50: Função MIN sum: esta função retorna a soma dos valores contidos em uma coluna especificada.

Podemos usamos a função distinct em conjunto com a função count. No primeiro vamos elaborar um comando que retorne o código dos vendedores que já realizaram alguma venda.count: função que retorna a quantidade de registros encontrados em uma tabela ou campo especificado. Veja o resultado: 81 . Veja. mesmo que esse valor apareça várias vezes na coluna em que estamos realizando a busca. o resultado é o total de vendas que temos cadastrado: Figura 3. Vamos ver quantas vendas estão cadastrada na tabela vendas: select count(codigo) from vendas. Vamos ver dois exemplos. Digite no SQL*Plus: select distinct(cod_vendedores) from vendas.52: Função COUNT distinct: a função distinct retorna os valores valores apenas uma vez.

53: Função COD_VENDEDOR No nosso segundo exemplo vamos elaborar um comando SQL que nos retorne a quantidade de vendedores que realizaram vendas.54: Função COUNT DISTINCT Note que a quantidade de vendas é 5. Finalizamos por aqui nosso estudo sobre funções do Oracle 10g XE. Digite: select count(distinct(cod_vendedores)) from vendas. porém a quantidade de vendedores que efetuaram vendas é 3. Isso significa que há vendedores que realizaram mais de uma venda. 82 . Observe o resultado: Figura 3.Figura 3.

4ª Etapa • Conceito de PL/SQL Até aqui vimos a como criar. atualizações. end. É uma linguagem estruturada em blocos e cada bloco pode conter indeterminado sub-blocos.2). / Vamos entender a sintaxe de uma função em PL/SQL! Na cor verde temos o cabeçalho da função. retornando ou não informações ao usuário. ao indicarmos replace ela será recarregada). v_vlr_final := v_vlr_total + (v_vlr_total * 0. entre parênteses. Veremos aqui como criar e trabalhar com functions (funções). PL significa Procedural Language (Linguagem Procedural). A taxa será de 5%. inclusões. Usamos o create or replace function como comando de criação da função (se a mesma já tiver sido criada anteriormente. 83 . sejam eles consultados ou calculados.. alterações. A reunião de comandos da PL/SQL é capaz de processar uma série de atividades como consultas. cálculos. Vejamos como elas funcionam! Elaboraremos uma função para calcular os juros das vendas. dispostos de forma lógica. • Function. number(5.2). informamos o parâmetro de entrada que receberá um valor externo para que number(5. etc. Em seguida. Funções são rotinas que retornam algum valor. Digite: create or replace function calcula_juros (cod_venda in number) return number is v_vlr_total v_vlr_final begin select valor_total into v_vlr_total from vendas where codigo = cod_venda. A partir desse ponto começaremos a estudar assuntos que farão uso da linguagem de programação PL/SQL. que nos auxiliará a manipulação dos dados em blocos de comandos.05). return (v_vlr_final). manipular e gerenciar um banco de dados com a SQL.

que indica o que deve ser retornado. e informamos. Sempre que utilizamos um comando select dentro de um bloco de comandos PL/SQL devemos informar a cláusula into e informar a variável (que tem que ser declarada) que receberá o valor que o select retornar. Por fim. Na cor azul temos a declaração de variáveis. O resultado deverá ser o seguinte: 84 . Se não houver erros de sintaxe na função. Em vermelho indicamos o início e o fim do nosso bloco de dados. na cor rosa. o código da venda que queremos que seja calculado os juros. Aqui informamos o nome das variáveis e o tipo de dados das mesmas. sua tela deverá estar assim: Figura 4.esse valor seja utilizado. Digite: select calcula_juros(4) from dual. Em seguida temos o cálculo do total da venda mais a taxa de juros. entre parênteses. Fizemos um comando SQL para buscar os valores do campo valor_total da tabela vendas. Nesse ponto não há segredos. Note que utilizamos um comando select para “chamar” a função. Note que antes do from utilizamos a cláusula into. Por fim. no nosso exemplo. pois para realizar tal tarefa fazemos tal como na criação de tabelas. Na cor preta temos a manipulação dos dados. Observe a sintaxe do sinal “recebe” (:=). Vamos ver como utilizá-la. Posteriormente informamos o tipo de dado que deverá ser retornado. temos o comando return. number. na cláusula where comparamos um determinado campo da tabela ao parâmetro de entrada que definimos no cabeçalho da função.1: Create Function Até esse ponto apenas criamos a função.

• Procedure. Procedimentos são muito semelhantes à funções. dt_venda in date. somando isso ao valor inicial. enquanto um procedimento não retorna valor algum. Se desejarmos excluir uma função podemos digitar um comando SQL. Funções são muito úteis quando há de se realizar cálculos. A venda de código 4 tinha o valor original de 760.Figura 4. temos 798. Cinco por cento desse valor é 38. pois podem também retornar dados do tipo char ou varchar2.00.2: Executando Function Veja que o resultado calculado foi 798. tal qual nos indica a sintaxe: drop function [nome da função]. agora vamos colocar esse comando SQL dentro de um bloco PL/SQL. Já vimos como fazer isso em SQL. total in number) is begin 85 . Nesse tópico veremos como criar e trabalhar com procedures (procedimentos). vendedor in number.00. porém podem ser aplicadas em qualquer situação. A principal diferença entre um procedimento e uma função é que a função sempre retornará um valor. pois também são capazes de armazenar vários blocos de comandos em PL/SQL. Então digite: create or replace procedure insere_vendas (cod in number. Isso comprova que a função que elaboramos está correta. Tudo depende da interpretação do desenvolvedor para os mais diversos casos. Vamos elaborar um procedimento que insira registros na nossa tabela vendas.

E na cor preta temos o nosso bloco de códigos. data. que é inserir registros na tabela vendas. Se não houver erros de sintaxe no procedimento. sua tela deverá estar assim: Figura 4. Para executarmos um procedimento fazemos uso do comando exec.3: Create Procedure Até esse ponto apenas criamos o procedimento. Assim como na função. digite: exec insere_vendas (6. para executá-lo. cod_vendedor. que é composto apenas por um simples comando insert. / Aqui criamos um procedimento extremamente simples.00).insert into vendas (codigo. porém ainda não fizemos uso dele. end. total). 4. 490. '23/04/2010'. Note que no fim colocamos o comando end seguido do nome que demos ao procedimento. com uma única finalidade. Após o comando exec. Em vermelho temos a declaração de início e fim do nosso procedimento. valor_total) values (cod. sua tela do SQL*Plus deverá estar parecida com a seguinte: 86 . dt_venda. vendedor. Após executar um procedimento. Na cor verde temos o cabeçalho do nosso procedimento. Então. informamos quais serão os parâmetros de entrada e o tipo de valor que eles receberão. informamos o nome do procedimento e passamos os parâmetros que o mesmo deverá receber.

5: Verificando resultado da Procedure Note que a venda de código 6 foi inserida. Se desejarmos excluir um procedimento basta usarmos o comando drop. tal como a sintaxe a seguir: drop procedure [nome do procedimento]. digite um comando SQL que nos possibilite ver todos os registros da tabela vendas: Resultado: Figura 4. 87 . provando que nosso procedimento está funcionando. para confirmarmos.Figura 4.4: Executando Procedure Agora.

pois o maior valor da chave primária da tabela vendas é 6. Em roxo informamos que o código não realizará ciclos. Na cor azul informamos o intervalo de incremento da sequência. onde informamos o nome da nossa sequência. Em preto informamos que não haverá valor mínimo para a nossa sequência (caso o mesma fosse decrescente). Se sua sequência estiver correta. Digite: create sequence vendas_seq increment by 1 start with 7 nomaxvalue nominvalue nocycle noorder nocache. Neste tópico veremos como criar e trabalhar com sequences (sequências). Em azul claro informamos que os códigos não serão ordenados.• Sequence. no nosso caso iniciará com o valor 7. sua tela deverá estar parecida com a seguinte: 88 . Vejamos como criar uma sequência. Vamos entender a estrutura da sequência! Na cor verde temos o cabeçalho da tabela. Sequências são utilizadas para gerar valores numéricos que deverão preencher algum campo. Elas são muito úteis na geração de chaves primárias. Em cinza informamos que os dados não deverão ser armazenados em cache. já que uma das moires controvérsias do Oracle é não possuir campos do tipo auto-increment. No nosso caso informamos o valor 1. Em rosa informamos que não haverá valor máximo para a nossa sequência. Em vermelho informamos qual será o valor inicial dessa sequência. então a sequência aumentará uma unidade a cada vez que for utilizada.

Figura 4. temos que informar manualmente o valor da chave-primária. como exemplificado na sintaxe a seguir: drop sequence [nome da sequência]. Em tabelas com poucos registros isso não é tarefa difícil. Para apagar uma sequência. e esse registro só inseriremos quando estudarmos o próximo tópico desse material. pois teremos uma sequência que gerará esses valores e um gatilho que acionará essa sequência no momento da inclusão. pois são blocos de códigos que são “disparados” em determinado momento escolhido pelo desenvolvedor. exclusão ou atualização. quando vamos inserir um registro em qualquer tabela. O conceito de triggers (gatilhos) é um dos mais importantes de nosso estudo! É muito utilizado na linguagem PL/SQL. cada vez que inserirmos um registro na tabela vendas não precisaremos informar o valor da chave-primária. Imaginemos o seguinte: até o momento. Ou seja. O nome “gatilho” não é por acaso. mas imagine uma tabela com milhares de registros. Seria um trabalho desnecessário! No exemplo que será mostrado aqui vamos fazer um gatilho que acione a sequência que criamos anteriormente. seja essa ocorrência uma inclusão. basta utilizar o comando drop. Ele pode ser acionado antes (before) ou depois (after) de determinada ocorrência. Um gatilho pode ter todo tipo de manipulação de dados. Então digite: 89 . Seria necessário consultarmos o valor máximo da chave-primária dessa tabela toda vez que fossemos inserir um registro. precisamos inserir um registro na mesma para vermos o funcionamento da mesma. • Trigger.6: Criando Sequence Não executaremos nossa sequência agora pois como ela insere chavesprimárias na tabela vendas. muito útil para os mais diversos casos.

pois especificamos a coluna dentro do nosso bloco de comandos. que deverá ser retornado o próximo valor da sequência. Informamos o comando :new pois estaremos aqui inserindo um novo registro na tabela. Em preto temos um código SQL que ainda não conhecemos. e informamos for each row.codigo from dual. logo após informamos. Figura 4. Por fim. Portanto cabe aqui uma breve explicação sobre ele. com a função nextval. Em azul indicamos o momento em que o gatilho deve ser “disparado”. a tabela que será alterada por ele. o into indica que esse valor deverá ser inserido em algum lugar.nextval into :new. Em seguida informamos que o select deverá buscar esse valor em um sequência (no nosso caso vendas_seq). Em vermelho temos o início e o fim do nosso bloco de comandos.create or replace trigger trg_vendas_cp before insert on vendas for each row begin select vendas_seq. que significa que os comandos afetarão qualquer campo da tabela informada. Fizemos uso de um comando select. que contem o nome do gatilho (trg_vendas_cp). end. / Vamos entender! Na cor verde temos o cabeçalho do nosso gatilho. informamos a tabela padrão do Oracle: dual. e após o into informamos o nome da coluna que esse valor deverá ser inserido.7: Criando Trigger Agora vamos testar! 90 . No nosso caso não será necessário. pois esse próximo número da sequência não existe cadastrado no banco de dados e por isso devemos informar a tabela dual. obviamente para selecionar um valor. no nosso caso a coluna codigo. Se desejássemos especificar um campo deveríamos informar o comando table columns e o nome das colunas que seriam alteradas.

8: Inserindo Registro Agora elabore um comando select que exiba todos os registros da tabela vendas.Insira um novo registro na tabela vendas. Segue sugestão: Tabela: vendas CAMPO codigo cod_vendedor data 5 26/04/10 VALOR valor_total 320. mas não informe o valor do campo codigo. O resultado deverá ser semelhante ao seguinte: 91 .1: Venda 6 Figura 4.00 Tabela 4.

São usadas para que o usuário tenha acesso a determinadas informações. Na cor preta temos a consulta que essa visão retornará. digite: create or replace view vendedor_vw as select cod_vendedor. e as mesmas. pois possui colunas onde é possível realizar consultas. Vamos entender o que fizemos! Como percebido. apenas consultadas. Vamos construir uma visão! Na nossa visão. estudaremos o conceito e a aplicabilidade de views (visões) no banco de dados Oracle. quando acessadas de uma visão. não podem ser alteradas. basta utilizar o comando drop. Portanto. faremos uma consulta na tabela vendedores. normalmente tabelas. como exemplificado na sintaxe a seguir: drop sequence [nome do gatilho]. 92 . uma visão possui uma estrutura extremamente simples! Na cor verde temos o cabeçalho da visão. onde informamos o nome da visão. e retornaremos o código e o nome de cada vendedor.Figura 4. Uma visão é parecida com uma tabela. • View Neste tópico. nome from vendedores. É considerada uma “máscara” sobreposta a uma ou mais estruturas de dados.9: Verificando Vendas Para apagar um gatilho.

E só! Uma visão é composta apenas por essas duas partes. O resultado deverá estar parecido com o seguinte: 93 . Então. podemos imaginar que esse é um recurso desnecessário. Veja que quando efetuamos o comando select indicando a visão que criamos é como se possuíssemos uma tabela no banco de dados com o nome vendedor_vw. É claro que. inútil. Digite: select * from vendedor_vw. sua tela do SQL*Plus deverá estar semelhante a seguinte: Figura 4. Mas imagine uma consulta de cem. cento e cinquenta linhas! É muito melhor usarmos uma consulta desse tamanho salvo em uma visão.10: Criando View Até esse ponto apenas criamos a visão. vejamos agora como executar uma visão. observando esse exemplo. onde ficariam armazenados os códigos e os nomes dos vendedores. Se sua visão for criada corretamente. mas ainda não fizemos uso da mesma.

basta utilizar o comando drop: drop view [nome da visão]. e nesses casos a criação de um índice é essencial para facilitar a localização dos dados necessários. Vamos criar um índice na tabela vendedores.11: Visualizando View Se desejar apagar uma visão. • Index Até aqui vimos muitos assuntos de extrema importância dentro do banco de dados Oracle 10g XE. Mas mesmo assim veremos como trabalhar com eles. pois nossa massa de dados não é grande o suficiente.Figura 4. pode haver casos em que a massa de dados de uma coluna seja realmente muito grande. Porém. Aprenderemos agora o conceito e como trabalhar com index (índice) no banco de dados. pois possuem valores únicos em uma tabela e por meio desses valores conseguimos chegar à um determinado registro específico. Esse índice será o campo nome. Índices são objetos do banco de dados e são usados para localizar de forma rápida determinados registros em uma tabela. Mas antes de criá-lo digite um comando select que retorne todos os registros apenas do campo nome (que em breve será nosso índice) e observe o resultado: 94 . São geralmente utilizados quando a tabela começa passa a armazenar uma quantidade muito grande de registros. Aqui não perceberemos as reais vantagens dos índices. Toda chaveprimária pode ser considerada um índice.

12: Campo Nome da Tabela Vendedores Agora digite: create unique index vendedor_nome on vendedores (nome). pois pode duas pessoas podem perfeitamente ter o mesmo nome. embora não seja comum. em azul. mas se for definido que o índice será único a coluna referida não poderá conter valores repetidos. como se trata apenas de um teste. Se não quiséssemos que nosso índice fosse único bastaria apenas não informar a a palavra unique. jamais poderíamos deixar um índice que é composto por um campo que registra nomes de funcionários com a opção unique declarada. Vamos entender as partes que compõem a criação de um índice! Em verde temos o comando de criação do índice. No nosso caso. Em vermelho temos a indicação da tabela que vai receber esse índice. indicamos o campo que será o índice. E por fim. sua tela deverá estar semelhante à tela seguinte: 95 . A opção unique é opcional. Em preto temos a definição do nome do índice. poderemos preservar a opção unique.Figura 4. mas se fosse um caso real. Se seu código não possuir erros de sintaxe.

Figura 4. Caso queira excluir um índice.14: Funcionalidade do Index Observe que os nomes estão agora aparecendo em ordem alfabética. Com a criação do índice esses campos aparecem de forma organizada alfabeticamente. elabore um comando select que retorne todos os registros apenas do campo nome.13: Criando Index Assim como fizemos antes de criarmos o índice. 96 .Figura 4. como na sintaxe: drop index [nome do índice]. porém eles continuam guardados na ordem física em que foram gravados. basta utilizar o comando drop.

5ª Etapa • Oracle Application Express A partir daqui veremos como trabalhar com o Oracle Application Express. a ferramenta Application também tem. O Application Express possui muitos recursos que não serão discutidos nesse material. Mas veremos recursos muito interessantes e que nos serão muito úteis. Assim como o banco de dados Oracle tem várias versões. o que não é o nosso caso. Há nessa página as seguintes opções: 97 . pois tais recursos são para administradores de banco de dados já experientes.Todos os programas Oracle Database 10g Express Edition . Veja: Figura 5.Ir para a Home Page de Banco de Dados” (esse é o caminho ser seguido caso esteja usando o Windows XP). Acesse o Application Express no menu: “Iniciar .1: Menu Ir para a Home Page do Banco de Dados Em seu navegador padrão de internet será aberta uma página da Oracle. Será aberta a página inicial do Oracle Application Express. variando de versão para versão. Informe seu usuário e senha e clique em Login. onde na parte esquerda da tela há a solicitação de usuário e senha e na parte direita há links sobre informações e fóruns do banco de dados.

Vamos praticar! Vejamos a utilização do espaço físico de nossos dados até o momento. Na opção Administração procure o menu Armazenamento e nesse menu clique em Utilização do Espaço de Armazenamento. gerenciar a memória utilizada pelo banco e o espaço físico de armazenamento. procedimentos. Application Builder: por meio dessa opção podemos criar mini aplicativos para a web e listagens para a exibição dos dados. tais como podemos ver a seguir: Figura 5.Figura 5. Por meio dela podemos criar usuários.3: Informações de armazenamento do Application Express 98 . possui também relatórios sobre os objetos do banco. gatilhos. etc. tabelas. Utilitários: nesta opção estão os utilitários para realização de importação/exportação da base de dados do Oracle 10g XE.2: Opções do Application Express Vamos analisar essas opções: Administração: esta é a opção que nos permite criar e administrar os usuários do banco de dados. índices. Vamos aqui conhecer os mais utilizados. SQL: esta opção nos possibilita acessar o SQL*Plus por meio de uma página HTML. Em cada uma dessas opções temos várias outras. Serão exibidas algumas informações. Browser de Objetos: essa opção serve para gerenciar os objetos do banco de dados.

Será exibida uma tela com todos os usuários atualmente cadastrados no banco. Nesse momento não criaremos nenhum novo usuário. Para voltar à página inicial. 99 .É bem provável que os valores do seu banco de dados estejam diferente dos valores do exemplo. podemos retornar à página inicial. basta clicar no link Início. Vejamos agora as propriedades dos usuários do banco de dados. Voltando à página inicial. criar o apagar usuários. Feito isso. vá novamente na opção Administração. menu Usuários do BD e clique em Criar Usuário. Podemos. que está na opção Administração e clique em Gerenciar Usuários. Sendo assim.4: Usuários do Banco de Dados Nesta página podemos conceder ou revogar permissões dos usuários. ainda. mas isso não tem a mínima importância. Veja o exemplo: Figura 5. Veja: Figura 5. Vá até o menu Usuários do BD. aparecerá a tela de criação de usuário.5: Tela Criar Usuário do Banco de Dados No quadro que está abaixo do quadro de criação de usuários está o quadro de privilégios.

Para isso.Vimos no início do curso como alterar a senha de um usuário por meio do comando alter user. caso contrário basta clicar em Cancelar. Para isso basta clicarmos em Alterar Minha Senha na opção Administração. Vamos ver agora alguns recursos da opção Browser de Objetos. Surgirá uma tela semelhante à seguir: 100 . Vamos ver agora como fazer isso no Application Express.6: Tela Alterar Minha Senha O processo de modificação de senha é idêntico a qualquer outro que já utilizamos no cotidiano. Nesta opção podemos administrar os objetos do banco de dados. clique na opção Tabela. Assim que informamos a nova senha. basta clicar em Aplicar Alterações para que a nova senha tenha validade. Será aberta a seguinte tela: Figura 5. que está no menu Criar. Voltemos à página inicial. Note as opções que estão contidas nesse menu. Clique na opção Browser de Objetos e abra o menu Criar. É possível observar que tudo o que foi criado no SQL*Plus pode ser criado por esse menu. Vamos criar uma tabela pelo Oracle Application Express.

Figura 5. se trabalharmos com campos do tipo number também aparecerá a caixa de texto Escala. por fim. Então vamos criar uma tabela com as informações a seguir: Tabela: oracle CAMPO codigo descricao data_inicial data_final TIPO number varchar2 date date Tabela 5. Abaixo temos campos onde deveremos informar o nome das colunas. que serve para informarmos a quantidade de algarismos que esse número possuirá após a vírgula. Temos também uma caixa de seleção para informarmos se o campos poderão ser nulos ou não.1: Tabela Oracle TAMANHO 10 200 NULO Não Sim Não Não 101 . temos a opção mover. E. caso surja o desejo de mudar a ordem dos campos dentro da tabela. o tipo de dados e a precisão (tamanho) dessas colunas.7: Tela Browser de Objetos Veja que há um campo para especificarmos o nome da tabela.

8: Tela Criar Tabela Após informarmos esses dados clique no botão Próximo. Ela também não possuirá nenhuma constraint além da chave-primária.9: Tela Chave Primária Nossa tabela não possuirá chave-estrangeira. basta clicar no botão Próximo. Escolha a coluna codigo para ser nossa chave-primária e clique no botão Próximo. Nosso próximo passo é definir a chave-primária. Figura 5. Então selecione a opção Não preenchido e não altere o campo Nome de Restrição de Chave Primária. Nesse exemplo não utilizaremos uma sequência para gerar a chave-primária.Figura 5. 102 . portanto e não é preciso modificar nada na tela atual. portanto clique em Finalizar.

10: Tela Restrições Após isso o Application Express solicita outra confirmação.Figura 5. Portanto.11: Tela Confirmar Após a criação da tabela. será uma tela como a seguinte: 103 . basta clicar em Criar. Figura 5.

no lado esquerdo dela. que foi o que criamos no nosso contexto. Para vermos as propriedades dessas tabelas basta acessá-las clicando sobre a tabela desejada. Volte à página inicial. a seguinte coluna: Figura 5. Nos é exibida uma tela em que notamos. 104 . Clique sobre o gatilho trg_vendas_cp. Clique no botão Início para retornarmos à página inicial.Figura 5. que acabamos de criar. Assim como procedemos com o gatilho. vá ao menu Procurar e nesse menu escolha a opção Triggers. As informações pertinentes à esse gatilho serão abertas na tela. podemos proceder com qualquer outro objeto do banco de dados. as informações da tabela.13: Visualização dos Objetos Mesmo que sua coluna de opções esteja diferente não há problema algum. Veja que no lado esquerdo da tela temos listado os nomes de todas as tabelas que estão no banco atualmente. no quadro que é exibido. O importante é que apareça na sua coluna o gatilho trg_vendas_cp. Ainda na opção Browser de Objetos.12: Visualização da Estrutura da Tabela Oracle Notamos.

Portanto abra essa opção. pressione o botão Executar que está no canto superior direito da tela. Será exibida uma tela semelhante à seguinte: Figura 5. Melhor do que falar é testar! Digite: select * from vendedores. Observe o resultado: 105 . Na sua tela inicial. Veja que ele possui apenas uma opção: Informar Comando. Após digitar o comando anterior. clique na opção SQL. outra opção do Application Express.Conheceremos agora. Primeiramente vamos escolher o menu Comandos SQL. porém com uma aparência bem melhor.14: Tela Comandos SQL Essa tela é basicamente a tela do SQL*Plus.

assim como fizemos no SQL*Plus. Conheceremos agora um pouco da opção Utilitários. visões. etc. Qualquer comando SQL pode ser executado nessa tela. Na opção Utilitários. porém no banco estava gravado como decimal. gatilhos. Volte à página inicial. que nada mais é do que extrair do banco de dados os comandos utilizados na construção das estruturas de nossos objetos (tabelas.Figura 5. pois os números são exibidos tal qual informamo na inserção. clique em Gerar DDL. por isso ele exibia como hexadecimal. Será aberta a tela: 106 . Veremos como trabalhar com o aplicativo que executa a Engenharia Reversa. Vemos aqui a prova do que foi falado.).15: Visualização dos Dados na Tabela Oracle Atente para o campo CPF! Lembra que quando executamos essa consulta no SQL*Plus ele retornava com o formato de número hexadecimal? Na ocasião foi mencionado que era porque o número armazenado na coluna era muito extenso e o SQL*Plus não suportava o tamanho. assim como tínhamos informado na ocasião da inserção dos dados.

Informe a descrição (opcional). Com isso o script fica salvo no banco e só o usuário que o criou terá acesso à ele.Figura 5. Logo em seguida o Oracle Application Express exibe uma mensagem de confirmação de gravação do nosso script. Na tela que segue é exibida uma lista com o nome de todas as tabelas que foram criadas pelo usuário atual. pode-se também. gerá-las manualmente. 107 . Só serão exibidos os objetos que foram criados pelo usuário atualmente conectado ao banco de dados. mas apenas para saber o que é: o Application Builder é a opção onde podemos realizar pequenas programações. Sugestão: script_teste. Peguemos um como exemplo. Podemos obter qualquer comando de criação dos objetos. Selecione a tabela vendas e mude a opção Saída para Salvar Como Arquivo de Script. Mantenha o esquema de seu usuário como está e clique em Próximo >. na tela atual. Vamos gerar um script de uma tabela.16: Tela Gerar DLL Essa página que foi aberta nos exibe um resumo dos objetos existentes no banco. Veja: Figura 5. Clique em Criar Script. ou. Clique no botão Criar Script >. Informe o nome do script.17: Scripts SQL Veja que abaixo da mensagem exibida há um link do nosso script de criação de tabela. Aqui não estudaremos o Application Builder. Para visualizar o código de um script. É para isso que serve o Application Builder. Agora clique em Gerar DDL. basta clicar sobre ele. seja com dados que estão em um arquivo de planilha. Portanto. selecione a opção Tabela e clique novamente no botão Próximo >.

dois merecem destaque: OracleServiceXE OracleXETNSListener. ou seja. O OracleServiceXE é o serviço que representa o banco de dados em dentro do Windows. os a 1. O OracleXETNSListener é o aplicativo que fica em execução para que processos possam ser executados. Organize os arquivos por ordem alfabética e procure por cinco arquivos que começam com a palavra Oracle. que podem ser configurados para iniciarem automaticamente ou manualmente. Mas isso só é possível porque. Na instalação do banco de dados Oracle 10g XE. Mas vejamos como configurá-los! Vá até o Painel de Controle do Windows e clique abra a opção Ferramentas Administrativas. Para fazermos uso desses dois aplicativos. Até o momento utilizamos dois aplicativos vêm no pacote Oracle 10g Express Edition: SQL*Plus e Oracle Application Express. 108 . o padrão de inicialização do Oracle 10g XE é inicialização automática. Mas vamos pensar em dois casos: e si. temos que informar usuário e senha.18: Serviços Desses serviços.• Serviços do Oracle 10g. o banco de dados já estava “no ar”. assim como clicar no botão Login do Application Express. Em seguida abra a opção Serviços. já tinha sido inciado. ao informarmos usuário e senha. Como mencionado. Do contrário o comando conn. Por padrão ele iniciam automaticamente. Veja: Figura 5. pois assim não precisaremos iniciá-lo toda vez que ligarmos nosso computador. antes de mais nada. é adicionado à lista de processos do Windows cinco serviços. que utilizamos no SQL*Plus de nada adiantaria. É interessante deixar o banco de dados iniciar juntamente com o sistema operacional.

Se deixarmos Desativado não haverá como iniciar o banco de dados em hipótese alguma. Deixá-lo iniciado é desperdício de recurso de hardware. Clique agora na opção Interromper Banco de Dados. Portanto vamos ver como configurar isso! Abra o arquivo OracleXETNSListener. Atualmente está como Automático. a inicialização fica obviamente mais lenta. que está em “Iniciar – Todos os programas – Oracle Database 10g Express Edition”. Tudo vai depender da sua escolha com base na sua necessidade. Sua tela deverá estar como a seguinte: 109 . Veja que na tela que nos é exibida há a opção Tipo de inicialização. Tente agora conectar ao banco de dados pelo SQL*Plus.2. Porém. mas podemos perfeitamente deixá-la como Manual. Imagine que vamos usar o computador para outra tarefa qualquer que não utilize o Oracle 10g XE. pois há mais coisas a serem carregadas. quando o banco é iniciado juntamente ao sistema operacional.19: Interrompendo Banco de Dados Após ser exibida a informação de que o banco foi finalizado com êxito. Observe o que ocorre: Figura 5. Feche o Painel de Controle. No momento vamos deixar essa opção como Automático. feche a janela.

Agora vamos iniciar o Oracle 10g XE.20: Erro gerado Tente agora pelo Application Express. Clique na opção Iniciar Banco de Dados.21: Erro gerado 2 Isso ocorre porque o banco de dados não está “no ar”. que está em “Iniciar – Todos os programas – Oracle Database 10g Express Edition”.Figura 5. Surgirá a seguinte tela: 110 . Deverá ser informado um erro do seguinte tipo: Figura 5.

Em rows=y indicamos que os registros das tabelas também devem ser exportados. [senha] é a senha do usuário em questão. Vamos conhecer dois tipo de backup's: lógico e físico. caso especificássemos rows=n apenas as estruturas das tabelas seriam exportadas.Figura 5. Para realizar esse tipo de backup vamos utilizar o comando exp.log]. o export. Esse comando aciona um utilitário de exportação do Oracle. triggers=y e contraints=y indicamos que os índices. • Backup lógico Exportação. Veremos a seguir como realizar cópias de segurança do banco de dado Oracle 10g Express Edition. Indicamos em [arquivo. Onde [usuário] é o usuário que acessará essas informações no banco de dados.22: Iniciando Banco de Dados Após inciado tanto o SQL*Plus quanto o Application Express funcionarão normalmente. Vejamos a sintaxe do comando exp: exp [usuário]/[senha] owner=[usuário] file=[arquivo. Ao informarmos indexes=y.dmp] o nome do arquivo que armazenará os dados exportados. Quando informamos o comando owner indicamos quem é o “dono” desses objetos em questão. O comando grants=y especifica que os privilégios do funcionário também deverão ser exportados. os gatilhos e as restrições também 111 . Exportação é o processo que lê os registros do banco de dados e os grava em um arquivo. É esse utilitário que lê as informações e as grava em um arquivo binário conhecido como Arquivo dump de exportação.dmp] grants=y rows=y indexes=y triggers=y constraints=y compress=y log=[arquivo.

onde são registradas todas as ações feitas no momento da exportação. log=[arquivo. por fim. Veja: 112 . Portanto feche o SQL*Plus e abra o prompt de comando. O comando que iremos informar não é digitado no SQL*Plus. Nesse momento vamos realizar o backup lógico de nosso banco de dados.log] indica a criação de um arquivo de texto. Em compress=y indicamos que os dados exportados deverão ser compactados.deverão ser exportadas. E.log Pressione o “Enter” apenas após a digitação completa do comando. feche o prompt de comando e visualize o local que você escolheu para salvar os arquivos. Digite o seguinte comando na raiz da unidade C:\ (lembrando que o nome do usuário e senha deverão ser o que foi criado por você): exp daniel/daniel owner=daniel file=backup. e sim no prompt de comando do Windows.log e backup.dmp grants=y rows=y indexes=y triggers=y constraints=y compress=y log=backup. Veja que os dois arquivos que especificamos (backup. Deverá ser exibida a seguinte seguinte mensagem: Figura 5.23: Exportação Lógica Após ser exibida a mensagem anterior.dmp) foram criados.

Figura 5. Como deve acontecer. Ao excluir o seu usuário deverá ser exibida uma tela semelhante à seguinte: 113 .24: Diretório dos Arquivos Lógicos Exportados Importação. vamos ver como importálos. havia uma cópia atualizada de nosso banco de dados em uma mídia de armazenamento. Agora que exportamos nossos dados com sucesso. Imaginemos que nosso servidor de dados foi atacado por vírus e sofreu uma avaria irreversível. Para simular esse teste apague o seu usuário e inclua no comando a opção cascade.

deverá ser exibida a seguinte mensagem: 114 . Para essa tarefa use o usuário system do seu banco de dados. Após a criação do usuário com seus respectivos privilégios. Por último indicamos o “dono” dessas informações. os privilégios e as restrições. com o mesmo nome e os mesmo privilégios. Se o processo for executado sem erros. o usuário que executou a exportação e para finalizar dizemos qual usuário que receberá os dados. ou seja. Em seguida informamos o por meio de qual usuário e senha iremos realizar a importação.dmp constraints=y fromuser=daniel touser=daniel indexes=y rows=y grants=y O comando de importação é semelhante ao de exportação. feche o SQL*Plus. Também informamos que queremos importar os índices. os registros.Figura 5. Vamos analisá-lo: primeiramente informamos que queremos importar um arquivo por meio do comando imp. Inicie novamente o prompt de comando e digite o seguinte código para realizar a importação: imp daniel/daniel file=backup.25: Exclusão de usuário Confirme a exlusão com o comando commit. Depois informamos o nome do arquivo dump. Agora criaremos esse usuário novamente.

115 .27: Select Após Importação • Backup físico Exportação.Figura 5. não é possível filtrar objetos ou informações que serão armazenados. gravamos todos os objetos e informações de todos os usuários. Após se conectar executa um comando SQL qualquer para ver se os dados realmente foram importados. Ele é bem mais simples que o backup lógico. Feche o prompt de comando e abra o SQL*Plus. Para realizar o backup físico não encontraremos dificuldades. Dessa forma. quando realizamos esse tipo de backup. O backup físico tem esse nome porque ele copia todos os arquivos que fazem parte do banco de dados. Exemplo: Figura 5.26: Importação Lógica Agora vamos verificar se os dados foram realmente importados. pois o Oracle 10g XE possui uma ferramenta específica para realizar esse tipo de backup. ou seja.

basta pressionar qualquer tecla para finalizar o processo de exportação. o processo para realizar o backup físico é o mesmo. Ele é realizado quando o banco de dados não está iniciado.28: Exportação Física Assim que sua tela ficar como a mostrada anteriormente. Vamos então exportar nossa base de dados. Backup on-line: é conhecido também como backup quente (hot backup). Espere até que sua tela esteja parecida com a seguinte: Figura 5. O processo de exportação dos dados iniciará. é criada uma pasta com os arquivos que foram exportados. Ele é realizado quando o banco de dados está iniciado. Clique na opção Fazer Backup do Banco de Dados que está no menu: “Iniciar – Todos os programas – Oracle Database 10g Express Edition”. coisa que não é possível fazer no backup lógico. Vamos localizar essa pasta! No Windows Explorer. Temos dois tipos de backup físico: backup off-line e backup on-line. Será exibida uma mensagem de aviso. Pressione Y para confirmar e em seguida pressione “Enter”. Backup off-line: é conhecido também como backup frio (cold backup). localize o diretório: C:\oraclexe\app\oracle\flash_recovery_area\XE\AUTOBACKUP Veja o exemplo do arquivo de backup: 116 . Independente da situação do banco de dados (se foi iniciado ou não). Assim que o backup é finalizado.O backup físico pode ser realizado quando o banco de dados não está iniciado.

29: Diretório dos Arquivos Físicos Exportados Veja que foi criada um pasta com a data atual.Figura 5. Abra essa pasta e veja que nosso arquivo de backup está dentro dela. volte ao seguinte diretório: C:\oraclexe\app\oracle\flash_recovery_area\XE Nesse diretório há a pasta BACKUPSET. Após verificar o arquivo. Nessa pasta temos o seguinte conteúdo: 117 .

Pressione Y para confirmar e em seguida pressione “Enter”. exemplificada anteriormente. pois o Oracle 10g XE oferece uma ferramenta para isso. Após a conclusão. Vamos importar nossa base de dados. temos o arquivo que armazena todos os arquivos de dados. sua tela deverá estar parecida com a seguinte: 118 .30: Diretório dos Arquivos Físicos Exportados 2 Dentro dessa pasta. Importação.Figura 5. que são todas as informações armazenadas na estrutura do banco de dados. Para realizar a importação dos dados é muito simples. Aparecerá uma mensagem aviso. Será inciado o processo de importação dos dados do nosso backup. Clique na opção Restaurar Banco de Dados que está no menu: “Iniciar – Todos os programas – Oracle Database 10g Express Edition”.

31: Importação Física Pressione qualquer tecla para finalizar o processo. assim. Se permanecer qualquer dúvida. Finalizamos. “Espero que todos tenham aproveitado ao máximo esse curso. nosso curso de Banco de Dados Oracle 10g Express Edition. não hesite nunca em perguntar. Vale lembrar que se os arquivos de backup forem gravados em uma mídia de armazenamento. o idiota é não fazer perguntas e permanecer com dúvidas! Sucesso à todos e que Deus nos abençoe!!!” DANIEL SILVA NUNES (Analista de Sistemas Jr. eles terão que ser colocados na mesma pasta. ou seja.Figura 5. pois não há pergunta que seja idiota. pois o Oracle irá buscá-lo nas pastas padrões de backups físicos. no mesmo caminho em que estavam quando foram exportados.) 119 .

Sign up to vote on this title
UsefulNot useful