48576737 banco de dados oracle 10g

Upload: leonardo-peixoto

Post on 07-Jul-2015

1.203 views

Category:

Documents


0 download

TRANSCRIPT

Desenvolvido por Daniel Silva Nunes

ndice Introduo..........................................................................................................................1 Viso geral da Oracle....................................................................................................1 O que o BD Oracle 10g XE........................................................................................1 1 Etapa..............................................................................................................................2 Instalao do Oracle 10g XE........................................................................................2 Apresentao das ferramentas do Banco......................................................................3 Ferramentas SQL*Plus.................................................................................................3 Criao e excluso de usurios.....................................................................................4 Edio de senhas dos usurios......................................................................................7 Privilgios.....................................................................................................................8 2 Etapa............................................................................................................................10 Tipos de dados............................................................................................................10 Criao e manipulao de tabelas...............................................................................12 Relacionamento de tabelas..........................................................................................17 Tipos de Constraints. .................................................................................................17 Manipulao de dados com SQL................................................................................26 Commit e Rollback.....................................................................................................32 Rotulando campos das tabelas.................................................................................33 Concatenando colunas................................................................................................36 3 Etapa............................................................................................................................37 Criao e execuo de scripts SQL.............................................................................37 Operadores lgicos em SQL.......................................................................................41 Funes de ordenao.................................................................................................54 SELECT com mais de uma tabela..............................................................................59 Funes 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 Servios do Oracle 10g.............................................................................................108 Backup lgico ..........................................................................................................111 Backup fsico............................................................................................................115 ndice de Figuras Figura 1.1: Assistente de Instalao............................................................................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 aps Delete.....................................................................32 Figura 2.20: Rollback..................................................................................................33 Figura 2.21: Select Cidades 5.....................................................................................34 Figura 2.22: Select com Rtulo..................................................................................35 Figura 2.23: Select com Rtulo 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: Diretrio do Script....................................................................................40 Figura 3.5: Select Cidades Codigo 7...........................................................................44 Figura 3.6: Operador Lgico Diferente ..................................................................45 Figura 3.7: Oprador Lgico Maior..........................................................................45 Figura 3.8: Operador Lgico Menor.......................................................................46 Figura 3.9: Operador Lgico Maior ou Igual..........................................................47 Figura 3.10: Operador Lgico Menor ou Igual.......................................................47 Figura 3.11: Operador Lgico And.........................................................................48 Figura 3.12: Operador Lgico Or............................................................................48 Figura 3.13: Operador Lgico Between..................................................................49 Figura 3.14: Operador Lgico In.............................................................................50 Figura 3.15: Operador Lgico %Like.....................................................................51 Figura 3.16: Operador Lgico Like%.....................................................................51 Figura 3.17: Operador Lgico %Like%..................................................................52 Figura 3.18: Operador Lgico Not In......................................................................53 Figura 3.19: Operador Lgico Not Like..................................................................53 Figura 3.20: Funo 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

Figura 3.31: Select com Join 2....................................................................................66 Figura 3.32: Select com Outer Join.............................................................................67 Figura 3.33: Funo SQRT.........................................................................................68 Figura 3.34: Funo ROUND.....................................................................................69 Figura 3.35: Funo TRUNC......................................................................................69 Figura 3.36: Funo TRUNC 2...................................................................................70 Figura 3.37: Funo POWER.....................................................................................71 Figura 3.38: Funo UPPER.......................................................................................71 Figura 3.39: Funo LOWER.....................................................................................72 Figura 3.40: Funo REPLACE.................................................................................73 Figura 3.41: Funo NVL...........................................................................................74 Figura 3.42: Funo TO_CHAR.................................................................................75 Figura 3.43: Funo SYSDATE.................................................................................75 Figura 3.44: Funo LAST_DAY...............................................................................76 Figura 3.45: Funo ADD_MONTHS........................................................................77 Figura 3.46: Funo DECODE...................................................................................77 Figura 3.47: Funo DECODE 2................................................................................78 Figura 3.48: Funo AVG...........................................................................................79 Figura 3.49: Funo MAX..........................................................................................79 Figura 3.50: Funo MIN...........................................................................................80 Figura 3.51: Funo SUM...........................................................................................80 Figura 3.52: Funo COUNT.....................................................................................81 Figura 3.53: Funo COD_VENDEDOR...................................................................82 Figura 3.54: Funo COUNT DISTINCT..................................................................82 Figura 4.1: Create Function........................................................................................84 Figura 4.2: Executando Function................................................................................85 Figura 4.3: Create Procedure......................................................................................86 Figura 4.4: Executando Procedure..............................................................................87 Figura 4.5: Verificando resultado da Procedure.........................................................87 Figura 4.6: Criando Sequence.....................................................................................89 Figura 4.7: Criando Trigger........................................................................................90 Figura 4.8: Inserindo Registro....................................................................................91 Figura 4.9: Verificando Vendas..................................................................................92 Figura 4.10: Criando View.........................................................................................93 Figura 4.11: Visualizando View.................................................................................94 Figura 4.12: Campo Nome da Tabela Vendedores.....................................................95 Figura 4.13: Criando Index.........................................................................................96 Figura 4.14: Funcionalidade do Index........................................................................96 Figura 5.1: Menu Ir para a Home Page do Banco de Dados.......................................97 Figura 5.2: Opes do Application Express...............................................................98 Figura 5.3: Informaes de armazenamento do Application Express........................98 Figura 5.4: Usurios do Banco de Dados....................................................................99 Figura 5.5: Tela Criar Usurio do Banco de Dados....................................................99 Figura 5.6: Tela Alterar Minha Senha......................................................................100 Figura 5.7: Tela Browser de Objetos........................................................................101 Figura 5.8: Tela Criar Tabela....................................................................................102 Figura 5.9: Tela Chave Primria...............................................................................102 Figura 5.10: Tela Restries.....................................................................................103 Figura 5.11: Tela Confirmar.....................................................................................103 Figura 5.12: Visualizao da Estrutura da Tabela Oracle.........................................104 Figura 5.13: Visualizao dos Objetos.....................................................................104 Figura 5.14: Tela Comandos SQL............................................................................105

