Você está na página 1de 35

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis

SQL
1. Objetivos do curso
Esse curso tem por objetivo dar condies ao aluno de se lanar na linha de DBAs e na rea de Desenvolvimento de Aplicaes. Esse curso abrange a criao de estruturas de bancos de dados e o armazenamento, recuperao e manipulao de dados em um banco de dados relacional.

2. Histrico
A SQL se tornou o padro para linguagens de banco de dados relacionais. Existem diversas verses de SQL. A verso original foi desenvolvida pela IBM no Laboratrio de Pesquisa de San Jos. Essa linguagem, originalmente chamada de Sequel, foi implementada no incio dos anos 70. Desde ento, a linguagem Sequel foi evoluindo e passou a ser chamada de SQL, isto , Structured Query Language (Linguagem de Consulta Estruturada). A grande vantagem de se usar a SQL, que inmeros produtos do suporte atualmente ao uso da SQL. Nas dcadas de 80 e 90, o American National Standards Institute (ANSI), a Internacional Standards Organization (ISO) e a IBM, publicaram os padres para a SQL.

3. Conceitos Bsicos
Sistemas de banco de dados comerciais precisam de uma linguagem de consulta mais fcil para atender as necessidades dos usurios. Neste tpico estudaremos a linguagem comercial mais utilizada no mercado, para tal fim, a SQL. A SQL usa uma combinao de construtores em lgebra e clculo relacional. A SQL possui tambm muitos outros recursos, alm da consulta ao banco de dados, tais como meios para definio da estrutura de dados, para modificao de dados e para a especificao de restries de segurana. A linguagem SQL possui diversas partes, definidas a seguir: Linguagem de definio de dados DDL: definio, excluso e alterao de esquemas, criao de ndices. Linguagem interativa de manipulao de dados DML: insero, excluso, modificao e consulta de tuplas (linhas) no banco de dados. Incorporao DML: comandos DMLs embutidos em linguagens de programao de uso geral, como PL/I, Visual Basic, Delphi, Pascal, C, etc.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis Definio de Vises: comandos DDLs para definio de vises. Autorizao: comandos DCLs para especificao de direitos de acesso a relaes e vises. Integridade: comandos DDLs para a especificao de regras de integridade onde os dados que sero armazenados no banco de dados devem satisfazer. Controle de transaes: comandos para especificao de iniciao e finalizao de transaes

4. Conceitos e Definies do SQL da ORACLE


Convenes Tipogrficas dentro de cdigos Letras maisculas Comandos, funes Letras minsculas, itlico Variveis de sintaxe Inicial maiscula Gatilhos de forms SQL> SELECT codigo FROM curso; SQL> CREATE ROLE papel; Trigger name: When-Validate-Item

4.1. SQL e SQL*Plus Para tal objetivo, utilizaremos o produto SQL*Plus, pois nesse software que so formatadas, elaboradas e executadas as SQLs. Quando voc informa uma instruo SQL, ela armazenada em uma parte da memria chamada buffer de SQL e permanece l at que voc informe uma nova instruo. O SQL*Plus uma ferramenta, um ambiente Oracle que reconhece e submete instrues SQL ao Oracle Server para execuo e contm sua prpria linguagem de comando. Recursos do SQL Podem ser utilizados por uma grande faixa de usurios, incluindo aqueles com pouca ou nenhuma experincia em programao. uma linguagem no procedural. Reduz o perodo de tempo necessrio para a criao e manuteno de sistemas. uma linguagem similar ao ingls.

Recursos do SQL*Plus Aceita entrada ad hoc das instrues.


Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis Aceita entrada SQL a partir dos arquivos. Oferece um editor de linha para modificar instrues SQL. Controla as configuraes ambientais. Formata os resultados da consulta em um relatrio bsico. Acessa bancos de dados remotos e locais. Patenteado pela Oracle. Salva as instrues SQL em arquivos. Executa arquivos salvos.

4.2. Comandos de Edio do SQL*Plus Comando A[PPEND] texto C[HANGE] / antigo / novo C[HANGE] / texto / CL[EAR] BUFF[ER] DEL DEL n DEL m n I[NPUT] I[NPUT] texto L[IST] L[IST] n L[IST] m n R[UN] n n texto 0 texto ; ou barra ou dois return Descrio Adiciona texto o final da linha atual. Altera o texto antigo para o novo na linha atual. Deleta o texto da linha atual. Deleta todas as linhas a partir do buffer de SQL. Deleta a linha atual. Deleta uma linha (n). Deleta uma faixa de linhas (de m a n). Insere um nmero indefinido de linhas. Insere uma linha consistindo em texto. Lista todas as linhas no buffers de SQL. Lista uma linha (n) Lista uma faixa de linhas (de m a n) Exibe e executa a instruo SQL atual no buffer. Especifica a linha que deve se tornar a linha atual. Substitui a linha n pelo texto. Insere uma linha antes da linha 1. Finaliza o buffer de SQL.

4.3. Comandos de Arquivo do SQL*Plus Comando SAV[E] nome arquivo Descrio Salva o contedo atual do buffer de SQL para um arquivo com extenso default (.sql). Carrega o contedo de um arquivo salvo anteriormente GET nome arquivo [.ext] para o buffer de SQL. Extenso default (.sql). STA[RT] nome arquivo [.ext] Executa um arquivo de comando salvo anteriormente. ou @ nome arquivo Chama o editor e salva o contedo do buffer para um ED[IT] arquivo chamado afiedt.buf.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis Chama o editor para editar o contedo de um arquivo. ED[IT] nome arquivo [.ext] SPO[OL] nome arquivo [.ext] Imprime um arquivo na impressora do sistema. Sai do cdigo SQL*Plus. EXIT 4.4. Estabelecendo Login no SQL*Plus Para estabelecer Login, inicia-se o SQL*Plus atravs do iniciar, programas, Oracle. O usurio dever entrar com seu nome, senha e nome do banco de acesso.

5. Definies de Instrues SQL.


Segue-se abaixo a lista de instrues que serviro como estrutura do curso. O curso ter seu caminho traado de acordo com a coluna Parte da tabela a seguir: Instruo SELECT recuperao de dados INSERT UPDATE DML DELETE CREATE ALTER DROP DDL RENAME TRUNCATE VIEW SEQUENCE COMMIT SAVEPOINT Controle de transao ROLLBACK GRANT Descrio Recupera dados do banco de dados. Insere linhas. Altera linhas. Deleta linhas. Cria estruturas (tabelas). Altera estruturas (tabelas). Elimina estruturas (tabelas). Renomeia estruturas (tabelas). Trunca estruturas (tabelas). Criando Vises Criando Seqncia Grava em disco. Desfaz transao, antes do COMMIT. Marcar pontos de gravao. Fornece privilgios.

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis REVOKE DCL FORMATANDO RELATRIOS Remove privilgios. Formatao de relatrios.