Figura 5.15: Visualizao dos Dados na Tabela Oracle...........................................106 Figura 5.16: Tela Gerar DLL....................................................................................107 Figura 5.17: Scripts SQL..........................................................................................107 Figura 5.18: Servios................................................................................................108 Figura 5.19: Interrompendo Banco de Dados...........................................................109 Figura 5.20: Erro gerado...........................................................................................110 Figura 5.21: Erro gerado 2........................................................................................110 Figura 5.22: Iniciando Banco de Dados....................................................................111 Figura 5.23: Exportao Lgica................................................................................112 Figura 5.24: Diretrio dos Arquivos Lgicos Exportados........................................113 Figura 5.25: Excluso de usurio..............................................................................114 Figura 5.26: Importao Lgica................................................................................115 Figura 5.27: Select Aps Importao........................................................................115 Figura 5.28: Exportao Fsica.................................................................................116 Figura 5.29: Diretrio dos Arquivos Fsicos Exportados.........................................117 Figura 5.30: Diretrio dos Arquivos Fsicos Exportados 2......................................118 Figura 5.31: Importao Fsica.................................................................................118 ndice de Tabelas Tabela 1.1: Permisses..................................................................................................9 Tabela 2.1: Tipos de Dados........................................................................................12 Tabela 2.2: Tabela Cidades.........................................................................................26 Tabela 2.3: Cidade 2...................................................................................................29 Tabela 3.1: Cidade 3...................................................................................................38 Tabela 3.2: Operadores Lgicos.................................................................................42 Tabela 3.3: Cidade 4...................................................................................................42 Tabela 3.4: Cidade 5...................................................................................................42 Tabela 3.5: Cidade 6...................................................................................................42 Tabela 3.6: Cidade 7...................................................................................................43 Tabela 3.7: Cidade 8...................................................................................................43 Tabela 3.8: Tabela Vendas..........................................................................................59 Tabela 3.9: Tabela Vendedores...................................................................................60 Tabela 3.10: Venda 1..................................................................................................60 Tabela 3.11: Venda 2..................................................................................................60 Tabela 3.12: Venda 3..................................................................................................60 Tabela 3.13: Venda 4..................................................................................................61 Tabela 3.14: Venda 5..................................................................................................61 Tabela 3.15: Vendedor 1.............................................................................................61 Tabela 3.16: Vendedor 2.............................................................................................61 Tabela 3.17: Vendedor 3.............................................................................................62 Tabela 3.18: Vendedor 4.............................................................................................62 Tabela 3.19: Vendedor 5.............................................................................................62 Tabela 3.20: Vendedor 6.............................................................................................73 Tabela 4.1: Venda 6....................................................................................................91 Tabela 5.1: Tabela Oracle.........................................................................................101

Introduo Viso geral da Oracle.

H quase trinta anos, Larry Ellison vislumbrou uma oportunidade que outras companhias no haviam percebido, quando encontrou uma descrio de um prottipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia. Ellison e os co-fundadores da Oracle, Bob Miner e Ed Oates, perceberam que havia um tremendo potencial de negcios no modelo de banco de dados relacional, mas no se deram conta de que mudariam a face da computao empresarial para sempre. Hoje a Oracle (Nasdaq: ORCL) continua frente de seu tempo. A tecnologia Oracle pode ser encontrada em quase todos os setores do mundo inteiro e nos escritrios de 98 das empresas citadas na lista Fortune 100. 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, aplicativos empresariais e ferramentas para desenvolvimento de aplicativos e suporte a decises. A Oracle o principal fornecedor de software para gerenciamento de informaes e a segunda maior empresa de software independente do mundo. A Oracle uma empresa inovadora. Foi uma das primeiras a tornar seus aplicativos empresariais disponveis atravs da Internet -- atualmente, esse conceito predominante. Agora, a Oracle est comprometida em garantir que todo o seu software seja projetado para trabalhar em conjunto a abordagem de sute e outras empresas, analistas e a imprensa vem reconhecendo que ela est certa. O que estamos preparando para o futuro? Continuaremos a inovar e liderar o mercado nos preocupando sempre em resolver os problemas dos nossos clientes. www. oracle.com/global/br/corporate/story.html O que o BD Oracle 10g XE.

O BD Oracle 10g Express Edition a verso gratuita do BD da Oracle. Esse um BD relacional, ou seja, baseado no conceito de tabelas para armazenamento de dados. Foi desenvolvido visando a comunidade acadmica, j que os estudantes da rea de tecnologia no tinham acesso s verses licenciadas desse banco, pois as mesmas so muito caras para as pessoas em comum e at mesmo para pequenas empresas. Frente a esse fato, os profissionais que sabiam trabalhar com esse banco estavam cada vez mais escassos. Por esse motivo a Oracle lanou sua verso gratuita do seu BD, para que mais pessoas tivessem acesso ele e conhecessem essa magnfica ferramenta. O BD possui suporte ao PL/SQL, verso otimizada da linguagem SQL, que utilizada para a comunicao com o BD, desenvolvida pela Oracle e que tambm ser apresentada no decorrer do curso. O Oracle 10g Express Edition conta ainda com o mesmo suporte oferecido pela sua verso comercial, para quem desenvolve softwares, integrao com as linguagens Java, C++, PHP, VB.NET, C, entre outros.

1

1 Etapa Instalao do Oracle 10g XE. Nesse curso utilizaremos a verso do Oracle XE para Windows. A Oracle tambm possui a verso para Linux desse BD para aqueles que preferem esse SO. Para quem desejar baixar o Oracle XE, basta acessar o endereo abaixo: http://www.oracle.com/technology/software/products/database/xe/index.html Caso voc ainda no tenha se cadastrado no site da Oracle, o cadastro ser requerido e voc pode faz-lo pois totalmente grtis. Com o software devidamente baixado em seu microcomputador, basta dar um duplo clique sobre ele para iniciar a instalao. Como padro no Windows, depois que a janela do instalador estiver aberta, basta clicar em Prximo at chegar na seguinte tela:

Figura 1.1: Assistente de Instalao Nessa etapa dever ser informada a senha do usurio System, que o usurio padro do Oracle XE. Dica: escolha seu primeiro nome (opcional). Feito isso, clique em prximo e na tela que seguinte clique em instalar. Aps instalado ser exibida a janela de confirmao da instalao. Desmarque a opo Acionar a homepage do Banco de Dados e clique em Finalizar.

2

Apresentao das ferramentas do Banco.

Aps a concluso da instalao, acesse o menu Iniciar, exiba todos os programas e procure a pasta Oracle Database 10g Express Edition.

Figura 1.2: Menu Iniciar Pode-se visualizar 8 opes: 1. Diretrio Obter Ajuda: nesse diretrio temos mais 4 opes de ajuda online, que no sero aqui discutidas. 2. Executar linha de comandos SQL: essa opo abre o SQL*Plus, que ser muito utilizada nesse curso. 3. Fazer Backup do Banco de Dados: opo para backup do banco, que ser discutida mais adiante aqui no curso. 4. Iniciar Banco de Dados: caso o banco no esteja iniciado essa opo d um start no banco. 5. Interromper Banco de Dados: essa opo encerra todos os servios do banco de dados que estiverem sendo executados no computador. 6. Ir para a Home Page de Banco de Dados: essa opo abre uma tela para gerenciamento do BD no navegador padro do computador. 7. Obter ajuda: outra opo de ajuda online, que aqui no ser discutida. 8. Restaurar Banco de Dados: caso haja um arquivo de backup essa opo utilizada para restaurar esse arquivo. Ferramentas SQL*Plus. Para iniciar, iniciaremos a opo Executar linha de comandos SQL. Dever aparecer a seguinte tela: 3