6. Expresses, Operadores e Tipos de Dados


6.1 Expresses Aritmticas Operador

+ * /
Precedncia

Descrio Adicionar Subtrair Multiplicar Dividir

6.2. Operadores de Comparao Operador

= > >= <


<= <>

Descrio Igual a Maior do que Maior do que ou igual a Menor do que Menor do que ou igual a Diferente de

6.3. Operadores de Comparao mais Avanados Operador BETWEEN ... AND... IN(list) LIKE IS NULL 6.4. Operadores Lgicos Operador AND OR NOT Significado TRUE se todas as condies forem atendidas. TRUE se pelo menos uma das condies forem atendidas. TRUE se a condio seguinte for FALSE. Descrio Entre dois valores (inclusive) Lista de valores Um padro de caractere um valor nulo.

6.5. Tipo de dados Tipo de dado NUMBER(p,s) VARCHAR(s) Descrio Valor numrico que possui um nmero mximo de dgitos p, o nmero dgitos direita do ponto decimal s. Valor de caracteres com comprimento varivel do tamanho
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis mximo s. De 1 a 2000 bytes. Grava somente o digitado. Valor de caracteres com comprimento varivel do tamanho mximo s. De 1 a 4000 bytes. Grava somente o digitado. Valor de data e hora entre 1 de janeiro, 4712 A.C. e 31 de dezembro, 9999 D.C. SYSDATE a data atual do sistema. Valores de caracteres de comprimento fixo do tamanho s. Salva todo o tamanho. Dados de caractere de comprimento varivel at 2 gigabytes. Dados de caractere de um byte de at 4 gigabytes.

VARCHAR2(s) DATE CHAR(S) LONG CLOB 6.6. Funes de Grupo

Funo Descrio Valor mdio de n, ignorando valores nulos. AVG([DISTINCT|ALL]n) COUNT({*|[DISTINCT|ALL]expr}) Fornece o nmero de linhas. A expr para algo diferente de nulo, ou * para todas as linhas (duplicados e nulos tambm) Valor mximo de expr, ignorando valores nulos. MAX([DISTINCT|ALL]expr) Valor mnimo de expr, ignorando valores nulos. MIN([DISTINCT|ALL]expr) Desvio padro de n, ignorando valores nulos. STDDEV([DISTINCT|ALL]n) Valores somados de n, ignorando valores nulos SUM([DISTINCT|ALL]n) Variao de n, ignorando valores nulos. VARIANCE([DISTINCT|ALL]n) Fora as funes de grupo a inclurem nulos. NVL(n,0) Obs: as funes AVG, SUM, VARIANCE e STDDEV s podem ser usadas com tipos de dados numricos. 6.7. Tabelas usadas no curso Tabela PROFESSOR, que fornece dados sobre professores do IMESA. Tabela CARGO, que fornece dados sobre as titulaes dos professores do IMESA. Tabela DEPTO, que fornece dados sobre os departamentos dos professores do IMESA.
um cargo pode ter vrios professores CARGO CODIGO DESCRICAO

PROFESSOR CODIGO NOME NASCIMENTO SALARIO CARGO DEPTO

um depto pode ter vrios professores

DEPTO CODIGO DESCRICAO

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis

1. Trabalhando com Recuperao de Dados - Estruturas Bsicas


1.1. Instruo SELECT Bsica Recuperao de Dados SELECT [DISTINCT] {*, coluna [apelido], ... } FROM tabela; Na instruo SELECT voc identifica quais campos (colunas) voc necessita obter. FROM DISTINCT * coluna apelido tabela : identifica de qual tabela voc quer obter as informaes. : suprime os itens duplicados. : seleciona todos os campos (colunas) da tabela. : seleciona a coluna escolhida. : fornece cabealhos diferentes aos campos selecionados. : nome da tabela desejada.

Outros definies necessrias Valor nulo o resultado ser nulo. Apelidos de coluna : defini-se com a palavra-chave AS entre o nome da coluna e o apelido. Se o apelido tiver letras maisculas e minsculas, e espaos ou caracteres especiais, torna se necessrio o uso de aspas duplas. Operador Concatenao : concatena colunas ou strings de caractere a outras colunas. representado por duas barras verticais (| |). Exemplos de instrues SQL> SELECT * FROM professor; Lista todos os campos (colunas) da tabela professor. SQL> SELECT codigo, nome FROM professor; Lista apenas o codigo e o nome da tabela professor. SQL> SELECT DISTINCT cargo FROM professor; Lista apenas o codigo do cargo da tabela professor, sem repetio (DISTINCT) SQL> SELECT nome, salario+200 FROM professor; Lista o nome e o salrio com mais 200 reais da tabela de professor. SQL> SELECT nome, salario, salario*15/100 AS aumento FROM professor; Lista o nome, o salrio e um aumento de 15%, tendo como cabealho aumento.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

: no est disponvel, no atribudo, desconhecido ou no

aplicvel, no o mesmo que um zero ou um espao em branco. Em expresses aritmticas

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis SQL> SELECT nome AS Nome, salario AS Aumento Salarial FROM professor; Lista o nome e o salrio tendo como cabealho Nome e Aumento Salarial. SQL> SELECT nome | | faz aniversrio em | | nascimento AS Lista Aniversariantes FROM professor; Lista o nome e a data de nascimento, com strings para frases, tendo como cabealho Lista Aniversariantes. 1.2. Comando DESC DESC[RIBE] tabela; Utiliza-se o comando DESC[RIBE] para exibir a estrutura (nome do campo e tipo de dados) de uma tabela. tabela : nome da tabela desejada.

1.3. Usando a Clusula ORDER BY SELECT [DISTINCT] {*, coluna [apelido], ... } FROM tabela ORDER BY coluna; Utiliza-se a clusula ORDER BY para classificar as linhas. Temos duas opes, a ASC e a DESC. A opo ASC que defini ordem crescente e a ordem default. A opo DESC que defini ordem decrescente. coluna : seleciona a coluna a ser ordenada.

Exemplos de instrues SQL> SELECT codigo, nome, salario 2 FROM professor 3 ORDER BY nome DESC; SQL> SELECT codigo, nome, salario*13 anual 2 FROM professor 3 ORDER BY anual; SQL> SELECT codigo, nome 2 FROM professor 3 ORDER BY cargo, nome; 1.4. Usando a Clusula GROUP BY SELECT [DISTINCT] {*, coluna [apelido], ... }
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

Instituto Municipal de Ensino Superior de Assis FROM tabela GROUP BY coluna; Utiliza-se a clusula GROUP BY para agrupar linhas de uma tabela. coluna tabela : seleciona a coluna escolhida. : nome da tabela desejada.

Exemplos de instrues SQL> SELECT cargo, SUM(salario) 2 FROM professor 3 GROUP BY cargo; SQL> SELECT cargo, AVG(salario) 2 FROM professor 3 GROUP BY cargo; SQL> SELECT cargo, SUM(salario) 2 FROM professor 3 GROUP BY depto, cargo; 1.5. Usando a Clusula WHERE SELECT [DISTINCT] {*, coluna [apelido], ... } FROM tabela [WHERE condio(es)]; Utiliza-se a clusula WHERE para restringir a consulta s linhas que atendem uma condio ou condies imposta pelo usurio. condio: composta por nomes de colunas, valores literais, expresses aritmticas, funes, conectivos lgicos e operadores de comparao. Exemplos somente da clusula WHERE nascimento=10-SET-71 WHERE salario >= 1250 WHERE nome=FABIO Exemplos de instrues SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario BETWEEN 1100 AND 1750; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario IN (1000, 1500, 2000);
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

10

Instituto Municipal de Ensino Superior de Assis SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nome LIKE F%; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nome LIKE _A%; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nascimento IS NULL; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nascimento IS NULL; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario>=1300 AND nome=FABIO; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario NOT IN (1000, 1500, 2000); 1.6. Usando a Clusula HAVING SELECT coluna, grupo_funo FROM tabela [GROUP BY grupo_por_expresso] [HAVING grupo_condio]; Utiliza-se a clusula HAVING para especificar quais grupos sero exibidos. Portanto, restrinja ainda mais os grupos com base nas informaes agregadas. grupo_condio : restringe os grupos de linhas retornados aos grupos para os quais a condio especificada seja true. Execuo : 1 as linhas so agrupadas. 2 a funo de grupo aplicada ao grupo. 3 os grupos que correspondem aos critrios na clusula HAVING so exibidos. Exemplos somente da clusula HAVING MAX(salario)>1250; Exemplos de instrues SQL> SELECT depto, MAX(salario) 2 FROM professor 3 GROUP BY depto 4 HAVING MAX(salario)>1500; SQL> SELECT depto, SUM(salario) 2 FROM professor
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

11

Instituto Municipal de Ensino Superior de Assis 3 4 5 6 WHERE depto BETWEEN 3 AND 6 GROUP BY depto HAVING SUM(salario)>3000 ORDER BY SUM(salario);

1.7. Obtendo Dados de Vrias Tabelas Algumas vezes necessrio utilizar dados a partir de uma ou mais tabelas. Para isso preciso vincular as tabelas para ter acesso aos dados das duas tabelas. Uma condio de juno criada a partir da clusula WHERE. Usa se a notao tabela.coluna, j que existem campos (colunas) iguais em tabelas diferentes. SELECT tabela1.coluna, tabela2.coluna FROM tabela1, tabela2 WHERE tabela1.coluna1 = tabela2.coluna2; Exemplos de junes SQL> SELECT professor.codigo, professor.nome, cargo.descricao 2 FROM professor, cargo 3 WHERE professor.cargo = cargo.codigo; SQL> SELECT p.codigo, p.nome, c.descricao 2 FROM professor p, cargo c 3 WHERE p.cargo = c.codigo; Utilizando Funes de Grupo Essas funes operam em conjuntos de linhas para fornecer um resultado por grupo. As funes de grupo trabalham com as clusulas GROUP BY e HAVING. A clusula GROUP BY utilizada para agrupar dados. A clusula HAVING utilizada para incluir ou excluir linhas agrupadas.

1.7.1. Funes de Grupo Funo Descrio Valor mdio de n, ignorando valores nulos. AVG([DISTINCT|ALL]n) COUNT({*|[DISTINCT|ALL]expr}) Fornece o nmero de linhas. A expr para algo diferente de nulo, ou * para todas as linhas (duplicados e nulos tambm) Valor mximo de expr, ignorando valores nulos. MAX([DISTINCT|ALL]expr) Valor mnimo de expr, ignorando valores nulos. MIN([DISTINCT|ALL]expr) Desvio padro de n, ignorando valores nulos. STDDEV([DISTINCT|ALL]n) Valores somados de n, ignorando valores nulos SUM([DISTINCT|ALL]n) Variao de n, ignorando valores nulos. VARIANCE([DISTINCT|ALL]n)
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

12

Instituto Municipal de Ensino Superior de Assis Fora as funes de grupo a inclurem nulos. NVL(n,0) Obs: as funes AVG, SUM, VARIANCE e STDDEV s podem ser usadas com tipos de dados numricos. Exemplos de funes de grupo SQL> SELECT AVG(salario), MAX(salario), MIN(salario), SUM(salario) 2 FROM professor 3 WHERE professor.cargo= 2; SQL> SELECT MIN(nascimento), MAX(nascimento) 2 FROM professor; SQL> SELECT COUNT(*) 2 FROM professor 3 WHERE cargo=1; SQL> SELECT COUNT(codigo) 2 FROM professor 3 WHERE cargo=3; SQL> SELECT COUNT(DISTINCT(codigo)) 2 FROM professor; SQL> SELECT AVG(salario) 2 FROM professor; SQL> SELECT AVG(NVL(salario,0)) 2 FROM professor; 1.8. Utilizando Subconsultas (Sub-Query) para Resolver um Problema Podemos tambm dar o nome de consulta interna. Ela retorna um valor que usado pela consulta externa ou pela consulta principal. Usar uma subconsulta equivale a executar duas consultas seqenciais e usar o resultado da primeira como valor de pesquisa na segunda consulta. Exemplos de instrues SQL> SELECT nome 2 FROM professor 3 WHERE salario > (SELECT salario FROM professor WHERE codigo=2); SQL> SELECT nome, cargo 2 FROM professor 3 WHERE depto IN (SELECT depto FROM professor WHERE codigo=2) 4 AND salario > (SELECT salario FROM professor WHERE codigo=1); SQL> SELECT depto, MIN(salario) 2 FROM professor 3 GROUP BY depto 4 HAVING MIN(salario) > (SELECT MIN(salario) FROM professor WHERE depto=2);
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

13

Instituto Municipal de Ensino Superior de Assis

1.9. Utilizando Variveis de Substituio Utiliza-se variveis de substituio do SQL*Plus para armazenar valores temporariamente. Usa se o & E comercial para solicitar um valor ao usurio. Valores caracter e data usa se aspas simples. Usa se o && E comercial duplo se desejar reutilizar o valor da varivel sem precisar solicitar sempre ao usurio. Usa se o comando DEFINE para criar uma varivel de usurio de tipo de dados CHAR. Comando UNDEFINE para limpa-la. Usa se o comando ACCEPT para ler a entrada do usurio e armazenar em uma varivel.