Figura 1.3: SQL*Plus Essa a tela inicial do SQL*Plus. Ser esse ambiente que usaremos no decorrer de grande parte do tutorial. Nessa tela digite conn; e pressione a tecla Enter. O comando conn; serve para o usurio conectar-se ao BD. Criao e excluso de usurios.

Como estamos acessando o BD pela primeira vez aps a instalao, o nico usurio existente o system. Portanto digite system assim que o SQL*Plus solicitar e pressione Enter. Aps isso o SQL*Plus solicitar a senha. Informe a senha que voc cadastrou no momento da instalao do BD. Podemos ainda visualizar qual usurio est conectado ao banco. Para isso utilizamos o seguinte comando: show user; Aps digitar esse comando pressione Enter. A tela dever estar como abaixo:

4

Figura 1.4: Show User No aconselhvel usar o usurio padro do Oracle, pois o mesmo pode realizar toda e qualquer ao dentro do banco de dados, e isso muito perigoso, pois somente o administrador do BD deve possuir tais privilgios. Portanto aprenderemos a seguir como criar usurios no BD. Para criarmos usurios no Oracle utilizamos o seguinte comando: create user [login] identified by [senha]; Onde [login] o nome do usurio e [senha] ser o cdigo de acesso dele ao banco. Como em geral, recomenda-se no usar caracteres especiais para login e senha. Vamos aos testes! A partir desse ponto exercitaremos a criao de usurios. Suponha que voc o administrados do banco de dados de uma organizao e, portanto, voc o responsvel pela criao de usurios. Cadastre alguns usurios (5 ao menos) no Oracle, mas ateno aos logins e senhas, pois utilizaremos esses usurios para exerccios posteriores ( recomendvel que tais informaes sejam anotadas em algum lugar de sua preferncia). Sempre que um usurio criado corretamente dever ser exibida a mensagem de confirmao, como no exemplo a seguir:

5

Figura 1.5: Create User Fatec Suponha que voc est cadastrando usurios que foram recentemente contratados pela empresa onde voc trabalha. Como so funcionrios novos na empresa, consequentemente eles no possuam usurio e senha de acesso ao sistema, por isso voc ficou encarregado de realizar essa tarefa. Mas vamos supor uma outra situao: a empresa onde voc trabalha demitiu alguns funcionrios. Lgicamente voc precisar excluir esse usurios do banco de dados. Desse modo, veremos a seguir o comando que nos possibilita a excluso de usurios do BD. Para excluirmos usurios no Oracle utilizamos o seguinte comando: drop user [login] cascade; Onde o [login] o nome do usurio que deseja-se deletar. A palavra CASCADE no fim do comando significa "em cascata" e opcional. Quando criamos objetos dentro do banco de dados (tabelas, funes, etc.), estes objetos ficam na rea do usurio que os criou e se este for deletado seus objetos sero deletados tambm. Para que essa excluso "em cascata" ocorra, o comando CASCADE deve estar presente ao final do comando DROP USER. Caso o comando CASCADE no esteja no fim da linha de comando ser exibida na tela uma mensagem de erro da Oracle. Esse comando s ser dispensvel caso o usurio em questo no tenha criado nenhum objeto no BD. Aps a excluso de um usurio dever aparecer na tela uma mensagem tal qual a ilustrao a seguir:

6

Figura 1.6: Drop User Fatec Edio de senhas dos usurios.

Outra funo muita usada por um administrador de banco de dados a alterao de senhas dos usurios. Normalmente nas empresas em geral o usurio cadastrado com uma senha padro, mas que pode posteriormente ser alterada, segundo a solicitao do mesmo. Veremos agora como fazer para alterar a senha de um usurio. Para alterarmos as senhas dos usurios no Oracle utilizamos o seguinte comando: alter user [login] identified by [nova senha]; Onde [login] o nome do usurio que deseja-se alterar e [nova senha] o novo cdigo de acesso do usurio ao banco. Vale lembrar que caracteres especiais so dispensveis! Assim que um usurio alterado, a tela dever estar parecida com a que segue:

7

Figura 1.7: Alter User Fatec importante ressaltar que toda alterao de senha deve ser anotada em um local aonde o administrador do banco de dados poder consultar posteriormente, pois casos em que o usurio esquece a senha no so raros.

Privilgios.

Como j foi comentado anteriormente, o usurio padro (System) do Oracle pode executar qualquer ao dentro do banco. Por isso demos incio aos tpicos de criao, excluso e alterao de usurios dentro do banco de dados. Mas isso de nada adiantaria se esses usurios tivessem as mesmas permisses do usurio System. Por isso neste tpico, aprenderemos como adicionar ou remover permisses de um usurio. Mas antes disso interessante conhecer os tipos de permisses e suas caractersticas. Privilgio CONNECT Descrio Permite que o usurio conecte-se ao banco de dados e execute aes bsicas nele. Conceda este privilgio ao usurio ou aplicao que necessite acessar o banco de dados. CONNECT inclui o privilgio CREATE SESSION, que permite somente acesso ao banco. Permite que um usurio administre todos os objetos do banco de dados, inclusive os demais usurios, mas no inclui os privilgios necessrios para iniciar ou parar o banco de dados, start up e shut down, respectivamente. DBA inclui o privilgio de sistema com WITH ADMIN OPTION, que significa: com opo de administrao. Permite que o usurio crie objetos (tabelas, funes, etc). Conceda este privilgio apenas aos usurios que desenvolvem no banco de dados. RESOURCE inclui os seguintes privilgios do sistema: CREATE CLUSTER, CREATE INDEXTYPE, CREATE 8

DBA

RESOURCE

OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, e CREATE TYPE . Tabela 1.1: Permisses Agora que j conhecemos as permisses, vamos fazer alguns testes. Conectese ao banco com o usurio SYSTEM, caso no esteja. Crie um usurio com o seu nome, a senha ficar por sua conta. Quando desejamos adicionar/alterar a permisso de usurios, utilizamos o comando GRANT (conceder). A sintaxe desse comando muito simples, como pode-se notar a seguir: grant [privilgio] to [usurio]; possvel conceder mais de um privilgio a um usurio numa mesma linha de comando. Para isso necessrio separar os privilgios com uma vrgula. Ex: grant [privilgio1, privilgio2] to [usurio]; H tambm a possibilidade de conceder um ou mais privilgios a um ou mais usurios, bastando somente separar o nome dos usurios com uma vrgula, tal qual demonstramos no exemplo anterior. Ex: grant [privilgio1, privilgio2] to [usurio1, usurio2]; Um usurio que no possui o privilgio de DBA pode conceder permisses a outros usurios, porm ele s pode conceder as permisses que ele possui. E ele s poder fazer isso se quando esse usurio recebeu a permisso foi especificado no comando grant a opo WITH ADMIN OPTION. Para melhor entendimento, segue a sintaxe do comando: grant [resource] to [usurio1] with admin option; No exemplo acima o usurio poder conceder o privilgio resource a qualquer outro usurio, pois est especificado na ltima parte do comando a opo with admin option. Agora que sabemos como conceder privilgios usurios, vamos conhecer o comando para tirar privilgios. O comando que nos possibilita esse ao o REVOKE (revogar). A sintaxe desse comando no possui segredos, como pode ser observado a seguir: 9

revoke [privilgio] from [usurio]; Assim como no comando grant podemos revogar mais de um privilgio de um ou mais usurios na mesma linha de comando. Ex: revoke [privilgio1, privilgio2] from [usurio]; ou revoke [privilgio1] from [usurio1, usurio2]; Ou ainda podemos revogar mais de uma permisso de mais de um usurio no mesmo comando, fazendo uma juno dos dois comandos demonstrados anteriormente: revoke [privilgio1, privilgio2] from [usurio1, usurio2]; Um usurio que no tem o privilgio DBA pode tirar privilgio de outro usurio, mas somente se o primeiro estiver habilitado para conceder esse privilgio, o que o obriga a possuir tal privilgio. Para acabar com qualquer confuso, vamos aos testes! Faremos vrios testes com diferentes usurios e permisses para ver na prtica o que cada privilgio concede ao usurio. Logo aps faremos vrios testes para tirar as permisses dos usurios e ver quem pode o qu.

2 Etapa Tipos de dados. Para todo administrador do banco de dados ou desenvolvedor de sistemas em geral extremamente importante saber quais os tipos de dados que sero armazenados. Isso porque quanto melhor especficas forem essas informaes melhor ser o rendimento do banco de dados. Vamos analisar juntos: se eu necessito de um campo para armazenar o CPF de um cliente, no faz sentido algum eu definir esse campo para que o mesmo receba letras. Esse foi um exemplo banal, mas que perfeitamente adequado nossa realidade. 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 espaos desperdiados, campos inteis, etc, so extremamente prejudiciais ao desempenho do sistema. Frente a esses fatos importante saber os tipos de dados que podemos armazenar na tabelas. 10

A seguir observamos uma tabela com os tipos de dados suportados Oracle XE: Tipo de dados NUMBER Descrio

pelo

Armazena nmeros reais com sinal (negativos e positivos), tem preciso de 1 a 38 no que se refere casas decimais. aconselhvel utiliz-lo quando os valores numricos possam ser utilizados para clculos. Ex: NUMBER(12,2) onde o valor 12 referese a quantidade mxima de nmeros antes das vrgula e o valor 2 refere-se a quantidade de casas decimais aps a vrgula. Para campos de texto, cujo comprimento fixo, determinado por n, cujo tamanho mximo de 2000 caracteres. Ex: CHAR(5) Para campos de texto de comprimento varivel com tamanho mximo dimensionado por N, cujo maior valor possvel 4000 caracteres. Recomenda-se o uso deste campo sobre o char. Ex: VARCHAR2(50) Assim como os campos do tipo varchar2, os campos do tipo nvarchar2 tambm armazenam textos de comprimentos variveis, porm h casos onde na presena de caracteres especiais o varchar2 poder aparecer desconfigurado. Em casos com esse se o nvarchar2 for utilizado esse erro no acontecer. Ex: a palavra pendncia pode ser exibida como pend?encia se for do tipo varchar2, o que no ocorre se ela for do tipo nvarchar2. Utilizado em campos do tipo data e hora. Utilizado em campos do tipo data e hora, incluindo valores de milissegundos . Para compos que armazenaro dados binrios (sons, imagens, vdeos, etc.) de tamanho varivel at um limite mximo de 4GB Para campos de textos de tamanho varivel com um tamanho mximo de 4GB, muito til para textos longos. 11

CHAR

VARCHAR2

NVARCHAR2

DATE TIMESTAMP BLOB (binary large object)

CLOB (character large object)

BINARY_FLOAT

Nmero de ponto flutuante, com cumprimento ao IEEE-754, de preciso simples. Necessita de menos memria e utiliza aritmtica de mquina nativa - o que proporciona alto desempenho para sistemas de computao intensiva. Pode ser comparado ao infinitivo ou ao NaN (Not a Number). Apresenta o armazenamento da preciso binria, que pode gerar erros ao realizar arredondamento. Semelhante ao BINARY_FLOAT, porm com preciso dupla. Ainda assim armazenado com preciso binria no deve ser utilizado em sistemas com necessidades financeiras de arredondamento. Alto desempenho pois utiliza a aritmtica de mquina nativa. Tabela 2.1: Tipos de Dados

BINARY_DOUBLE

Agora que j conhecemos os tipo de dados suportados pelo Oracle 10g Express Edition, vamos partir para o prximo passo. Criao e manipulao de tabelas.

Quando falamos de banco de dados relacional automaticamente estamos nos remetendo ao conceito de tabelas para armazenagem da massa de dados. No detalharemos aqui o conceito de tabelas, tuplas, etc, pois no esse o objetivo do curso. Nosso foco a partir daqui ser a criao, manipulao e manuteno de tabelas. A sintaxe para criao de tabelas a seguinte: create table [nome da tabela] ( [nome do campo 1] [tipo] [valor padro] [nulo?], [nome do campo 2] [tipo] [valor padro] [nulo?], . . . [nome do campo n] [tipo] [valor padro] [nulo?] ); [Nome da tabela] onde deve ser informado o nome de identificao da tabela, [nome do campo 1], [nome do campo 2], etc, so os nomes que sero atribudos s colunas; [tipo] o tipo de dados que cada coluna armazenar (os tipos possveis foram mostrados na ltima tabela deste documento); [nulo?] onde devemos informar se a tabela poder conter valores nulos (vazios) ou no. Observemos a seguir o bloco de comandos da criao da nossa primeira tabela:

12

create table teste ( codigo varchar2(10) nome varchar2(50) sexo char(1) default 'M' dt_nasc date idade number );

not null, not null, not null, null, null

Aps a digitao desse bloco de cdigo devemos pressionar a tecla Enter para confirmar a criao da nossa tabela 'TESTE'. Se no houver nenhum erro no cdigo, sua tela dever estar semelhante tela a seguir:

Figura 2.1: Create Table Teste Aps criarmos uma tabela, podemos visualizar sua estrutura utilizando o comando DESCRIBE, ou DESC, tanto faz. A sintaxe desse comando a seguinte: desc [nome da tabela]; Vamos fazer um teste: digite no SQL*Plus o comando: desc teste; Nos exibida a seguinte tela:

13

Figura 2.2: Desc Teste 1 Por se tratar de um comando extremamente simples, dispensaremos explicaes sobre ele. Aps a criao de uma tabela, comum alterarmos as propriedades de seus campos, embora o ideal que no seja necessrio a alterao da estrutura da tabela. Mas por vezes somos obrigados a isso, seja por alteraes na legislao do pas, alterao na regra de negcio da empresa, ou por qualquer outro motivo. Perante essa situao, vamos conhecer os comando para que seja possvel adicionar, remover e alterar as propriedades de um campo. Primeiramente veremos como alterar um campo em uma tabela. Utilizaremos a tabela criada anteriormente para esses exerccios. Segue a sintaxe do comando para alterao das propriedades do campo: alter table [nome da tabela] modify [nome do campo] [tipo]; Onde [nome da tabela] o nome de identificao da tabela no banco, [nome do campo] o campo que ser alterado e [tipo] a alterao que faremos nele. Podemos, alm de modificar o tipo do campo, modificar tambm seu valor padro e se poder ser nulo ou no. Vamos supor que nossa inteno seja alterar o campo cdigo. Atualmente ele est com o tipo varchar2(10) e ns iremos alter-lo para number. Para realizarmos essa alterao utilizamos o cdigo que segue: alter table teste modify codigo number; Aps a digitao do cdigo anterior, pressionamos a tecla Enter e nos dever ser exibida uma tela semelhante essa: 14

Figura 2.3: Desc Teste 2 No exemplo anterior alteramos apenas o tipo de dado que o campo armazenar, mas perfeitamente possvel alterar o valor padro desse campo assim como se ele poder ou no ser nulo. Faa teste nos demais campos antes de prosseguir. Dando sequencia aos nossos testes, veremos agora como adicionar um campo em uma tabela. A sintaxe para adio de campos em uma tabela a seguinte: alter table [nome da tabela] add ([nome do campo] [tipo] [nulo?]); Onde [nome da tabela] o nome de identificao da tabela, [nome do campo] o campo que ser adicionado, [tipo] o tipo de dados que o campo armazenar e [nulo?] a propriedade que indica se o campo poder ser nulo ou no. Vale lembrar que podemos ainda definir o valor padro do campo. Vamos supor que na tabela testes devemos criar um campo chamado rg, para armazenar o nmero desse documento dos indivduos que sero cadastrados. Para realizamos essa alterao utilizamos o comando a seguir: alter table teste add (rg varchar2(12) null); Ao digitar o comando acima, pressione Enter para confirmar a alterao. Agora utilize o comando desc para ver como ficou a estrutura da sua tabela. Ela deve estar parecida com a tabela ilustrada na sequencia:

15

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 identificao da tabela e [nome do campo] o campo que ser excludo. Vamos apagar a coluna que acabamos de criar: rg. Digite o cdigo: alter table teste drop column rg; Aps a digitao do cdigo 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 SERO AUTOMATICAMENTE EXCLUDOS SEM AVISO PRVIO!!! Agora que j sabemos como alterar, incluir e excluir campos de uma tabela, vamos exercitar os conhecimentos at aqui adquiridos. Faa testes e veja pense em diferentes situaes que possam ser aplicados os conceitos at aqui discutidos. Relacionamento de tabelas.

Por mais tabelas que um banco de dados tenha, elas nunca podero ser independentes umas das outras. Em banco de dados, vemos que as tabelas relacionam-se entre si, por meio de campos que ns definimos. A esses campos chamamos de chaves primrias e chaves estrangeiras. No explicaremos aqui o conceito de chave primria e estrangeira pois no o objetivo do curso. Partiremos do princpio que todos sabem, ao menos na teoria, o que uma chave primria e o que uma chave estrangeira. A seguir comearemos a discutir como tratar esses campos dentro do Oracle 10g Express Edition.

Tipos de Constraints.

A partir daqui trataremos de um assunto de extrema importncia. Constraints so restries que colocamos para determinados campos das tabelas do BD. Antes de definirmos os campos que recebero essas restries, precisamos primeiro analisar cuidadosamente a regra de negcio envolvida, pois uma restrio errada pode complicar toda programao futura. Vamos estudar trs tipos de constraints: primary ker, foreign key e check. Comearemos pela primary key. 17

Uma contraint do tipo primary key (chave primria), deve ser atribuda 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 cdigo foi colocado de propsito para que viesse a ser nossa chave primria. O campos CPF tambm poderia ser definido como chave primria, j que no existe CPFs com nmeros iguais, mas para facilitar utilizaremos o campo cdigo. 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 restrio e [campo] o nome do campo que possuir essa restrio. Agora que j conhecemos a sintaxe, podemos fazer o teste na tabela teste. Ento digite no SQL*Plus o seguinte cdigo: 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 so as iniciais de Chave Primria. sempre bom estabelecer um padro para criao de objetos dentro do banco de dados. Por isso utilizamos cp para sabermos que uma chave primria, e logo em seguida, complementado o nome da nossa contraint, utilizamos o nome da tabela a qual pertence a constraint. E para melhor visualizao 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

Figura 2.6: Alter Table Teste Add Constraint Podemos ainda criar uma chave primria composta por mais de um campo. No nosso caso isso no ser necessrio, mas como isso muito comum acontecer em um sistema, vamos aprender a sintaxe para criao de uma chave primria composta que muito parecida com a sintaxe que vimos anteriormente. Para que no fique nenhuma dvida, mostraremos a seguir como fazer uma chave primria composta:

alter table teste add constraint [nome da constraint] primary key ([campo1, campo2]);

Como pode ser observado, apenas a ltima parte do comando sofre alterao. Quando criamos uma chave primria composta devemos apenas separar os campos que faro parte dela com uma vrgula. At aqui vimos como criar uma chave primria em uma tabela que j existia no BD. Vamos agora ver como criar uma chave primria no momento de criao de uma tabela. A sintaxe para criao de uma chave primria no momento da criao da tabela segue: create table [tabela] ( [campo1] [tipo] [default] [nulo?], [campo2] [tipo] [default] [nulo?], . . . [campoN] [tipo] [nulo?], constraint [nome da constraint] PRIMARY KEY ([Campo]) );

19

Na verdade a nica coisa que devemos fazer para criar uma restrio no momento da criao da tabela fazer a juno dos dois comandos. Embora no haja segredos, vamos testar. Para isso vamos criar a tabela aluno. Abaixo segue o cdigo para criao da tabela aluno: create table aluno ( codigo number(5) not null, nome varchar2(50) not null, curso number(5) not null, sexo char(1) not null, constraint cp_aluno primary key (codigo) );