Exemplos de instrues SQL> SELECT depto, nome, salario, cargo 2 FROM professor 3 WHERE cargo = &numcar; Enter value for numcar: SQL> SELECT depto, nome, salario+salario/3 2 FROM professor 3 WHERE nascimento = &nascprof; Enter value for nascprof: SQL> ACCEPT numdepto PROMPT Digite o nmero do Departamento: SQL> SELECT * 2 FROM professor 3 WHERE depto = UPPER(&numdepto) 2 / Digite o nmero do Departamento: SQL> DEFINE numdepto = 4 SQL> SELECT * 2 FROM professores 3 WHERE depto = &numdepto;

2. Trabalhando com DML Linguagem de Manipulao de Dados


2.1. Instruo INSERT INSERT INTO tabela [(coluna [, coluna...])] VALUES (valor [, valor...]); Com a instruo INSERT voc adiciona novas linhas em uma tabela. tabela : o nome da tabela.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

14

Instituto Municipal de Ensino Superior de Assis coluna valor : o nome da coluna a ser preenchida. : o valor correspondente para a coluna.

INSERT com VALUES adiciona somente uma linha por vez a uma tabela.

Exemplos de instrues SQL> INSERT INTO professor (codigo, nome, nascimento, salario, cargo, depto) 2 VALUES (15, FULANO DE TAL,10-JAN-69,1500,1,2); 1 row created. SQL> INSERT INTO cargo (codigo, descricao) 2 VALUES (10, LIVRE DOCENTE); 1 row created. SQL> INSERT INTO depto (codigo, descricao) 2 VALUES (&numdepto, &nomedepto); Enter value for numdepto: Enter value for nomedepto: 1 row created. 2.2. Instruo UPDATE UPDATE tabela SET coluna = valor [, coluna = valor, ...] [WHERE condio]; Com a instruo UPDATE voc modifica linhas em uma tabela. tabela coluna valor condio : o nome da tabela. : o nome da coluna a ser preenchida. : o valor correspondente para a coluna. : identifica as linhas a serem atualizadas e composta de nomes de

colunas, expresses, constantes, subconsultas e operadores de comparao. Exemplos de instrues SQL> UPDATE professor 2 SET depto = 3 3 WHERE codigo=2; 1 row update. SQL> UPDATE professor 2 SET salario = salario*1.15 n row update.

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

15

Instituto Municipal de Ensino Superior de Assis 2.3. Instruo DELETE DELETE [FROM] tabela [WHERE condio]; Com a instruo DELETE voc elimina linhas em uma tabela. tabela condio : o nome da tabela. : identifica as linhas a serem atualizadas e composta de nomes

de colunas, expresses, constantes, subconsultas e operadores de comparao. Restrio de Integridade : no se deleta uma linha que contenha uma chave primria usada como chave estrangeira em outra tabela. Exemplos de instrues SQL> DELETE FROM professor 2 WHERE codigo=2; 1 row update. SQL> DELETE FROM professor 2 WHERE depto = 1; n row update.

3. Trabalhando com DDL Linguagem de Definio de Dados


3.1. Instruo CREATE TABLE CREATE [GLOBAL TEMPORARY] TABLE [esquema.]tabela (tipo de dados da coluna [DEFAULT expr][, ...]); Com a instruo CREATE TABLE voc cria tabelas para armazenar dados. Para criar uma tabela o usurio deve ter o privilgio CREATE TABLE e uma rea de armazenamento na qual criar objetos. tabela esquema : o nome da tabela. : o mesmo do nome do proprietrio.

GLOBAL TEMPORARY : especifica que a tabela temporria e que sua definio est visvel em todas as sesses. DEFAULT expr instruo INSERT. coluna tipo de dados : o nome da coluna. : o tipo de dados e o comprimento da coluna. : especifica um valor default se um valor estiver omitido na

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

16