Confirme o comando pressionado Enter. No exemplo que vimos criamos uma chave primria simples, mas se desejssemos criar uma composta deveramos apenas informar os campos que a receberiam, separando-os com vrgula. Sua tela do SQL*Plus dever estar parecida com a seguinte:

Figura 2.7: Create Table Aluno Agora que sabemos como criar constraint do tipo chave primria, vamos aprender a criar constraint do tipo chave estrangeira. Uma chave estrangeira um campo que possuo em uma tabela e esse mesmo campo chave primria em outra tabela. Vamos inverter a ordem que seguimos no aprendizado de chave primria. Veremos primeiramente como criar uma chave estrangeira no momento da criao de uma tabela. Segue a sintaxe:

20

create table [tabela] ( [campo1] [tipo] [nulo?], [campo1] [tipo] [nulo?], . . . [campoN] [tipo] [nulo?], [campoE] [tipo] [nulo?], constraint [nome da constraint] foreign key ([campoE]) references [tabelaE]([campoE]) ); Onde [nome da constraint] o nome que daremos nossa chave estrangeira, [campoE] o campo que chave primria na [tabelaE] e que nessa tabela que criamos ser chave estrangeira. A diferena principal do cdigo de criao de chave estrangeira para chave primria que na chave estrangeira temos que especificar o nome da tabela em que esse campo chave primria e o nome desse campo na outra tabela, por meio do comando references. Vamos testar! Vamos agora criar a tabela nota_modulo. Essa tabela registrar a nota final dos alunos por mdulo. Como apenas uma tabela que usaremos para estudo ela ser o mais simples possvel. Possuir apenas trs campos: cod_modulo, cod_aluno e nota_final. create table nota_modulo ( cod_modulo number(5) not null, cod_aluno number(5) not null, nota_final number(2,2) not null, constraint ce_nota_modulo-aluno foreign key (cod_aluno) references aluno (codigo) ); Confirme o comando pressionando Enter. Sua tela do SQL*Plus dever estar parecida com a seguinte:

21

Figura 2.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. Note que chave primria e estrangeira no necessitam ter o mesmo nome, porm necessrio que elas armazenem o mesmo tipo de dados. Definimos o nome da constraint chave estrangeira seguindo o mesmo padro que usamos na definio da constraint chave primria. 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. Mesmo que a princpio parea complicado, futuramente isso nos auxiliar muito, basta apenas nos acostumarmos com determinados padres. Lembrando que seguir padres um bom hbito de programao, pois quando o sistema comea a ganhar volume esses padres facilitam a vida de qualquer desenvolvedor. No nosso caso criamos uma tabela com apenas uma chave estrangeira; mas e se quisssemos criar uma tabela com vrias constraints do tipo chave estrangeira? Muito simples, basta separar as constraints com vrgulas. Na sequencia exibida a sintaxe para esse caso: create table [tabela] ( [campo1] [tipo] [nulo?], [campo1] [tipo] [nulo?], . . . [campoN] [tipo] [nulo?], [campoE1] [tipo] [nulo?], [campoE2] [tipo] [nulo?], constraint [nome da constraint 1] foreign key ([campoE1]) references [tabelaE1] ([campoE1]),

22

constraint [nome da constraint 2] foreign key ([campoE2]) references [tabelaE2] ([campoE2]) );

Desse modo podemos criar quantas chaves estrangeiras forem necessrias no momento da criao das tabelas. At o momento vimos como criar chaves estrangeiras no momento da criao das tabelas. Vamos ver agora como criar chaves estrangeiras para tabelas que j existem. Bem, na verdade no h segredo nenhum, a nica coisa que temos que fazer usar o comando de criao de chave estrangeira dentro do comando alter table. Segue a sintaxe: alter table [tabelaX] add (constraint [nome da constraint] foreign key ([campoY]) references [tabelaY] ([campoY])); Usando esses comandos podemos criar chaves estrangeiras sem maiores problemas. Para finalizar essa parte de nossos estudos sobre contraints falta-nos conhecer o ltimo tipo de constraint que estudaremos aqui: constraint check. Mas, afinal de contas, para que serve a restrio check? Essa constraint serve para limitar as informaes que o usurio pode inserir em determinado campo. Para entendermos melhor, nada como vermos a aplicao na prtica. Usaremos a tabela aluno para entendermos melhor esse conceito. Nessa tabela temos o campo sexo. Esse campo est definido como tipo char(1), ou seja, s armazenar um caracter. Definimos esse campo dessa maneira para que nele seja informado 'M' ou 'F'. Mas e se o usurio errar na hora da digitao, e em vez de 'M' ou 'F' colocar uma outra letra qualquer, ou at mesmo um nmero? Se esse campo no possuir nenhuma restrio ele aceitar o que o usurio inserir. Como um erro perfeitamente possvel acontecer (e acredite, mais frequente do que se imagina) necessrio colocarmos uma restrio no campo sexo, para que o mesmo aceite apenas as letras 'M' ou 'F'. Vamos conhecer e entender a sintaxe do comando que adiciona check's: alter table [tabela] add (constraint [nome da constraint] check ([campo] [condio])); 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, [campo] o campo que receber a restrio e [condio] o que pode ou no ser inserido no campo. Vejamos na prtica!

23

Vamos adicionar uma restrio do tipo check no campo sexo da tabela aluno. A seguir o comando: alter table aluno add (constraint ck_sexo check (sexo in ('M', 'F'))); Confirme o comando pressionando Enter. Sua tela do SQL*Plus dever estar parecida com a seguinte:

Figura 2.9: Alter Table Aluno Add Constraint Vimos como com o comando anterior como adicionar uma constraint do tipo check em uma tabela j existente, mas como nos outros tipo de constraints possvel inserir a restrio no momento da criao da tabela. E, assim como nos outros tipos de constraints, extremamente simples fazer isso. Segue a sintaxe create table [tabela] ( [campo1] [tipo] [nulo?], [campo1] [tipo] [nulo?], . . . [campoN] [tipo] [nulo?], constraint [nome da constraint] check ([campo] [condio]) );

Seguindo a sintaxe do comando anterior podemos, sem maiores dificuldades, criar uma restrio do tipo check no momento da criao da tabela. At aqui aprendemos a criar restries no banco de dados Oracle 10g XE. 24