Instituto Municipal de Ensino Superior de Assis Exemplos de instrues SQL> CREATE TABLE depto 2 (codigo NUMBER(2), 3 (descricao VARCHAR2(30)); Table created. SQL> DESCRIBE depto SQL> CREATE TABLE cargo10 2 AS 3 (SELECT codigo, nome, salario, nascimento 4 FROM professor 5 WHERE cargo=2); Table created. SQL> DESCRIBE depto10 SQL> CREATE TABLE teste 2 AS 3 ( SELECT * FROM professor 4 WHERE 1=2); Table created. Obs: colocando uma condio intil ser copiado somente a estrutura. SQL> DESCRIBE teste 3.2. Instruo ALTER TABLE ALTER TABLE tabela ADD (tipo de dados da coluna [DEFAULT expr] [, tipo de dados da coluna]...); ALTER TABLE tabela MODIFY (tipo de dados da coluna [DEFAULT expr] [, tipo de dados da coluna]...); Com a instruo ALTER TABLE voc adiciona, modifica e eliminar colunas em uma tabela. Com a clusula ADD voc adiciona colunas. Com a clusula MODIFY voc modifica colunas. Com a clusula DROP COLUMN voc elimina colunas. Para alterar a estrutura de uma tabela o usurio deve ter o privilgio ALTER TABLE. tabela coluna tipo de dados : o nome da tabela. : o nome da nova coluna. : o tipo de dados e o comprimento da nova coluna.

DEFAULT expr : especifica um valor default para a nova coluna.

Exemplos de instrues
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

17

Instituto Municipal de Ensino Superior de Assis SQL> ALTER TABLE depto10 2 ADD (localidade VARCHAR2(25)); Table altered. SQL> DESCRIBE depto10 SQL> ALTER TABLE depto10 2 MODIFY (localidade VARCHAR2(35)); Table altered. SQL> DESCRIBE depto10 SQL> ALTER TABLE depto10 2 DROP COLUMN localidade; Table altered. SQL> DESCRIBE depto10 3.3. Instruo DROP TABLE DROP TABLE tabela; Com a instruo DROP TABLE voc elimina uma tabela por completo, tanto os dados quanto sua estrutura. Todas as transaes pendentes sofrero COMMIT (PARTE IV). Todos os ndices sero eliminados. No existe a possibilidade de ROLLBACK, de recuperao da tabela (PARTE IV). Para eliminar uma tabela o usurio deve ter o privilgio DROP TABLE. tabela : o nome da tabela.

Exemplos de instrues SQL> DROP TABLE depto10; Table dropped. 3.4. Instruo RENAME RENAME old_name TO new_name; Com a instruo RENAME voc renomeia uma tabela. No existe a possibilidade de ROLLBACK, de recuperao da tabela. Para eliminar uma tabela voc deve ser o proprietrio da tabela. old_name new_name : o nome antigo da tabela. : o novo nome da tabela.

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

18

Instituto Municipal de Ensino Superior de Assis Exemplos de instrues SQL> RENAME depto TO depart; Table renamed. 3.5. Instruo TRUNCATE TABLE TRUNCATE TABLE tabela; Com a instruo TRUNCATE TABLE voc remove todas as linhas de uma tabela e libera o espao de armazenamento usado por esta tabela. No existe a possibilidade de ROLLBACK, de recuperao da remoo das linhas. Para truncar uma tabela voc deve ser o proprietrio da tabela ou ter privilgios de TRUNCATE TABLE. tabela : o nome da tabela. Exemplos de instrues SQL> TRUNCATE TABLE depto; Table truncated. 3.6. Utilizando Restries CREATE TABLE [esquema.]tabela (tipo de dados da coluna [DEFAULT expr] [column_constraint], ... [table_constraint] [,...]); As restries impem regras no nvel da tabela. As restries (CONSTRAINT) evitam que uma tabela seja deletada se houver dependncias. esquema tabela coluna tipo de dados INSERT. column_constraint: uma restrio de integridade como parte da definio da coluna. table_constraint: uma restrio de integridade como parte da definio da tabela.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

: igual ao nome do proprietrio. : o nome da tabela. : o nome da coluna. : o tipo de dados e o comprimento da coluna.

DEFAULT expr : especifica um valor default se um valor estiver omitido na instruo

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

19

Instituto Municipal de Ensino Superior de Assis As restries devem ser satisfeitas sempre que ocorrer a insero, atualizao ou deleo de linhas em uma tabela. Restries Restrio NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK Exemplo de instrues SQL> CREATE TABLE depto 2 (codigo NUMBER(2), 3 descricao VARCHAR2(30), 3 CONSTRAINT depto_descricao_pk UNIQUE (descricao) 4 CONSTRAINT depto_codigo_ck CHECK(codigo BETWEEN 10 AND 99)); SQL> CREATE TABLE professor 2 (codigo NUMBER(4), 3 nome VARCHAR2(30), 4 ... 5 cargo NUMBER(2) NOT NULL, 6 CONSTRAINT professor_codigo_pk PRIMARY KEY (codigo), 7 CONSTRAINT professor_cargo_fk FOREIGN KEY (cargo) 8 REFERENCES depto(codigo)); Remove a restrio do cargo (chave estrangeira) da tabela PROFESSOR. SQL> ALTER TABLE professor 2 DROP CONSTRAINT professor_cargo_fk; Remove a restrio de chave primria da tabela DEPTO e elimina a restrio de chave estrangeira associada na coluna PROFESSOR.DEPTO. SQL> ALTER TABLE depto 2 DROP PRIMARY KEY CASCADE; Desativar restries de integridade dependentes, usando a clusula DISABLE e CASCADE SQL> ALTER TABLE professor 2 DISABLE CONSTRAINT professor_depto_fk CASCADE; Ative restries de integridade dependentes, usando a clusula ENABLE Descrio Especifica que esta coluna no pode conter um valor nulo. Especifica uma coluna ou combinao de colunas cujos valores devem ser excludos para todas as linhas na tabela. Identifica exclusivamente cada linha da tabela. Estabelece e impem um relacionamento de chave estrangeira entre a coluna e a coluna da tabela referenciada. Especifica uma condio que deve ser verdadeira.

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

20

Instituto Municipal de Ensino Superior de Assis SQL> ALTER TABLE professor 2 ENABLE CONSTRAINT professor_depto_fk; Consulte a tabela USER_CONSTRAINTS para ver todos os nomes e definies de restries SQL> SELECT constraint_name, constraint_type, search_condition 2 FROM user_constraints 3 WHERE table_name = PROFESSOR; Instruo para visualizar todos os nomes e definies de restries. Visualize as colunas associadas aos nomes de restries na view USER_CONS_COLUMNS SQL> SELECT constraint_name, column_name 2 FROM user_cons_columns 4 WHERE table_name = PROFESSOR; Instruo para visualizar as colunas associadas aos nomes de restries. 3.7. Criando ndice A instruo CREATE INDEX cria ndices em uma ou mais colunas. Os ndices so utilizados para acelerar a recuperao de linhas, para reduzir a E/S do disco usando um mtodo rpido de acesso a caminhos para localizar os dados rapidamente. CREATE INDEX indice ON tabela (coluna[, coluna]...); Quando criar um ndice Quando uma coluna for usada freqentemente na clusula WHERE ou em uma condio de juno. Quando a coluna contiver uma ampla faixa de valores. Quando a coluna contiver um grande nmero de valores nulos. Quando duas ou mais colunas forem usadas juntas com freqncia em uma clusula WHERE ou em uma condio de juno. Quando a tabela for grande e se espera que a maioria das consultas recupere menos que 2 a 4% das linhas. Quando no criar um ndice Quando a tabela for pequena. Quando as colunas no forem utilizadas com freqncia como uma condio na consulta. Quando se espera que a maioria das consultas recupere mais que 2 a 4% das linhas. Quando a tabela for atualizada com freqncia.

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

21

Instituto Municipal de Ensino Superior de Assis Exemplo de instrues SQL> CREATE INDEX professor_nome_idx 2 ON professor(nome); Index created. 3.8. Removendo ndices SQL> DROP INDEX professor_nome_idx ; Index dropped.

4.1. Criando VIEWS e SEQUENCE


Voc pode apresentar combinaes ou subconjuntos lgicos de dados criando views de tabelas. Uma view uma tabela lgica baseada em uma tabela ou outra view. Uma view no contm dados prprios, mas como uma janela atravs da qual os dados das tabelas podem ser vistos ou alterados. As tabelas nas quais uma view baseada so chamadas tabelas-base. A view armazenada como uma instruo SELECT no dicionrio de dados. Por que usar VIEWS? Para restringir o acesso a dados Para facilitar as consultas complexas Para permitir a independncia dos dados Para apresentar diferentes views dos mesmos dados 4.1.1. Criando uma VIEW Crie uma view, PROF2, que contenha detalhes sobre os professores do cargo 2. SQL> CREATE VIEW prof2 2 AS SELECT codigo, nome, salario 3 FROM professor 4 WHERE cargo=2; View created. SQL> DESCRIBE prof2 SQL> CREATE VIEW prof2 2 AS SELECT codigo MATR_PROF, nome NOME_PROF 3 FROM professor 4 WHERE cargo=2); View created. SQL> DESCRIBE prof2 4.1.2. Removendo uma VIEW SQL> DROP VIEW prof2;
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

22

Instituto Municipal de Ensino Superior de Assis View dropped.