Veremos agora como apagar essas restries. Caso a restrio seja criada de maneira errada, ou mesmo que muda alguma situao e haja a necessidade de apagar uma restrio usamos um comando muito simples, 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 restrio em si. Vamos testar! Apagaremos a restrio do tipo check que criamos anteriormente na tabela aluno. A seguir o comando: alter table aluno drop constraint ck_sexo_aluno; Confirme o comando pressionando Enter. Sua tela do SQL*Plus dever estar parecida com a seguinte: [nome da

Figura 2.10: Alter Table Aluno Drop Constraint Finalizamos aqui nosso aprendizado sobre contraints. Sempre fique atento essas restries, pois so fundamentais para qualquer profissional que deseja trabalhar com o banco de dados Oracle, independente da verso do mesmo.

25

Manipulao de dados com SQL

At o momento vimos como formatar e organizar tabelas e campos. Mas at o momento no trabalhamos com dados, ou seja, com as informaes que precisaremos gerenciar. Pra incio de nossos estudos veremos como inserir dados em uma tabela. Para essa tarefa criaremos a tabela cidades com as seguintes especificaes: Tabela: cidades CAMPO codigo nome estado pais_regiao TIPO number varchar2 char TAMANHO 5 30 2 NULO No No No Sim

varchar2 20 Tabela 2.2: Tabela Cidades

Aps a criao dessa tabela, vamos inserir os dados. A sintaxe para insero de dados na tabela a seguinte: insert into [tabela] ([campo1, campo2,..., campoN]) values ([valor1, valor2,..., valorN]); Onde [tabela] o nome da tabela que receber os dados [campo1], [campo2], etc, so os nomes das colunas que recebero valores e [valor1], [valor2], etc, so as informaes que inseriremos. Sempre que formos inserir nmeros reais, no lugar da vrgula devemos colocar o ponto, pois a configurao de nmeros reais do Oracle 10g XE segue o padro dos Estados Unidos. E quando formos inserir dados do tipo de texto ou data, devemos colocar os valores entre aspas simples. Vamos agora inserir valores na tabela que acabamos de criar. Digite a seguinte linha de comando: insert into cidades (codigo, nome, estado, pais_regiao) values (1, Ourinhos, SP, Sudeste); Aps digitar o comando acima confirme pressionando a tecla Enter. Note que os dados que preenchero os campos do tipo char e varchar2 esto entre aspas simples. Sua tela do SQL*Plus dever estar como a seguinte:

26

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; Aps 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 espao muito pequeno para o campo estado, fazendo com que o nome do mesmo no aparea 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, no vamos analisar a sua sintaxe, mas veremos como ele funciona diretamente na prtica. Digite no SQL*Plus o seguinte comando: column estado format a8; O nmero 8 o espao que ser reservado para a exibio da coluna estado. Confirme o comando pressionando a tecla Enter. Neste momento no percebida nenhuma alterao; ento 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 esto 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 Aps a insero 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 no era para ser cadastrada com o cdigo nmero 2, em vez disso deveria ser cadastrada com o cdigo nmero 5. Em vez de apagar toda a linha, alteraremos apenas o campo necessrio. Para isso vamos usar o comando update. Ento digite no SQL*Plus o comando a seguir: update cidades set codigo = 5 where codigo = 2; Aps a digitao desse comando pressione a tecla Enter para confirmar. Se a operao for realizada com sucesso, sua tela do SQL*Plus dever estar parecida com a seguinte:

29

Figura 2.15: Update Cidades Agora digite um comando SQL que possibilite visualizar todos os registros da tabela cidades. Sua tela do SQL*Plus dever estar semelhante a seguinte:

Figura 2.16: Select Cidades 3 Note que apenas a coluna cdigo teve seu valor alterado. Se desejssemos alterar mais de um campo num nico comando update, apenas teramos que informar os campos a serem atualizados, separando-os com uma vrgula. A seguir a sintaxe para podermos entender melhor: update [tabela] set [campo1] = [valor1], [campo2] = [valor2], ... , [campoN] = [valorN] where [campoX] = [condioX]; Por fim, aprenderemos agora a excluir linhas das tabelas do banco de dados. 30

Para isso utilizamos o comando delete. Vamos ento apagar a linha da cidade Assis da nossa tabela cidades. Para tal, utilizaremos o seguinte comando: delete from cidades where codigo = 5; Aps a digitao do cdigo anterior, pressione a tecla Enter. Sua tela do SQL*Plus dever estar como a seguinte:

Figura 2.17: Delete Cidades Digite um comando SQL que possibilite visualizar todos os registros da tabela cidades.

Figura 2.18: Select Cidades 4 Sua tela do SQL*Plus dever estar assim: 31

Finalizamos assim nosso aprendizado sobre insero, atualizao e excluso de dados no banco de dados. Commit e Rollback.

Em toda insero, alterao ou excluso de dados, necessrio confirmar a operao realizada. Para tal, utilizamos o comando commit. O comando commit confirma todas as transaes realizadas no banco de dados. Assim como temos o comando commit confirmar todas as modificaes no banco de dados, temos tambm o comando rollback, que cancela todas as modificaes realizadas na sesso atual do banco de dados. Ou seja, se iniciarmos uma sesso e nessa sesso fizermos vrias alteraes nos dados e sairmos da sesso sem dar um commit tudo o que realizamos ser perdido. J o comando rollback quando informado por ns, cancela todas as alteraes realizadas aps o ltimo commit. Vamos testar! Exclua o registro da cidade Ourinhos na tabela cidades. Digite um comando select que lhe permita ver todos os dados da tabela cidades. Sua tela do SQL*Plus dever estar assim:

Figura 2.19: Select Cidades aps Delete Aps a confirmao da excluso digite no seu SQL*Plus: rollback; Digite um comando select que lhe permita ver todos os dados da tabela cidades. Sua tela do SQL*Plus dever estar assim: 32

Figura 2.20: Rollback Note que o rollback desfez a modificao que havia sido realizada anteriormente. Sempre que qualquer alterao for realizada no banco de dados, deve-se confirmar com o comando commit, para garantir que essa alterao foi salva. Para utilizar o comando commit basta digit-lo como aparece a seguir sempre que se realizar alguma alterao no banco: commit; Embora sejam muito simples, commit e rollback so indispensveis, e us-los um timo hbito para todo profissional que trabalha com banco de dados. Rotulando campos das tabelas.

A partir de agora, veremos como rotular campos. Rotular campos nada mais que mudar o nome dos campos para melhor visualiz-los. Mas, na verdade, o campo no tem seu nome alterado, apenas exibido um nome diferente quando executamos um comando select, ou seja, a estrutura da tabela dentro do banco de dados permanece a mesma. Vamos testar! No nosso teste continuaremos utilizando a tabela cidades. Note que quando efetuamos um comando select, a coluna pais_regiao aparece exatamente o nome dela na ntegra. Vamos mudar esse nome (somente para efeito de visualizao). Para rotularmos campos muito simples. Antes de vermos isso, veremos como fazer o comando select que vinhamos fazendo at o momento de forma diferente. Digite na tela do SQL*Plus o seguinte comando:

33

select codigo, nome, estado, pais_regiao from cidades; Sua tela do SQL*Plus dever estar semelhante a seguinte:

Figura 2.21: Select Cidades 5 Veja que o resultado que obtivemos o mesmo resultado do comando quando usamos o asterisco. Isso porque em vez de usar o asterisco, que indica que queremos trazer o resultado de todos os campos, escolhemos digitar o nome dos campos. J que fizemos isso, digitaremos novamente o comando anterior, mas dessa vez com uma diferena que est destacada: select codigo, nome, estado, pais_regiao as regiao from cidades; Observe a diferena! No topo da coluna temos o nome regiao no lugar de pais_regiao:

34

Figura 2.22: Select com Rtulo Se desejarmos colocar um rtulo com duas ou mais palavras, temos que utilizar as palavras entre aspas duplas. Vamos um exemplo. Vamos colocar um rtulo no campo nome. O rtulo ser NOME DA CIDADE. Ento digite o seguinte comando: select codigo, nome as NOME DA CIDADE, estado, pais_regiao from cidades; Sua tela do SQL*Plus dever estar parecida com a seguinte:

Figura 2.23: Select com Rtulo 2

35

Finalizamos assim nosso estudo sobre rtulos de campos das tabelas do banco de dados. Concatenando colunas.

A partir desse ponto, conheceremos um outro recurso que facilita a visualizao de dados no SQL*Plus: a concatenao de colunas. Concatenar nada mais que unir duas colunas, para que os dados sejam melhor visualizados, seja por capricho do desenvolvedor, seja por necessidade. Utilizaremos para essa fase de nosso aprendizado a tabela cidades. Nessa tabela vamos concatenar os campos nome, estado e pais_regiao. Alm de concatenarmos esses campos, vamos colocar um rtulo que servir para todos eles. Quando desejamos realizar uma concatenao devemos usar o smbolo pipe duas vezes consecutivas (||). Vejamos na prtica! Digite no SQL*Plus o cdigo a seguir: select codigo, nome || estado || pais_regiao as local from cidades; Sua tela dever estar como a seguinte:

Figura 2.24: Concatenando Campos Como mencionamos anteriormente, a concatenao utilizada para melhor visualizar as informaes. Mas no ltimo exemplo tudo o que conseguimos foi fazer uma tremenda confuso entre os campos. Ainda possvel colocar entre os campos textos que o desenvolvedor achar necessrio, e esses textos devem estar entre aspas simples. Para que tudo isso no fique muito abstrato, vamos sair da teoria e vamos prtica! Observe com ateno a parte do cdigo que est em destaque. Digite no SQL*Plus o seguinte comando SQL:

36

select codigo, nome ||', '|| estado ||' - Regiao: '|| pais_regiao as local from cidades; O resultado na sua tela do SQL*Plus dever estar semelhante seguinte:

Figura 2.25: Concatenando Campos 2 Assim fica bem melhor! Com relao concatenao no h mais nada a estudar, pois esse assunto muito simples. Mesmo sendo simples, til em determinadas situaes, portanto no menospreze esse tpico, pois ele pode te auxiliar posteriormente.

3 Etapa Criao e execuo de scripts SQL. A partir daqui iniciaremos nossos estudos sobre scripts SQL's. Analisemos a seguinte situao: imaginemos que estamos inserindo dados por meio do SQL*Plus, utilizando o comando j conhecido insert. E vamos pensar grande! E se estivssemos cadastrando uma carga de dados de 20 clientes e no 16 cadastro acabasse a energia ou acontecesse algum incidente que forasse o desligamento de nosso computador. Seria uma tragdia, pois no teramos tempo suficiente para executar o comando commit e perderamos todo o nosso trabalho. Para que isso no ocorra podemos criar scripts SQL's e salv-los em um diretrio qualquer de nosso computador. Vamos entender melhor. No nosso exemplo utilizaremos o comando insert. Continuaremos usando a tabela cidades. Portanto vamos inserir uma nova cidade na nossa tabela. Segue a tabela dos dados que vamos inserir: Tabela: cidades CAMPO VALOR 37

codigo nome estado

3 Florianoplois SC

pais_regiao Sul Tabela 3.1: Cidade 3 Por enquanto no insira as informaes, pois realizaremos essa tarefa de forma diferente, utilizando o comando dentro de um script SQL. Para criarmos o script digite no seu SQL*Plus o seguinte cdigo: edit C:\insert.sql; Vamos entender: a palavra edit indica que iniciaremos um novo script; C:\ o diretrio escolhido onde o script ser salvo; insert.sql o nome que demos ao nosso script. Vale ressaltar que todo script que criarmos dever ter a exteso .sql. Ento, aps digitar o cdigo anterior confirme pressionando o Enter. O resultado dever ser o seguinte:

Figura 3.1: Iniciando Script Assim que pressionarmos Enter ser aberta uma janela do Bloco de Notas. Confirme clicando na opo Sim. Agora na janela do Bloco de Notas digite o comando para insero dos dados que esto na tabela anteriormente informada, tal como seria feito no SQL*Plus. Aps digitar o comando insert salve o seu arquivo .sql.

38

Feito isso feche a janela do Bloco de Notas. Automaticamente voltamos janela do SQL*Plus. At o momento no inserimos nada na tabela cidades, apenas criamos o script. Agora faremos o seguinte: carregaremos o script criado. Digite a seguinte linha de comando no SQL*Plus: start C:\insert.sql; Veja que exibida a mensagem de confirmao de incluso do registro:

Figura 3.2: Executando Script Digite o comando SQL que possibilite a visualizao de todos os registros da tabela cidades. O resultado dever estar parecido com o que segue:

39

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 diretrio onde salvamos nosso script. V at o diretrio que voc escolheu e encontre o arquivo .sql. Exemplo:

Figura 3.4: Diretrio do Script

40

Encerramos assim nosso aprendizado sobre criao e execuo de scrips SQL. Mais um assunto simples e que extremamente importante! Operadores lgicos em SQL.

A partir desse tpico, conheceremos os operadores lgicos da linguagem SQL. Vale lembrar que SQL no uma linguagem de programao, e sim uma linguagem de busca que padro nos diversos bancos de dados existentes. Porm, mais adiante, veremos a PL/SQL, essa sim uma linguagem de programao da Oracle baseada em SQL. Portanto aprender o bsico de SQL fundamental para que posteriormente no tenhamos maiores dificuldades em PL/SQL. A seguir, temos uma tabela com os operadores lgicos que abordaremos nesse curso: Operador lgico = Nome igual Descrio Esse o operador bsico de qualquer linguagem de programao ou de consulta. Sua representao, deiferente de algumas linguagens de programao, simplesmente o sinal de 'igual'. Aqui temos o sinal de 'diferena'. reprensentado pela juno do sinal de 'maior' e 'menor'. O sinal de 'maior', assim como o de 'igual', representado apenas pelo seu smbolo. Assim como o sinal de 'maior' e 'igual', o sinal de 'menor' tambm representado pelo seu smbolo.

> < >=