4.2. Criando SEQUENCE Uma seqncia um objeto do banco de dados criado pelo usurio que pode ser compartilhado por vrios usurios para gerar nmeros inteiros exclusivos. Voc pode usar as seqncias para gerar valores de chave primria automaticamente. 4.2.1. Criando uma SEQUENCE Seqncia INCREMENT BY n START WITH n MAXVALUE n MINVALUE n CYCLE | NOCYCLE CACHE n | NOCACHE Descrio Especifica o intervalo entre nmeros de seqncia onde n um nmero inteiro. Especifica o primeiro nmero de seqncia a ser gerado. Valor mximo a ser gerado. Valor mnimo da seqncia. Especifica que a sequncia continue a gerar valores aps alcanar seu valor mximo ou mnimo ou no gera valores adicionais. Especifica quantos valores o Oracle Server alocar previamente e manter na memria. Cache=20 default.

Crie uma seqncia chamada DEPTO_CODIGO para ser usada na chave primria da tabela DEPTO. SQL> CREATE SEQUENCE depto_codigo 2 INCREMENT BY 1 3 START WITH 10 4 MAXVALUE 100 5 NOCACHE 6 NOCYCLE; Sequence created. SQL> DESCRIBE prof2 4.2.2. Confirmando SEQUENCES Verificando as valores de seqncia na tabela do dicionrio de dados USER_SEQUENCES SQL> SELECT sequence_name, min_value, max_value, increment_by, last_number 2 FROM user_sequences; OBS: a coluna last_number exibe o prximo nmero de seqncia disponvel. 4.2.3. Pseudocolunas NEXTVAL e CURRVAL NEXTVAL: retorna o prximo valor de seqncia disponvel
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

23

Instituto Municipal de Ensino Superior de Assis CURRVAL: obtm o valor de seqncia atual. SQL> INSERT INTO depto (codigo, descricao) 3 VALUES (depto_codigo.NEXTVAL,Computao Grfica); 1 row created. SQL> SELECT depto_cdigo.CURRVAL 2 FROM dual; 4.2.4. Alterando uma SEQUENCE SQL> ALTER SEQUENCE depto_codigo 2 INCREMENT BY 1 3 MAXVALUE 120 4 NOCACHE 5 NOCYCLE; Sequence altered. 4.2.5. Removendo uma SEQUENCE SQL> DROP SEQUENCE depto_codigo; Sequence dropped.

5. Trabalhando com Controle de Transaes


5.1. Controlando Transaes
TRANSAO

INSERT
COMMIT

UPDATE
Savepoint A

INSERT

DELETE
Savepoint B

ROLLBACK para Savepoint B

ROLLBACK para Savepoint A

ROLLBACK at o COMMIT antes dos SAVEPOINTs

As instrues COMMIT, SAVEPOINT e ROLLBACK so utilizadas para controlar a lgica das transaes. COMMIT todas as alteraes de dados pendentes. SAVEPOINT transao atual.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

: finaliza a transao atual tornando permanentes : marca um ponto de gravao dentro da

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

24

Instituto Municipal de Ensino Superior de Assis ROLLBACK [TO SAVEPOINT nome] : ROLLBACK finaliza a transao atual

descartando todas as alteraes de dados pendentes: ROLLBACK TO SAVEPOINT descarta a transao atual para o ponto de gravao especfico, descartando assim o ponto de gravao e quaisquer alteraes subsequentes. Se voc omitir essa clusula, a instruo ROLLBACK descarta toda a transao. Exemplos de instrues SQL> COMMIT SQL> INSERT ... SQL> SAVEPOINT A SQL> UPDATE ... SQL> INSERT .... SQL> SAVEPOINT B SQL> ROLLBACK SAVEPOINT A 5.2. Controlando o Acesso do Usurio Em um ambiente de vrios usurios, voc deseja manter a segurana de acesso e de uso do banco de dados. Com a segurana de banco de dados do Oracle Server, voc pode: Controlar o acesso ao banco de dados. Conceder acesso a objetos especficos no banco de dados. Confirmar privilgios concedidos e recebidos com o dicionrio de dados Oracle. A segurana de banco de dados pode ser classificada em duas categorias: Segurana de sistemas. Cobre o acesso e o uso do banco de dados no nvel de sistema como por exemplo, nome de usurio e senha, espao em disco alocado aos usurios e operaes do sistema permitidas pelo usurio. Segurana de banco de dados. Cobre o acesso e o uso dos objetos de banco de dados e as aes que esses usurios possam ter sobre os objetos. O Oracle possui mais de 80 privilgios. O DBA possui os seguintes privilgios de sistema de alto nvel: Criar novos usurios.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

25

Instituto Municipal de Ensino Superior de Assis Remover usurios. Remover tabelas. Fazer backup de tabelas. Privilgios de DBA Tpicos Privilgio de Sistema CREATE USER DROP USER DROP ANY TABLE BACKUP ANY TABLE Operaes Autorizadas Permite que o cedente crie outros usurios Oracle. (DBA) Elimina um outro usurio. Elimina uma tabela em qualquer esquema. Faz backup de tabela nos esquemas com o utilitrio de exportao.

CREATE USER usurio IDENTIFIED BY senha; usurio senha : o nome do usurio a ser criado. : especifica que o usurio deve estabelecer login com essa senha.

Exemplo de instrues SQL> CREATE USER alex 2 IDENTIFIED BY brasil; User created. 5.3. Privilgios de Sistema de Usurio Aps a criao do usurio, o DBA poder conceder privilgios de sistema especficos para ele. Os privilgios so os seguintes: Privilgio de Sistema CREATE SESSION CREATE TABLE CREATE SEQUENCE CREATE VIEW CREATE PROCEDURE Operaes Autorizadas Conectar-se ao banco de dados. Criar tabela no esquema do usurio. Criar uma seqncia no esquema do usurio. Criar uma view no esquema do usurio. Criar uma funo, pacote ou procedimento armazenado no esquema do usurio.

privilgio usurio

: o privilgio de sistema a ser concedido.. : o nome do usurio.

5.4. Concedendo Privilgios de Sistema


Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

26

Instituto Municipal de Ensino Superior de Assis O DBA pode conceder privilgios de sistema especficos a um usurio. Exemplo de instrues SQL> GRANT create table, create sequence, create view 2 TO alex; Grant succeeded. 5.5. O que uma Funo? Uma funo ou papel um grupo nomeado de privilgios relacionados que podem ser concedidos ao usurio. Isso faz com que a concesso e revogao de privilgios se torne mais fcil de desempenhar e manter. Um usurio pode ter acesso a vrias funes e vrios usurios podem ter a mesma funo atribuda a eles. As funes so criadas tipicamente para uma aplicao de banco de dados. Criando uma funo CREATE ROLE funo; GRANT create table, create sequence TO funo; funo : o nome da funo a ser criada e a receber privilgios.

Atribuindo uma funo GRANT funo TO alex; Exemplo de instrues SQL> CREATE ROLE gerencia; Role created. SQL> GRANT create table, create view 2 TO gerencia; Grant succeeded. SQL> GRANT gerencia 2 TO alex; Grant succeeded. Alterando sua senha O DBA cria a sua conta de usurio e inicializa a sua senha. Sua senha pode ser alterada por voc usando a instruo ALTER USER. ALTER USER usurio IDENTIFIED BY senha; usurio : o nome do usurio.
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

27

Instituto Municipal de Ensino Superior de Assis senha : especifica a nova senha.

Exemplo de instrues SQL> ALTER USER alex 2 IDENTIFIED BY fema; User altered.

6. Trabalhando com DCL Linguagem de Controle de Direitos de Acesso


6.1. Privilgios de Objeto Os privilgios de objeto variam de objeto para objeto. Um proprietrio tem todos os privilgios sobre o objeto. Um proprietrio pode fornecer privilgios especficos sobre o objeto de proprietrio. GRANT object_priv [(colunas)] ON objeto TO {usurio / funo | PUBLIC} [WITH GRANT OPTION]; object_priv : um privilgio de objeto a ser concedido.. : especifica a coluna de uma tabela ou view sobre as quais os privilgios so concedidos. ON object TO PUBLIC usurios e funes. Exemplo de instrues SQL> GRANT select 2 ON professor 3 TO alex; Grant succeeded. SQL> GRANT update (codigo, nome) 2 ON professor 3 TO alex, gerencia; Grant succeeded. SQL> GRANT select, insert 2 ON cargo 3 TO alex
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

colunas

: o objeto sobre o qual os privilgios so concedidos. : identifica a quem o privilgio concedido. : concede privilgios de objeto a todos os usurios.

WITH GRANT OPTION: permite que o cedente conceda privilgios de objeto a outros

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

28

Instituto Municipal de Ensino Superior de Assis 4 WITH GRANT OPTION; Grant succeeded. Permite ao Alex conceder privilgios da tabela CARGOS. SQL> GRANT update 2 ON alex.professor 3 TO PUBLIC; Grant succeeded. Permite que todos os usurios no sistema consultem dados na tabela PROFESSOR de Alex. 6.2. Revogando Privilgios de Objeto Use a instruo REVOKE para revogar os privilgios concedidos a outros usurios. Os privilgios concedidos por WITH GRANT OPTION tambm sero revogados. REVOKE {privilgio [, privilgio...] | ALL} ON objeto FROM {usurio [, usurio...] | funo | PUBLIC} [CASCADE CONSTRAINTS]; CASCADE CONSTRAINTS : obrigatrio para remover quaisquer restries de

integridade feitas ao objeto por meio do privilgio REFERENCES. Exemplo de instrues SQL> REVOKE select, insert 2 ON cargo 3 FROM alex; Revoke succeeded.

7. Formatao de Relatrios
possvel criar relatrios sem efeitos grficos utilizando a prpria ferramenta SQL*Plus. Para isso podem ser definidos ttulo, rodap, quebras, totalizaes e formatao de colunas. Aps a espeficicao dos itens mencionados, basta executar o comando SELECT que originar os dados do relatrio. 7.1. Personalizando o Ambiente SQL*Plus Utilize os comandos SET para controlar a sesso atual. Comando: SQL> SET system_variable value
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

29

Instituto Municipal de Ensino Superior de Assis

Utilize o comando SHOW para verificar o que voc definiu. Comando: SQL> SHOW ECHO ON SQL> SHOW ALL SQL> SHOW VERIFY Variveis do comando SET Valores e Varivel de SET ARRAY[SIZE] {20|n} COLSEP {_|text} FEED[BACK] {6|n|OFF|ON} Descrio Define o tamanho da extrao de dados do banco de dados Define o texto a ser impresso entre colunas Exibe o nmero de registros retornados por uma consulta quando a consulta seleciona no mnimo n registros Determina se os cabealhos da coluna so exibidos nos HEA[DING] {OFF|ON} relatrios Define o nmero de caracteres por linha com n para LIN[ESIZE] {80|n} relatrios Define a largura mxima para exibio de valores LONG LONG {80|n} Especifica o nmero de linhas por pgina de sada PAGES[IZE] {24|n} Permite controlar a rolagem do seu terminal PAU[SE] {OFF|ON|text} Determina se a sada exibida na tela TERM[OUT] {OFF|ON} OBS: os valores sublinhados indicam valores default. Exemplo de instrues SQL> SET PAGESIZE 40 SQL> SET LINESIZE 60 SQL> SET FEEDBACK OFF O arquivo login.sql contm o comando SET padro e outros comandos do SQL*Plus que so implementados no login. Voc pode modificar o login.sql para conter comandos SET adicionais. 7.2. Column Permite a formatao das colunas selecionadas. Comando: COLUMN [nome da coluna | alias] [CLEAR]
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

30

Instituto Municipal de Ensino Superior de Assis [FOLD_AFTER | FOLD_BEFORE] [FORMAT formato] [HEADING titulo_da_coluna] [JUSTIFY {LEFT | RIGHT | CENTER}] [LIKE nome_da_coluna] [NEWLINE] [PRINT | NOPRINT] [NULL valor | texto] [WRAPPED | WORD_WRAPPED | TRUNCATED] [ON | OFF] CLEAR: limpa a definio da coluna; FOLD_AFTER | FOLD_BEFORE: inicia uma nova linha depois ou antes da exibio de uma coluna; FORMAT: formato a ser exibido (A-caracter, N-number, D-date); HEADING: ttulo da coluna; JUSTIFY: alinha o texto; LIKE: herda a definio de outra coluna; NEWLINE: nova linha; PRINT | NOPRINT: determina se a coluna ser ou no exibida; NULL: especifica o valor texto a ser exibido quando o valor da coluna for nulo; WRAPPED | WORD_WRAPPED | TRUNCATED: define como uma coluna alfanumrica que passar do tamanho estabelecido ser exibida; WRAPPED: caracteres excedentes sero exibidos na linha seguinte; WORD_WRAPPED: idem ao anterior, mas preserva as palavras inteiras; TRUNCATED: trunca os caracteres excedentes. ON | OFF: habilita ou no, temporariamente, a definio da coluna. Se for necessrio continuar a definio em uma prxima linha, no final da linha corrente deve ser colocado o smbolo -. O uso deste comando sem parmetros mostra a definio de todas ou de uma coluna especfica. Exemplo de Instrues: COLUMN nome FORMAT A25 HEADING Nome Professor SELECT nome FROM professor; COLUMN nome FORMAT A30 HEADING Nome Professor TRUNCATE JUSTIFY CENTER SELECT nome FROM professor; Para ver a formatao da coluna nome COLUMN nome [ENTER]
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

31

Instituto Municipal de Ensino Superior de Assis

COLUMN nome ON HEADING 'Nome do Professor ' FORMAT A30 JUSTIFY center truncate COLUMN salario FORMAT $9,999,999.99 HEADING Valor do Salrio SELECT nome, salario FROM professor; Para ver a formatao da coluna salario COLUMN salario [ENTER] COLUMN salario ON HEADING 'Valor do Salrio' FORMAT $9,999,999.99 7.3. Ttitle Permite a formatao de um ttulo para o relatrio. Comando: TTITLE [COL numero da coluna texto|valor] [LEFT texto|valor] [RIGHT texto|valor] [CENTER texto|valor] [TAB total_de_espaos] [FORMAT formato] [SKIP numero_de_linhas] [ON | OFF] COL: coluna em que comear a ser exibido o texto ou valor; LEFT: alinha esquerda o texto ou valor; RIGHT: alinha direita o texto ou valor; CENTER: centraliza o texto ou valor; TAB: salta n espaos antes de comear a exibio de um novo texto ou valor; FORMAT: formato a ser exibido o valor que segue o comando; SKIP: linhas a serem saltadas antes da exibio de uma nova linha; ON | OFF: habilita ou no, temporariamente, a definio do ttulo.

Exemplo de Instrues: TTITLE CENTER Instituto Municipal - IMESA SKIP 2 CENTER Lista de Professores RIGHT Pgina: FORMAT 999 SQL.PNO SKIP 2
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

32

Instituto Municipal de Ensino Superior de Assis

SELECT * FROM PROFESSOR; Para ver a formatao do ttulo TTITLE ttitle ON e representado pelos seguintes 118 caracteres: CENTER 'Instituto Municipal - IMESA' SKIP 2 CENTER 'Lista de Professores' RIGHT 'Pgina: ' FORMAT 7.4. Btitle Permite a formatao de um rodap para o relatrio. Comando: BTITLE [COL numero da coluna texto|valor] [LEFT texto|valor] [RIGHT texto|valor] [CENTER texto|valor] [TAB total_de_espaos] [FORMAT formato] [SKIP numero_de_linhas] [ON | OFF] COL: coluna em que comear a ser exibido o texto ou valor; LEFT: alinha esquerda o texto ou valor; RIGHT: alinha direita o texto ou valor; CENTER: centraliza o texto ou valor; TAB: salta n espaos antes de comear a exibio de um novo texto ou valor; FORMAT: formato a ser exibido o valor que segue o comando; SKIP: linhas a serem saltadas antes da exibio de uma nova linha; ON | OFF: habilita ou no, temporariamente, a definio do ttulo.

Exemplo de Instrues: BTITLE LEFT Instituto Municipal - IMESA SKIP 2 CENTER Lista de Professores RIGHT Pgina: FORMAT 999 SQL.PNO SKIP 2 SELECT * FROM PROFESSOR; Para ver a formatao do rodap BTITLE

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

33

Instituto Municipal de Ensino Superior de Assis btitle ON e representado pelos seguintes 101 caracteres: LEFT 'Av. Getlio Vargas - 1200' SKIP 2 LEFT 'Fone: 3322-6744 Fax:3322-6219' RIGHT 'Pgina:' FORMAT 999 SQL.PNO SKIP 1

7.5. Break Permite a criao de quebras no relatrio. Comando: BREAK ON nome_da_coluna [SKIP numero_de_linhas | PAGE] [NODUPLICATES | DUPLICATES] BREAK ON: indica a coluna para a quebra; SKIP n: nmero de linhas que sero saltadas aps a quebra; SKIP PAGE: indica salto de pgina ao ocorrer a quebra; [NODUPLICATES | DUPLICATES]: permite que a coluna de quebra seja ou no repetida.

Exemplo de Instrues: BREAK ON cargo SKIP 1 SELECT * FROM PROFESSOR; BREAK ON cargo PAGE SELECT * FROM PROFESSOR; 7.6. Compute Permite fazer clculos na quebra. A coluna no parmetro ON deve ser a mesma do BREAK. No caso do parmetro da clusula ON ser PAGE ou REPORT, este tambm dever ser o argumento do comando BREAK. Comando: COMPUTE funo_de_grupo OF nome_da_coluna_a_contabilizar ON nome_da_coluna | ROW | REPORT

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

34

Instituto Municipal de Ensino Superior de Assis As funes de grupo aceitas pelo comando COMPUTE so: Funo AVG COUNT MAX MIN NUMBER SUM STD VARIANCE Exemplo de Instrues: BREAK ON cargo SKIP 1 COMPUTE count OF cargo ON cargo SELECT * FROM PROFESSOR; BREAK ON cargo SKIP 1 COMPUTE max OF salario ON cargo SELECT * FROM PROFESSOR; BREAK ON cargo SKIP 1 COMPUTE min OF salario ON cargo SELECT * FROM PROFESSOR; BREAK ON cargo SKIP 1 COMPUTE sum OF salario ON cargo SELECT * FROM PROFESSOR; BREAK ON cargo SKIP 1 COMPUTE number OF codigo ON cargo SELECT * FROM PROFESSOR; BREAK ON REPORT COMPUTE sum OF salario ON REPORT SELECT * FROM PROFESSOR; BREAK ON ROW COMPUTE sum OF salario ON ROW
Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

Descrio Mdia dos valores no nulos Conta os valores no nulos Maior valor Menor valor Conta as linhas Soma dos valores no nulos Desvio padro dos valores no nulos Varincia dos valores no nulos

LTP III BANCO DE DADOS - Mdulo Prtico: PL/SQL e SQL*Plus

35

Instituto Municipal de Ensino Superior de Assis

SELECT * FROM PROFESSOR;

7.7.Clear
Limpa o contedo de opes como BREAK, COLUMNS, COMPUTE, etc. Comando: CLEAR opo Exemplo de Instrues: CLEAR break 7.8. Salvar a Seleo em Arquivo Para salvar em arquivo o contedo de uma seleo, o SQL*Plus armazena em um arquivo todas as informaes exibidas na tela aps a execuo do comando SPOOL. A extenso padro deste arquivo ser LST. A opo OFF encerra o SPOOL e a opo OUT encerra o SPOOL com impresso imediata. SPOOL caminho nome_do_arquivo.extenso /OFF/OUT

Prof. Alex Poletto - apoletto@femanet.com.br www.femanet.com.br/~apoletto

Você também pode gostar