Você está na página 1de 113

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.

com/dariosandrade

I - INTRODUO

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.1 - OBJETIVOS DO CURSO

Neste curso voc aprender a usar o SQL*Plus para:

Definir e alterar a estrutura de um banco de dados; Consultar, inserir, alterar ou remover informaes de um banco de
dados;

Gerar relatrios a partir de consultas; Gerenciar a segurana e o desempenho de um banco de dados. Conhecer os princpios e terminologias da tecnologia Relacional. Utilizar blocos de linguagem PL/SQL. Realizar transaes com PL/SQL.

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.2 - O QUE BANCO DE DADOS?

um conjunto de informaes armazenadas de forma organizada. No tradicional sistema manual, as informaes geralmente so armazenadas em arquivos de papis. Para recuperar as informaes armazenadas, algum tipo de procura manual necessria. J nos sistemas de armazenamento digitalizados, os dados so armazenados em fitas magnticas ou discos rgidos e o acesso aos dados feito atravs de softwares de computador. Por qu utilizar sistemas de computadores para armazenar informaes em Banco de Dados? Muitas vantagens surgem com a utilizao de sistemas de informaes baseados em computadores como:

Recuperao e atualizao das informaes; Armazenamento das informaes em menor espao do que no sistema
manual;

Vrios usurios podem compartilhar o mesmo dado e utiliz-lo para


diferentes tarefas;

Controle de redundncia das informaes; Incompatibilidade de dados podem ser previstos; Forar utilizao de padronizaes; Controle de acesso e integridade (segurana).

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.3 - RDBMS (RELATIONAL DATABASE MANAGEMENT SYSTEM)

Para controlar o acesso e armazenamento de informaes necessrio a utilizao de um Sistema de Gerenciamento de Banco de Dados (DBMS). Um DBMS um software que gerencia os pedidos dos usurios para acesso s informaes, um DBMS tambm controla o armazenamento, a recuperao e a modificao dos dados de interesse dos usurios. O DBMS atua como interface entre o armazenamento fsico dos dados e os usurios. Quando um usurio efetua um pedido de acesso, o DBMS intercepta este pedido e executa as operaes necessrias no Banco de Dados. Portanto, o DBMS protege os usurios do Banco de Dados dos detalhes tcnicos dos equipamentos, da estrutura de armazenamento e da estratgia de acesso. Quando um usurio envia uma solicitao ao DBMS, este intercepta a solicitao, interpreta e realiza as operaes necessrias no banco de dados. Vrias alternativas existem para implementar um DBMS. Os tipos mais utilizados so:

Hierrquico Lista invertida Rede Relacional

Os vrios Banco de Dados que tm sido desenvolvidos recentemente so Relacionais. O Sistema de Gerenciamento de Banco de Dados da ORACLE relacional. Por essa razo, ns estaremos nos concentrando unicamente no acesso relacional ao Gerenciador de banco de dados.

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.4 - MODELO RELACIONAL

O princpio do modelo relacional surgiu em junho de 1970 num artigo publicado que se chamava A Relational Model of Data for Large Shared Data Banks. Este artigo foi escrito por Dr. E.F. Codd. Para os usurios, o Banco de Dados Relacional uma coleo de tabelas bi-dimensionais as quais so de fcil compreenso. Existe quatro conceitos que precisamos entender:

Tabelas Colunas Linhas Campos

TABELA

Cdigo 1 2 Campo

Nome Maria Pedro

Endereo Rua 1 Rua 30

Linha

Coluna O modelo relacional imita uma parte da matemtica conhecida como lgebra Relacional. Esse processo envolve:

Uma coleo de objetos conhecidos como Relacionamentos; Um conjunto de aes que agem no relacionamento produzindo novos
relacionamentos. Uma relao pode ser vista como uma tabela. A recuperao de dados feita atravs de operaes relacionais sobre estas tabelas.

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.5 - OPERADORES RELACIONAIS

RELAO Restrio

DESCRIO uma operao que retira e mostra dados de uma relao. possvel mostrar todas as linhas, ou apenas aquelas que respeitem uma determinada condio. Conhecida como subconjunto horizontal.

Projeo

a operao que exibe certas colunas de uma relao e chamada de subconjunto vertical.

Produto

o resultado de quando linhas de dois conjuntos de dados so concatenados. Todas as linhas do primeiro conjunto so concatenados com as do segundo. Produtos cartesianos produzem muitas linhas.

Juno (join)

o resultado obtido quando dois conjuntos de dados so concatenados de acordo com uma determinada condio.

Unio

Exibe todas as linhas que aparecem em ambas as relaes.

Interseco

Exibe apenas aquelas que existem em ambos os conjuntos.

Diferena

Mostra as linhas que aparecem em apenas uma das relaes.

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

UNION

INTERSECTION

DIFFERENCE

PRODUTO Pedro Joao Ricardo P R O D Vendedor Gerente Pedro = Pedro Joao Joao Ricardo Ricardo Vendedor Gerente Vendedor Gerente Vendedor Gerente

JOIN

Ricardo Joao Pedro Jose

10 10 20 30

J O I N

10 20 30 40

Financeiro RH Vendas CPD

Ricardo Joao = Pedro Jose

10 10 Financeiro 10 10 Financeiro 20 20 RH 30 30 Vendas

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.6 - PROPRIEDADES DE UM BANCO DE DADOS RELACIONAL

Um banco de dados relacional apresenta-se como colees de relaes (tabelas) ao usurio. O formato linha/coluna de uma tabela a maneira usual de visualizar os dados. Existe um conjunto de operadores para particionar e combinar colees de dados (seleo, projeo, produto, join, unio, interseo, diferena). No pode haver ponteiros explcitos. Conexes so realizadas baseadas puramente em dados. A linguagem utilizada para pesquisa base de dados no-procedural e parecida com o ingls. O usurio no precisa informar a rota de acesso ao dado e tambm no precisa saber como os dados esto armazenados fisicamente. Todos comandos para manuseio dos dados so contemplados pela linguagem SQL. H uma total independncia dos dados.

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.7 - PROPRIEDADE DE UMA COLEO DE DADOS TABULAR

Uma nica tabela possui as seguintes propriedades:

No pode haver linhas duplicadas; No h colunas com nomes duplicados; A ordem de uma linha insignificante; Valores so atmicos, no se decompem.

SQL*Plus Forms Reports Case Pro*Oracle Card Graphics SQL*Net SQL*Loader

SQL

ORACLE KERNEL

Drio S. Andrade PG.

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.8 - ARQUITETURA DE PRODUTOS ORACLE

O RDBMS ORACLE o produto principal da Oracle Corporation. Ele inclui um gerenciador de banco de dados e diversas ferramentas para auxiliar os usurios e o administrador do banco de dados - gerentes de sistema - a manter, monitorar e utilizar os dados. O ncleo do RDBMS o kernel o qual efetua as seguintes tarefas:

Gerenciar a armazenagem e definio dos dados; Controlar e restringir o acesso e concorrncia aos dados; Permitir back-up e recuperao de dados; Interpretar SQL.
Os comandos SQL so utilizados pelos programadores e usurios para acessar os dados num Banco de Dados ORACLE. Os programas aplicativos e as ferramentas ORACLE freqentemente permite aos usurios acessarem dados no banco de dados sem diretamente utilizar SQL, mas essas aplicaes devem tambm utilizar SQL quando executar seus pedidos de acesso. Portanto o banco de dados pode ser acessado unicamente utilizando SQL. Uma parte do Kernel o otimizador. O otimizador examina rotas de acesso para resolver e otimizar solicitaes de um comando SQL. A ORACLE oferece uma variedade adicional de ferramentas para acessar os dados no Banco de Dados.

Drio S. Andrade PG.

10

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.9 - SQL

Um sistema gerenciador de banco de dados necessita de uma linguagem de consulta para permitir que o usurio acesse os dados. Structured Query Language (SQL - pronuncia-se sequel) a linguagem adotada pela maioria dos bancos relacionais. O SQL foi desenvolvido em um prottipo de sistema de banco de dados relacionais - sistema R - da IBM no meio dos anos 70. Em 1979, a Oracle lanou o primeiro banco de dados relacional comercial que se utilizava de SQL.

Drio S. Andrade PG.

11

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.10 - CARACTERSTICAS DO SQL

SQL uma linguagem English-like. Ela utiliza palavras como select, insert, delete como parte de seu conjunto de comandos. SQL no uma linguagem procedural. Voc identifica quais informaes voc precisa e no como busc-las. Em outras palavras, a linguagem SQL no requer que voc especifique o mtodo de acesso aos dados. Todos os comandos SQL utilizam o otimizador - parte do kernel do RDBMS - para determinar a maneira mais rpida de recuperar os dados. SQL processa conjuntos de registros ao invs de um nico registro por vez. A mais comum forma de conjunto uma tabela. SQL pode ser usado por um conjunto de usurios incluindo DBAs, programadores, gerentes de pessoal e muitos outros grupos de usurios. SQL contm comandos que efetuam uma variedade de tarefas como: Consulta aos dados. Inserir, atualizar e remover linhas de uma tabela. Criar, modificar e remover objetos do Banco de Dados. Controlar o acesso ao Banco de Dados e seus objetos. Garantir a consistncia do Banco de Dados.

Drio S. Andrade PG.

12

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.11 - O QUE SQL*Plus

SQL*PLUS uma interface pela qual pode-se entrar e executar comandos SQL. Existe vrios comandos de SQL*PLUS os quais podem facilitar processos e formatar resultados de comandos de SQL, podendo edit-los e at grav-los. a interface bsica para manipulaes genricas de um banco de dados ORACLE.

SQL*PLUS SQL +
comandos de controle
Parmetros de controle de Formatao

DB ORACLE

Caractersticas principais: Interpretador de comandos SQL; Possui extenses para formatao de relatrios.

Drio S. Andrade PG.

13

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.12 - PL/SQL

Desde a verso 6 do ORACLE, foi introduzido uma opo no RDBMS chamada PL/SQL (Procedural Language for SQL). PL/SQL aumenta a capacidade do SQL oferecendo blocos de construtores procedimentais combinados com a capacidade de manipulao de dados de forma no procedimental do SQL. As principais caractersiticas do PL/SQL so:

Declarao de variveis. Atribuies ( X := Y + Z). Controles condicionais ( IF, THEN, ELSE, ELSIF, GO TO). Repeties de comandos - looping ( FOR, WHILE, EXIT, WHEN). Gerenciamento de excees. Aumenta a performance (operaes processadas junto aos dados). Aumenta produtividade.
O PL/SQL oferece:

Aumento de Performance
Quando voc utiliza SQL, seus comandos so enviados e processados pelo RDBMS um por vez, enquanto um bloco de comandos PL/SQL que contm um nmero de comandos SQL combinados com construtores PL/SQL so enviados e processados pelo RDBMS uma nica vez. Esta caracterstica aumenta a performance especialmente em sistemas cliente/servidor. Comandos PL/SQL so tratados pela engine PL/SQL que faz parte do Kernel, ou parte das ferramentas ORACLE. Comandos SQL so executados pelo executor de SQL do Kernel.

Aumento de Produtividade
Drio S. Andrade PG.

14

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

PL/SQL adiciona o poder do processamento procedural no desenvolvimento de aplicativos. Adicionalmente aplicativos escritos em PL/SQL so portveis para qualquer computador ou sistema operacional que execute o ORACLE RDBMS. O PL/SQL deve ser visto como uma tecnologia e no como um produto externo ao RDBMS.

Drio S. Andrade PG.

15

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.13 - PL/SQL NO ORACLE RDBMS

Bloco PL/SQL DECLARE PROCEDURAL PROCEDURAL BEGIN PROCEDURAL SQL PROCEDURAL SQL END

ORACLE RDBMS Mecanismo Bloco PL/SQL DECLARE PROCEDURAL PROCEDURAL BEGIN PROCEDURAL SQL PROCEDURAL SQL END SQL Statement Executor

Procedural Statement Executor

Drio S. Andrade PG.

16

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

I.14 - CONJUNTO DE COMANDOS SQL

SELECT

Este o comando mais utilizado, ele utilizado para recuperar dados do banco de dados.

INSERT / UPDATE / DELETE

Estes comandos so utilizados para entrar com novas linhas, alterar as linhas j existentes e remove-ls das tabelas em um especfico Banco de Dados. So tambm conhecidos como comandos DML (Data Manipulation Language).

CREATE/ALTER/DROP

Estes comandos so utilizados dinamicamente para configurar (criar, alterar e remover) estrutura de dados. So tambm conhecidos como comandos DDL (Data Definition Language).

GRANT/REVOKE

Estes comandos so utilizados para controlar as permisses de acesso ao Banco de Dados e seus objetos.

Nota : Existem mais comandos SQL os quais esto referenciados no SQL*PLUS, Reference Guide.

Drio S. Andrade PG.

17

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II - COMANDOS SQL e SQL*Plus

Drio S. Andrade PG.

18

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.1 - CONTEDOS

1. Ativao do SQL*Plus

2. Criao de tabelas

3. Manipulao de tabelas

4. Formatao de relatrios

5. Edio de comandos

6. Outros comandos

Drio S. Andrade PG.

19

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.2 - ATIVAO DO SQL*Plus

Para entrar no SQL*Plus, digite:

$ sqlplus <ENTER> SQL*Plus: Release 3.1.1.9.1 - Production on Wed Apr 3 08:56 Copyright (c) ORACLE Corporation 1979, 1992, All Enter user-name: oral1 Enter password: _________ a senha no exibida Connected to: ORACLE7 Server Release 7.0.12.1.0 - Production With the procedural option PL/SQL Release 2.0.14.0.1 - Production SQL>

ou

a senha exibida

$ sqlplus ora1/senha1 SQL*Plus: Release 3.1.1.9.1 - Production on Wed Apr 3 08:56 Copyright (c) ORACLE Corporation 1979,1992. All Connected to: ORACLE7 Server Release 7.0.12.1.0 - Production With the procedural option PL/SQL Release 2.0.14.0.1 - Production SQL> Para sair do sql*plus, digite: SQL> exit

Drio S. Andrade PG.

20

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.3 - ESCREVENDO COMANDOS SQL

Quando escrevemos comandos SQL, importante relembrar algumas pequenas regras e diretrizes para construir comandos vlidos como: Comandos SQL podem estar em uma ou mais linhas. Usualmente, as clusulas so escritas em linhas separadas. Tabulao pode ser utilizada. Palavras reservadas SQL no podem ser quebradas entre linhas. Os comandos SQL podem ser escritos em maisculo ou minsculo. Quando um comando SQL entrado, as subsequentes linhas so numeradas. Este o buffer do SQL. Somente um comando pode estar contido no SQL buffer. Este comando pode ser executado das seguintes formas: Colocando ; no final. Colocando ; ou / na ltima linha. Colocando / no prompt do SQL. Executando o comando RUN no prompt do SQL.

Drio S. Andrade PG.

21

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Qualquer um dessas sentenas so vlidas:

SQL> SELECT * FROM emp;

SQL> SELECT 2 * 3 FROM 4 emp 5;

SQL> SELECT * 2 FROM emp;

Drio S. Andrade PG.

22

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.4 - CRIAO DE TABELAS

O que uma tabela?

Nome da coluna

Coluna

Linha ou (registro)

EMP 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

MGR 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782

HIREDATE 17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 01-MAY-81 09-JUN-81 19-APR-87 17-NOV-81 08-SEP-81 23-MAY-87 03-DEC-81 03-DEC-81 23-JAN-82

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

COMM 300 500 1400

DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10

Campos

Drio S. Andrade PG.

23

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para criar a tabela de empregados:

SQL> CREATE TABLE emp ( 2 empno number(4) not null, 3 ename char(10), 4 job char(10), 5 mgr number(4), 6 hiredate date, 7 sal number(10,2), 8 comm number(10,2), 9 deptno number(2));

, separa as definies das colunas

; executa o comando

Indica a continuao do comando

somente o cabealho

EMPNO

ENAME

JOB

MGR

HIREDATE

SAL

COMM

DEPTNO

Drio S. Andrade PG.

24

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.5 - INCLUINDO NOVAS LINHAS EM UMA TABELA O comando INSERT usado para inserir linhas em uma tabela. Sintaxe:
INSERT INTO schema. table View

@dblink

VALUES ( , ( column ) subquery_2

expr

Onde: schema o schema contendo a tabela ou viso. Se voc omitir o eschema, o Oracle assume a tabela ou viso como seu prprio dono. o nome da tabela no qual as linhas sero inseridas. Se voc especificar uma viso, o Oralce insere linhas na tabela que a viso baseia-se. o nome completo ou parcial de um link de banco de dados para um banco de dados remoto onde a tabela ou viso est localizada. Se voc omitir dblink, o Oracle assume que a tabela ou viso est em um banco de dados local. uma coluna da tabela ou viso. Na linha inserida, cada coluna nesta lista est atribuda a um valor na clusula VALUES ou a subconsulta. Especifica uma linha de valores a serem inseridos na tabela ou viso. uma sub-consulta que retorna linhas que so inseridas na tabela. A lista selecionada desta consulta tem que ter o mesmo nmero de colunas da lista do comando INSERT.

table, view

dblink

column

VALUES subsquery_2

Drio S. Andrade PG.

25

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Caracteres e datas devem sempre estar entre aspas simples. Para voc inserir linhas em uma tabela, a tabela tem que ser sua ou voc tem que ter privilgios sobre ela. O privilgio de sistema INSERT ANY TABLE tambm permite a voc inserir linhas em qualquer tabela de qualquer usurio. Para inserir informaes na tabela EMP.

SQL> INSERT INTO emp VALUES 2 (7369, SMITH, CLERCK, 7902, 3 17-DEC-80, 800, NULL, 20); SQL> INSERT INTO emp VALUES 2 (7566, JONES, MANAGER, 7839, 02-APR-81, 3 2975, NULL, 20);

EMPNO 7369 7566

ENAME SMITH JONES

JOB CLERK MANAGER

MGR 7902 7839

HIREDATE 17-DEC-80 02-APR-81

SAL 800 2975

COMM

DEPTN O 20 20

Duas formas para inserir informaes na tabela EMP.

SQL> INSERT INTO emp 2 (ename, empno, job, mgr, hiredate, sal, deptno) 3 VALUES (SAMANTA, 103, ANALISTA, 110, sysdate-30, 4 1500, 20); ou SQL> 2 3 INSERT INTO emp VALUES (103, SANTANA, ANALISTA, 110, sysdate-30, 15000, NULL, 20);

possvel incluir uma nova linha com valores atribudos para cada coluna, neste caso os nomes das colunas podem ser omitidos. Recomenda-se que a lista de colunas seja sempre especificada.

Drio S. Andrade PG.

26

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

O comando abaixo insere um registro na tabela dept. INSERT INTO dept (deptno, dname, loc) VALUES (99,Financeiro, Curitiba);

O exemplo abaixo insere um linha na tabela DEPT. INSERT INTO dept VALUES (50, PRODUCAO, MARINGA)

O exemplo abaixo insere uma linha com seis colunas na tabela EMP. Uma dessas colunas est atribuda com valor nulo e outra est atribuda com notao cientfica. INSERT INTO emp (empno, ename, job, sal, comm, deptno) VALUES (7890, JINKS, CLERK, 1.2E3, NULL, 40)

O comando abaixo inclue uma coluna de cada vez. Utilizando variveis para substituio, possvel aumentar a velocidade de entrada de informaes. INSERT INTO dept (deptno, dname, loc) VALUES (&dept_num, &dept_nome, &localizacao);

Quando este comando for executado, os valores para as variveis sero pedidos. Exemplo: SQL> INSERT INTO salgrade (losal, hisal, grade) 2 SELECT min(sal), max(sal), substr(sal, 1,1) 3 FROM emp 4 GROUP BY substr(sal, 1,1);

INSERT

INTO func_dept_10 (empno, ename, sal, job, hiredate) SELECT empno, ename, sal, job, hiredate FROM emp WHERE deptno = 10;

Drio S. Andrade PG.

27

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.6 - ALTERANDO LINHAS DE UMA TABELA

O comando UPDATE usado para alterar valores j armazenados em tabelas. Para voc atualizar linhas em uma tabela, a tabela tem que ser sua ou voc tem que ter privilgios sobre ela. O privilgio de sistema UPDATE ANY TABLE tambm permite a voc alterar linhas em qualquer tabela de qualquer usurio. Sintaxe:

UPDATE , table schema. View snapshot ( subquery_1 , , SET ( column ) = column = ( subquery_2 ) expr ( subquery_3 ) ) @dblink t_alias

WHERE condio

Drio S. Andrade PG.

28

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Onde: schema o schema contendo a tabela ou viso. Se voc omitir o schema, o Oracle assume a tabela ou viso como seu prprio dono. o nome da tabela no qual est sendo atualizada. Se voc especificar uma viso, o Oralce atualiza na tabela que a viso baseiase. o nome completo ou parcial de um link de banco de dados para um banco de dados remoto onde a tabela ou viso est localizada. Se voc omitir dblink, o Oracle assume que a tabela ou viso est em um banco de dados local. um nome diferente para a tabela, viso ou subconsulta para ser referenciada no comando. uma subconsulta que o oracle trata da mesma maneira que uma viso. o nome de uma coluna para a tabela ou viso que est sendo atualizada. Se voc omitir a coluna da tabela na clusula SET, o valor da coluna permanece inalterado. o novo valor atribudo a coluna correspondente. uma subconsulta que retorna novos valores que so atribudos para colunas correspondentes. uma subconsulta que retorna um novo valor que est atribudo a coluna correspondente. restrio para atualizar as linhas. Se essa clusula for omitida, o Oracle atualiza todas as linhas na tabela ou viso.

table, view

dblink

alias

subquery_1 column

expr subquery_2

subquery_3

where

Drio S. Andrade PG.

29

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

O comando abaixo fornece ao SCOTT a profisso de VENDEDOR e um aumento de salrio de 10%. UPDATE emp SET job = VENDEDOR, sal = sal * 1.1 WHERE ename = SCOTT;

O exemplo abaixo transforma para nulo as comisses de todos os empregados que tenham como cargo SALESMAN. UPDATE emp SET comm = NULL WHERE job = SALESMAN;

Para colocar R$1000,00 de comisso para o funcionrio de nmero 7499. SQL> UPDATE emp 2 SET comm = 1000 3 WHERE empno = 7499; Para dobrar o salrio de todos empregados do departamento 20 e transfer-los para o departamento 30. SQL> UPDATE emp 2 SET sal = 2 * sal, deptno = 30 3 WHERE deptno = 20; Para atualizar o salrio do funcionrio 7902; EMPNO 7902 ENAME FORD SAL 3000

SQL> UPDATE emp 2 SET sal = 3500 3 WHERE empno = 7902; EMPNO 7902 ENAME FORD SAL 3500

Drio S. Andrade PG.

30

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para dar 10% de aumento para os funcionrios que trabalham no departamento 10.

SQL> UPDATE emp 2 SET sal = sal*1.10 3 WHERE deptno = 10; O comando abaixo promove JONES a gerente do departamento 20 com um salrio de R$ 1000,00. (Assumindo que tenha somente um Jones).

SQL> 2 3

UPDATE emp SET job = MANAGER, sal = sal + 1000, deptno = 20 WHERE ename = JONES;

Drio S. Andrade PG.

31

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.7 - REMOVENDO LINHAS DE UMA TABELA

O comando DELETE usado para remover linhas de uma tabela: Sintaxe:


DELETE FROM schema. table View ( subquery ) @dblink

WHERE condio

Onde: schema o schema contendo a tabela ou viso. Se voc omitir o schema, o Oracle assume a tabela ou viso como seu prprio dono. o nome da tabela no qual est sendo apagado as linhas. Se voc especificar uma viso, o Oralce apaga linhas da tabela que a viso baseia-se. o nome completo ou parcial de um link de banco de dados com um banco de dados remoto onde a tabela ou viso est localizada. Se voc omitir o dblink o Oracle7 assume que a tabela ou viso est localizada em um banco de dados local. uma sub-consulta no qual os dados so selecionados para serem apagados. O Oracle executa uma subconsulta e usa o resultado das linhas como uma tabela na clusula FROM. apaga somente linhas que satisfaam a condio. A condio pode referenciar a tabela e pode conter uma sub-consulta.

table, view

dblink

subquery

WHERE

Para voc apagar linhas em uma tabela, a tabela tem que ser sua ou voc tem que ter privilgios sobre ela. O privilgio de sistema DELETE ANY TABLE tambm permite a voc apagar linhas em qualquer tabela de qualquer usurio.
Drio S. Andrade PG.

32

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para remover o empregado de nmero 7369. SQL> DELETE FROM emp WHERE empno = 7369; Para remover todos os empregados do departamento 20. SQL> DELETE FROM emp WHERE deptno = 20; Para remover todos os empregados. SQL> DELETE from emp; Para remover o empregado de nmero 7934: SQL> DELETE FROM emp 2 WHERE empno = 7934; Para remover todos os empregados admitidos a partir de 1989: SQL> DELETE FROM emp 2 WHERE hiredate >= 01-JAN-89; O comando abaixo apaga todos empregados da tabela EMP que tenham profisso SALESMAN e comisso menor do que R$100,00. SQL> DELETE FROM emp 2 WHERE job = SALESMAN 3 AND comm < 100;

Drio S. Andrade PG.

33

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.8 - O COMANDO TRUNCATE

O comando TRUNCATE usado para remover todas as linhas de uma tabela:

TRUCANTE {TABLE | CLUSTER} tabela [ {DROP | REUSE} STORAGE]

>> tabela

Nome da tabela de onde sero removidas as linhas

Observaes:

A opo DROP STORAGE libera o espao fsico alocado tabela para


o banco de dados.

O comando TRUNCATE no dispara os gatilhos de deleo. No possvel executar o comando TRUNCATE sobre uma tabela
referenciada por outra qualquer. Exemplos:

Para remover as linhas da tabela EMP, liberando seu espao fsico:


SQL> TRUNCATE TABLE emp DROP STORAGE;

Drio S. Andrade PG.

34

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.9 - EDIO DE COMANDOS

O ltimo comando SQL (no SQL*Plus) fica armazenado no buffer de edio do SQL*Plus. Para listar o contedo do buffer: SQL> list ou SQL> l 1 SELECT 2 empno, ename 3 FROM emp 4* WHERE empno = 7902
* indica a linha corrente qualquer um desses comandos pode ser utilizado

Para apagar a linha corrente SQL> del SQL> l 1 SELECT 2 empno, ename 3* FROM emp

Drio S. Andrade PG.

35

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para inserir linhas aps a linha corrente: SQL> list 2 2* empno, ename SQL> imput ou SQL> list 3 job, 4 sal 5 SQL> list 1 SELECT 2 empno, ename 3 job, 4 sal 5* FROM emp;
deixe um linha em branco para terminar a insero

Para acrescentar caracteres no fim da linha corrente: SQL> 2* SQL> ou SQL> SQL> 1 2 3 4 5* list 2 empno, ename append, mgr, a, mgr, list SELELCT empno, ename, mgr, job, sal FROM emp;

Drio S. Andrade PG.

36

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para substituir caracteres da linha corrente: SQL> list 2 2* empno, ename, mgr, SQL> change/mgr/sal/ ou SQL> c/mgr/sal/ SQL> list 1 SELECT 2 empno, ename, sal, 3 job, 4 sal 5* FROM emp

Para executar o comando existente no buffer: SQL> run ou SQL> r ou SQL> / O SQL*Plus permite a utilizao de outros buffers alm do buffer de comandos SQL. Para ativar um buffer chamado TESTE, por exemplo: SQL> set buffer teste Para saber qual o buffer corrente: SQL> show buffer buffer TESTE

Drio S. Andrade PG.

37

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para modificar o contedo do buffer corrente com um editor externo: SQL> edit O editor externo pode ser especificado pelo usurio da seguinte forma: SQL> define _editor = vi Para salvar o buffer corrente num arquivo do Sistema Operacional: SQL> save arquivo
nome do arquivo; a extenso .sql acrescentada automaticamente

Para recuperar um comando SQL armazenado num arquivo: SQL> get arquivo Para remover o contedo do buffer corrente: SQL> clear buffer Para executar uma seqncia de comandos (SQL ou SQL*Plus) armazenada num arquivo: SQL> start arquivo ou SQL> @arquivo Para editar um arquivo qualquer do sistema operacional: SQL> edit ex21
assumida a extenso .sql

Drio S. Andrade PG.

38

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.10 - OUTROS COMANDOS

Para executar um comando qualquer do sistema operacional: SQL> host is - al ou SQL> ! Is - al total 20 drwxr-xr-x 2 drwxr-xr-x 3 -rw-rr1 -rw-rr1 -rw-rr1 -rw-rr1 -rw-rr1 curso curso curso curso curso curso curso oracle oracle oracle oracle oracle oracle oracle 128 1024 800 838 1152 1616 1796 Jan 3 Jan 3 Jan 3 Jan 3 Jan 3 Jan 3 Jan 3 18:02 17:59 17:59 17:59 18:01 18:01 18:01 . .. ex21.sql ex22.sql ex23.sql ex24.sql ex25.sql

Para obter ajuda sobre um comando SQL ou SQL*Plus: SQL> help select
nome do comando

Para saber todos os comandos disponveis: SQL> help commands

Drio S. Andrade PG.

39

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

II.11 - EXERCCIOS

1. Crie uma tabela chamado ALUNO com as seguintes colunas: NOME ENDER CIDADE ESTADO CEP ANIVERSRIO CHAR(30) NOT NULL CHAR(50) CHAR(25) CHAR(2) NUMBER(5) DATE

2. Insira dados sobre voc e algum membro da sua famlia na tabela ALUNO.

3. Consulte o nome e a data de aniversrio das pessoas cadastradas.

4. Consulte o seu (e somente o seu) endereo completo.

5. Salve o comando anterior no arquivo ex24.sql, saia do SQL*Plus, entre novamente e execute o comando contido no arquivo gerado.

6. Dobrar o salrio do funcionrio de nmero 7566.

7. Remover os empregados que possuem comisso maior que o prprio salrio.

Drio S. Andrade PG.

40

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III - CONSULTAS BSICAS

Drio S. Andrade PG.

41

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.1 - CONTEDO

1. Seleo de colunas

2. Uso de expresses

3. Ordenao de resultados

4. Agrupamento

5. Operaes de conjunto

6. Juno de tabelas

Drio S. Andrade PG.

42

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.2 - SELEO DE COLUNAS

A sentena do comando SELECT recupera as informaes do Banco de Dados implementando todos os operadores da lgebra Relacional. Uma pesquisa simples deve conter:

A clusula SELECT que selecionar as colunas que sero exibidas. Os


nomes das colunas devem estar separados por vrgula.

A clusula FROM que especifica as tabelas envolvidas.


Para voc selecionar dados de uma tabela ou snapshot, a tabela ou o snapshot tem que ser sua ou voc tem que ter privilgios sobre ela. O privilgio de sistema SELECT ANY TABLE tambm permite a voc selecionar linhas em qualquer tabela de qualquer usurio.

Drio S. Andrade PG.

43

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Sintaxe:
SELECT DISTINCT ALL schema. expr c_alias AS , FROM schema. table View snapshot @dblink t_alias WHERE condio * , table View snapshot .*

CONNECT BY condio

UNION

comando SELECT

START WITH condio , GROUP BY expr HAVING condio

UNION ALL INTERSECT MINUS

, ORDER BY expr position c_alias ASC DESC

Drio S. Andrade PG.

44

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Onde: DISTINCT ALL * table.*, view.*, snapshot.* retorna somente uma cpia de cada linha selecionada que for duplicada. retorna todas as linhas selecionadas, incluindo as duplicadas. O default ALL. select todas as colunas de todas as tabelas. seleciona todas as colunas da tabela, viso ou snapshot. Voc pode usar o schema para selecionar de uma tabela, viso ou snapshot em um outro schema. seleciona uma expresso. prov um nome diferente para a coluna. o schema contendo a tabela, viso ou snapshot. Se voc omitir o schema, o Oracle assume a tabela, viso ou snapshot como seu prprio dono. o nome da tabela, viso ou snapshot no qual est sendo selecionado. o nome completo ou parcial para um link de banco de dados com um banco de dados remoto onde a tabela, viso ou snapshot est localizada. prov um nome diferente para a tabela, viso ou snapshot ou subconsulta. restringe as linhas selecionadas. Se voc omitir esta clusula, o Oracle retorna todas as linhas da tabela, viso ou snapshot. retorna linhas em uma ordem hierrquica. funo de grupo restringe os grupos de cada linha retornada no GROUP BY. combina as linhas retornadas por dois comandos SELECT usando uma operao de funo.

expr c_alias schema

table, view, snapshot dblink

t_alias WHERE

START WITH, CONNECT BY GROUP BY HAVING UNION, UNION ALL, INTERSECT, MINUS

Drio S. Andrade PG.

45

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

ORDER BY

ordena as linhas retornadas por um comando. Expr ordena linhas baseadas no valor de expr. A expresso baseada em colunas na lista selecionada ou colunas em tabelas, vises ou snapshots na clusula FROM. Position ordena linhas baseado em seus valores para a expresso na posio da lista selecionada. ASC, DESC especifica a ordenao ascendente ou descendente. O opo ASC default.

O comando abaixo mostra o nmero do departamento, nome e nmero do patro da tabela EMP. SELECT deptno, ename, mgr FROM emp;

DEPTNO ----------10 30 30 20 30 10 20 10 30 20 30 20 10

ENAME ------------------------SMITH ALLEN WARD JONES BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

MGR -----------7902 7698 7698 7839 7839 7839 7566 7698 7788 7698 7566 7782

Drio S. Andrade PG.

46

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para recuperar as informaes da tabela EMP:

SQL> SELECT * FROM emp;

EMP 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

MGR 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782

HIREDATE 17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 01-MAY-81 09-JUN-81 19-APR-87 17-NOV-81 08-SEP-81 23-MAY-87 03-DEC-81 03-DEC-81 23-JAN-82

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

COMM 300 500 1400

DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10

O comando abaixo seleciona linhas dos empregados que trabalham no departamento 30. SQL> SELECT * 2 FROM emp 3 WHERE deptno = 30; A ordem em que as colunas so especificadas muda a apresentao do resultado: SQL> SELECT ename, empno 2 FROM emp 3 WHERE empno < 7500;

ENAME SMITH ALLEN

EMPNO 7369 7499

Drio S. Andrade PG.

47

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para indicar as colunas a serem recuperadas de uma tabela: SQL> SELECT empno, ename 2 FROM emp 3 WHERE empno < 7500;

EMPNO 7369 7499

ENAME SMITH ALLEN

Drio S. Andrade PG.

48

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.3 - OPERADORES ARITMTICOS

Os operadores aritmticos so utilizados para dividir valores numricos. Os operadores de maior conforme pode ser observado na tabela seguinte, avaliao dos operadores das expresses. Esta aritmticos na ordem decrescente de precedncia:

somar, subtrair, multiplicar e precedncia, os parnteses, permite alterar a ordem de tabela lista os operadores

( )

Alteram as regras de precedncia dos operadores. Os operadores entre os parnteses so avaliados em primeiro lugar. SELECT (2+2) / (2-1) from dual;

+ -

Assinalam uma expresso como positiva ou negativa. SELECT * FROM EMP WHERE COMM = -10 SELECT * FROM EMP WHERE SAL > 1000

* /

Multiplicam e dividem valores numricos. SELECT 2*X+10 ... WHERE X > Y / 2

+ -

Somam e subtraem valores numricos. SELECT 2 * X + 1 ... WHERE X > Y - Z

Drio S. Andrade PG.

49

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.4 - USO DE EXPRESSES

Para saber o salrio anual dos empregados

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

SQL> SELECT ename, 12 * sal FROM emp;

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JANES FORD MILLER

12*SAL 9600 19200 15000 35700 15000 34200 29400 36000 60000 18000 13200 11400 36000 15600

Drio S. Andrade PG.

50

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber o nmero total de caracteres nas colunas ENAME e JOB:

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

sinnimo para a coluna

SQL> SELECT 2 length (ename) + 3 length(job) Comprimento Total 4 FROM emp;

Comprimento Total 10 13 12 12 14 12 12 12 13 14 10 10 11 11

Drio S. Andrade PG.

51

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.5 - OPERADORES DE CARACTERES

Os operadores de caracteres so usados em expresses para manipular strings de caracter. A seguir o nico tipo de operador de caracter:

||

Faz a concatenao de strings de caracteres, ou seja, encadeiam ou ligam duas strings. SELECT O Nome || ename from emp

O resultado da concatenao um valor caracter. As strings de caracteres dos tipos de dados CHAR podem ter o mximo de 255 caracteres. Esta restrio aplica-se tambm s strings de caracteres formadas pela concatenao de duas outras strings.

Drio S. Andrade PG.

52

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber os nomes dos empregados que trabalham no departamento 20. EMP 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10

SQL> SELECT ename 2 FROM emp 3 WHERE deptno = 20;

ENAME SMITH JONES SCOTT ADAMS FORD

Drio S. Andrade PG.

53

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber o tempo de servio dos funcionrios cuja comisso maior que 50% do salrio: SQL> SELECT ename, 2 months_between(sysdate, hiredate) MESES 3 FROM emp 4 WHERE comm > sal * 0.50;

ENAME MARTIN

MESES 187.5371

Drio S. Andrade PG.

54

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.6 - OPERADORES DE COMPARAO

Os operadores de comparao so usados em condies que comparam duas expresses. Assim como as condies, os resultados das comparaes entre expresses podem ser verdadeiro ou falso. A tabela a seguir lista os operadores de comparao:

()

Alteram as operadores.

regras

de

validao

das

precedncias

dos

SELECT (SAL + COMM)/2 from emp;

Testa a igualdade entre expresses. SELECT * FROM EMP WHERE SAL = 1000;

!= ^= <>

Testam a diferena entre expresses. SELECT * FROM EMP WHERE SAL <> 1000;

>

Testa se uma expresso maior que outra. SELECT * FROM EMP WHERE SAL > 1000

<

Testa se uma expresso menor que outra. SELECT * FROM EMP WHERE SAL < 1000

>=

Testa se uma expresso maior ou igual a outra. SELECT * FROM EMP WHERE SAL >= 1000

<=

Testa se uma expresso menor ou igual a outra. SELECT * FROM EMP WHERE SAL <= 1000

IN
Drio S. Andrade

Verifica se um expresso existe em um dos membros


PG.

55

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

especificados entre parnteses logo aps o operador. Esses membros so strings de caracteres que devem aparecer entre aspas simples e separados por vrgula. O operador equivalente ao operador =ANY. SELECT * FROM EMP WHERE JOB IN (SALESMAN,CLERK)

NOT IN

Valida a expresso como falsa se algum membro que segue o operador nulo. Esses membros so os valores retornados de uma pesquisa efetuada com SELECT, por exemplo. equivalente a != ALL. Todas as linhas sero avaliadas como falso se qualquer membro da lista de valores referenciada pelo operador NOT IN for nulo. SELECT * FROM EMP WHERE JOB NOT IN (SALESMAN,CLERK)

NOT BETWEEN - AND

Validam uma expresso como sendo maior ou igual ao valor que segue BETWEEN e menor ou igual ao valor que segue AND.

NOT LIKE

Este operador usado para comparar duas strings de caracteres e verificar se elas so parecidas. Podem ser utilizados caracteres % e _ . O caracter percentual (%) utilizado para comparar um ou mesmo nenhum caracter, entretanto no pode comparar um valor nulo. O caracter sublinhado (_) utilizado para comparar exatamente um caracter. Funo UPPER: utilizada para fazer com que as expresses sejam avaliadas corretamente comparando letras minsculas e maisculas. ... SELECT SAL FROM EMP

IS NOT NULL

Este operador deve ser usado quando for necessrio testar uma condio para verificar se ela nula ou no. ... WHERE X IS NOT NULL

Drio S. Andrade PG.

56

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.7 - OPERADORES LGICOS

Os operadores lgicos so usados para afetar o resultado de mltiplas condies. O operador AND requer que a linha satisfaa todas as duas condies comparadas. Pr sua vez, o operador OR requer que a linha satisfaa pelo menos uma das duas condies comparadas. SELECT * FROM emp WHERE (hiredate < 01-JAN-93 ) AND (sal < 1000) O comando select abaixo mostra o nome, cargo, salrio e departamento de todos os empregados, exceto os que possuem cargo SALESMAN e trabalham no departamento 10. SELECT ename, job, sal, deptno FROM EMP WHERE NOT(job = SALESMAN AND deptno = 30)

Drio S. Andrade PG.

57

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.8 - OUTROS OPERADORES

(+)

Indica que a coluna precedida pelo sinal (+) est relacionada coluna anterior da declarao e faz parte de outra tabela. Este operador utilizado para especificar os relacionamentos entre as colunas. ...WHERE DEPT.DEPTNO = EMP.DEPTNO (+)

Seleciona todas as colunas das tabelas em uma pesquisa. SELECT * FROM EMP SELECT EMP.* FROM EMP

COUNT(X)

Retorna o nmero de linhas onde a expresso X no nula. SELECT COUNT(DEPTNO) FROM EMP

ALL

Retm os valores duplicados em pesquisas. SELECT ALL * ... COUNT( ALL DEPTNO)

DISTINCT

Elimina as linha duplicadas do resultado de uma pesquisa ou elimina os valores em duplicidade de uma expresso. SELECT DISTINCT * ... COUNT(DISTINCT DEPTNO)

PRIOR

Define a relao entre as colunas das tabelas em uma pesquisa. A expresso que segue o operador PRIOR representa a linha da tabela principal. A outra expresso que se segue anterior representa a linha com a qual se efetua o relacionamento. CONNECT BY PRIOR EMPNO = LEVEL_EBN

Drio S. Andrade PG.

58

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.9 - SUBSTITUIO DE VARIVEIS

Voc pode utilizar variveis nos arquivos de comandos ou nos comandos SQL para representar valores que sero entrados em tempo de execuo. Uma varivel comea sempre com o caracter & e sempre temporria. Para definir uma varivel permanente deve-se utilizar &&. Pegar o nmero do departamento em tempo de execuo. SELECT empno, ename, sal FROM emp WHERE deptno = &numero_departamento; Enter value from numero_departamento:

Se a varivel for do tipo caracter, deve-se entrar com a informao entre aspas simples. Exemplo: SELECT ename, sal FROM emp WHERE ename = &nome_do_funcionario;

Drio S. Andrade PG.

59

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.10 - ORDENAO DE RESULTADOS Normalmente a ordem das colunas resultantes de uma pesquisa indefinida. A clusula ORDER BY pode ser utilizada para organizar as linhas. Se usada, ela sempre deve ser a ltima clusula da sentena do SELECT.

ASC

Parmetro default, ordena o resultado da pesquisa pelas colunas especificada na ordem ascendente.

DESC

Ordena o resultado da pesquisa especificada na ordem decrescente.

pelas

colunas

O comando abaixo retorna o nome, salrio multiplicado por 12 e nmero do departamento em ordem alfabtica. SELECT ename, job, sal * 12, deptno FROM emp ORDER BY ename; Para listar os funcionrios em ordem alfabtica: SQL> SELECT ename, job, sal 2 FROM emp 3 ORDER BY ename;

ENAME ADAMS ALLEN BLAKE CLARK FORD JAMES JONES KING MARTIN MILLER SCOTT SMITH TURNER WARD

JOB CLERK SALESMAN MANAGER MANAGER ANALYST CLERK MANAGER PRESIDENT SALESMAN CLERK ANALYST CLERK SALESMAN SALESMAN

SAL 1100 1600 2850 2450 3000 950 2975 5000 1250 1300 3000 800 1500 1250

Drio S. Andrade PG.

60

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para listar os empregados em ordem descrescente de salrio, por cargo. SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE job in (ANALYST, SALESMAN, 4 MANAGER) 5 ORDER BY job, sal desc;

ENAME SCOTT FORD JONES BLAKE CLARK ALLEN TURNER WARD MARTIN

JOB ANALYST ANALYST MANAGER MANAGER MANAGER SALESMAN SALESMAN SALESMAN SALESMAN

SAL 3000 3000 2975 2850 2450 1600 1500 1250 1250

Pode-se usar expresses ou referncias posio de expresses no SELECT como argumentos do ORDER BY:

SQL> SELECT ename, job, length(job), sal 2 FROM emp 3 WHERE job in (ANALYST, SALESMAN, 4 MANAGER) 5 ORDER BY 3, sal + nvl(comm,0) desc;

Drio S. Andrade PG.

61

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.11 - A CLUSULA WHERE

A clusula WHERE corresponde ao operador Restriction da lgebra Relacional. Ela contm a condio s quais efetuaro comparaes nas linhas para serem exibidas. A clusula WHERE quando utilizada, deve estar logo aps a clusula FROM. A clusula WHERE pode comparar valores s colunas, valores literais, expresses aritmticas ou funes utilizando os operadores mencionados. O comando abaixo mostra todos os empregados que trabalha no departamento 30. SELECT * FROM emp WHERE deptno = 30; O comando abaixo seleciona o nome, cargo, salrio e nmero do departamento dos empregados, exceto os vendedores que trabalham no departamento 30. SELECT ename, job, sal, deptno FROM emp WHERE not (job = SALESMAN and deptno = 30);

Drio S. Andrade PG.

62

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.12 - CLUSULA GROUP BY

A clusula GROUP BY pode ser usada para dividir as linhas de uma tabela em pequenos grupos. Funes de grupos podem ser utilizadas para retornar uma informao sumarizada de cada grupo.

SELECT job, avg(sal) FROM emp GROUP BY job;

Com essa clusula pode-se tambm agrupar linhas dentro de grupos. SELECT job, deptno, avg(sal) FROM emp GROUP BY deptno, job;

O comando abaixo retorna o menor e maior salrio de cada departamento. SELECT deptno, min(sal), max(sal) FROM emp GROUP BY deptno;

O comando abaixo retorna o menor e maior salrio para os funcionrios que tem como profisso CLERK, por departamento. SELECT deptno, min(sal), max(sal) FROM emp WHERE job = CLERK GROUP BY deptno;

Drio S. Andrade PG.

63

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber quantos funcionrios trabalham em cada departamento. EMP 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK MGR 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782 HIREDATE 17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 01-MAY-81 09-JUN-81 19-APR-87 17-NOV-81 08-SEP-81 23-MAY-87 03-DEC-81 03-DEC-81 23-JAN-82 SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300 COMM 300 500 1400 DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10

coluna do agrupamento

todas as linhas

SQL> SELECT deptno, count(*) 2 FROM emp 3 GROUP BY deptno;

funo de grupo

DEPTNO 10 20 30

COUNT(*) 3 5 6

Nota: Omitir a clusula GROUP BY significa agrupar toda a tabela.

Drio S. Andrade PG.

64

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.13 - CLUSULA HAVING

Se quiser especificar quais grupos sero exibidos, utilize a clusula HAVING. SELECT deptno, avg(sal) FROM emp GROUP BY deptno HAVING count (*) > 3;

recomendado que a clusula GROUP BY venha antes da clusula HAVING. O comando abaixo retorna o menor e maior salrio para os funcionrios que tem como profisso CLERK por departamento, tendo o menor salrio menor do que 1000. SELECT deptno, min(sal), max(sal) FROM emp WHERE job = CLERK GROUP BY deptno HAVING min(sal) < 1000;

Drio S. Andrade PG.

65

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber a soma dos salrios para os cargos onde a mdia de salrios maior que 1500: EMPNO 7788 7902 7369 7876 7934 7900 7566 7782 7698 7839 7499 7654 7844 7521 ENAME SCOTT FORD SMITH ADAMS MILLER JAMES JONES CLARK BLAKE KING ALLEN MARTIN TURNER WARD JOB ANALYST ANALYST CLERK CLERK CLERK CLERK MANAGER MANAGER MANAGER PRESIDENT SALESMAN SALESMAN SALESMAN SALESMAN ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... SAL 3000 3000 800 1100 1300 950 2975 2450 2850 5000 1600 1250 1500 1250 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

AVG AVG

= =

3000 1037.5

AVG

2758.3 333

AVG AVG

= =

5000 1400

SQL> SELECT job, sum(sal), max(sal) 2 FROM emp 3 GROUP BY job 4 HAVING avg(sal) > 1500;
selecione os grupos (where de grupo) funo de grupo

JOB ANALYST MANAGER PRESIDENT

SUM(SAL) 6000 8725 5000

MAX(SAL) 3000 2975 5000

Drio S. Andrade PG.

66

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.14 - OPERAES DE CONJUNTO

Uma tabela pode ser encarada como um conjunto Os elementos do conjunto so as linhas da tabela:

Tabela

Col. 1 A B D

Col. 2 1 1 2

(A,1) (B,1) (D,2)


elementos do conjunto

Conjunto

Existem trs operaes bsicas de conjunto em SQL:

Unio (UNION)

Interseco (INTERSECT)

Diferena (MINUS)

Drio S. Andrade PG.

67

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Unio

TABELAS

Col1 A B D

Col2 1 1 2

Col1 A B E D

Col2 2 1 2 2

colunas com tipo igual

select col1, col2 from tab1 union select col1, col2 from tab2
Col1 A A B D E Col2 1 2 1 2 2

Drio S. Andrade PG.

68

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Interseco

TABELAS

Col1 A B D

Col2 1 1 2

Col1 A B E D

Col2 2 1 2 2

colunas com tipo igual

select col1, col2 from tab1 intersect select col1, col2 from tab2
Col1 B D Col2 1 2

Drio S. Andrade PG.

69

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Diferena

Col1 A B D

Col2 1 1 2

Col1 A B E D

Col2 2 1 2 2

colunas com tipo igual

select col1, col2 from tab1 minus select col1, col2 from tab2
Col1 A Col2 1

Drio S. Andrade PG.

70

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.15 - JUNO DE TABELAS

Um Join uma consulta que combina linhas de duas ou mais tabelas, vises ou snapshots. O Oracle7 executa um join quando mltiplas tabelas aparecem na clusula FROM. A lista selecionada da coluna pode conter qualquer coluna de qualquer tabela. Caso haja colunas com o mesmo nome, voc tem que especificar de qual tabela a determinada coluna. A juno de tabelas corresponde operao de produto cartesiano entre conjuntos:

A, B, C

1,2

(A,1), (A,2), (B,1), (B,2), (C,1), (C,2)

tab1 col1 col2 A 3

col3 B

tab2 col4 col5 2 E

select col1, col2, col3, col4, col5 from tab1, tab2;

col1 A

col2 3

col3 B

col4 2

col5 E

Para saber o nome do departamento onde cada empregado trabalha:


Drio S. Andrade PG.

71

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

produto cartesiano

SQL> SELECT ename, dname 2 FROM emp, dept 3 WHRE emp.deptno = dept.deptno;

critrio de seleo da juno para diferenciar colunas de mesmo nome usa-se o nome da tabela como prefixo

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

DNAME RESEARCH SALES SALES RESEARCH SALES SALES ACCOUNTING RESEARCH ACCOUNTING SALES RESEARCH SALES RESEARCH ACCOUNTING

Drio S. Andrade PG.

72

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

DEPTNO ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES SALES SALES SALES SALES SALES SALES SALES SALES OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS OPERATIONS

EMP.DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10

DEPT.DEPTNO 10 10 10 10 10 10 10 10 10 10 10 10 10 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 30 30 30 30 30 30 30 30 30 30 30 30 30 40 40 40 40 40 40 40 40 40 40 40 40 40 40

Drio S. Andrade PG.

73

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Dada a tabela salgrade, que classifica faixas de salrios:

GRADE 1 2 3 4 5

LOSAL 700 1201 1401 2001 3001

HISAL 1200 1400 2000 3000 9999

Para saber a faixa salarial de todos os empregados:

SQL> SELECT ename, sal, grade 2 FROM emp, salgrade 3 WHERE sal between losal and hisal;
especifica um tipo de juno

ENAME SMITH ADAMS JAMES WARD MARTIN MILLER ALLEN TURNER JONES BLAKE CLARK SCOTT FORD KING

SAL 800 1100 950 1250 1250 1300 1600 1500 2975 2850 2450 3000 3000 5000

GRADE 1 1 1 2 2 2 3 3 4 4 4 4 4 5

Drio S. Andrade PG.

74

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Pode-se combinar diversas opes no mesmo comando SQL:

SQL> SELECT dname, grade, count(*) 2 FROM emp, dept, salgrade 3 WHERE emp.deptno = dept.deptno and 4 sal between losal and hisal 5 GROUP BY dname, grade 6 HAVING sum(sal) > 1200 7 ORDER BY dname, count(*) DESC;

DNAME ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH SALES SALES SALES

GRADE 2 4 5 4 1 2 3 4

COUNT(*) 1 1 1 3 2 2 2 1

O comando abaixo retorna o nome e cargo do empregado e o nmero do e nome do departamento SQL> SELECT ename, dept.deptno, dname 2 FROM emp, dept 3 WHERE emp.deptno = dept.deptno;

O comando abaixo retorna o nome, cargo e nmero do departamento dos empregados e nome do departamento de todos os funcionrios CLERKS. SQL> SELECT ename, job, dept.deptno, dname 2 FROM emp, dept 3 WHERE emp.deptno = dept.deptno 4 AND job = CLERK;

Drio S. Andrade PG.

75

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

III.16 - EXERCCIOS

1. Consulte o nome, o local do departamento, o salrio por hora (assumindo 160 horas/ms) e o total mensal (salrio + comisso) dos vendedores da tabela EMP. Salve seu exerccio no arquivo ex31.sql.

2. Carregue o contedo do arquivo ex31.sql no buffer corrente e modifique-o de forma a ordenar o resultado em ordem descrescente do salrio por hora. Salve seu exerccio novamente, no mesmo arquivo.

3. Descubra o menor salrio de todos os empregados.

4. Obtenha a soma dos salrios dos empregados que no trabalham nos departamentos 10 ou 30.

5. Obtenha o nome e a mdia salarial dos departamentos (exceto o 10), cujo maior salrio seja inferior a 4000.

6. Obtenha a mdia de salrio para cada faixa salarial.

Drio S. Andrade PG.

76

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV - CONSULTAS AVANADAS

Drio S. Andrade PG.

77

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.1 - CONTEDO

1. Pseudo - colunas

2. Juno externa

3. Auto-Juno

4. Consultas encaixadas

5. Consultas hierrquicas

Drio S. Andrade PG.

78

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.2 - PSEUDO-COLUNAS

Pseudo-colunas so colunas que podem ser consultadas em qualquer tabela, como uma coluna normal, mas no podem ser alteradas:

T N N N

Nome nome_seq.CURRVAL nome_seq.NEXTVAL LEVEL

R N

NULL ROWID ROWNUM

Descrio Valor corrente da sequncia nome_seq Prximo valor da sequncia nome_seq Usada no comando SELCT CONNECT BY; igual a 1 para o n raz de uma rvore, 2 para seus filhos e assim por diante Valor nulo Identificao interna de uma linha Nmero que indica a ordem de seqncia da linha selecionada em uma consulta

SQL> SELECT rownum, rowid 2 FROM dual;


tabela com uma nica linha e uma nica coluna

ROWNUM 1

ROWID 00000984.0001.0001

Drio S. Andrade PG.

79

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.3 - JUNO EXTERNA

Para listar o nome de todos departamentos e seus respectivos empregados:

SQL> SELECT dept.deptno, dname, empno, ename 2 FROM dept, emp 3 WHERE dept.deptno = emp.deptno order by dept.deptno;

DEPTNO 10 10 10 20 20 20 20 20 30 30 30 30 30 30

DNAME ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES

EMPNO 7782 7839 7934 7369 7876 7902 7788 7566 7499 7698 7654 7900 7844 7521

ENAME CLARK KING MILLER SMITH ADAMS FORD SCOTT JONES ALLEN BLAKE MARTIN JAMES TURNER WARD

PROBLEMA: Departamento 40 nao aparece, pois nao tem empregados

Drio S. Andrade PG.

80

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

ENAME DEPTNO SMITH ACCOUNTING ALLEN ACCOUNTING WARD ACCOUNTING JONES ACCOUNTING MARTIN ACCOUNTING BLAKE ACCOUNTING CLARK ACCOUNTING SCOTT ACCOUNTING KING ACCOUNTING TURNER ACCOUNTING ADAMS ACCOUNTING JAMES ACCOUNTING FORD ACCOUNTING MILLER ACCOUNTING SMITH RESEARCH ALLEN RESEARCH WARD RESEARCH JONES RESEARCH MARTIN RESEARCH BLAKE RESEARCH CLARK RESEARCH SCOTT RESEARCH KING RESEARCH TURNER RESEARCH ADAMS RESEARCH JAMES RESEARCH FORD RESEARCH MILLER RESEARCH SMITH SALES ALLEN SALES WARD SALES JONES SALES MARTIN SALES BLAKE SALES CLARK SALES SCOTT SALES KING SALES TURNER SALES ADAMS SALES JAMES SALES FORD SALES MILLER SALES SMITH OPERATIONS ALLEN OPERATIONS WARD OPERATIONS JONES OPERATIONS MARTIN OPERATIONS BLAKE OPERATIONS CLARK OPERATIONS SCOTT OPERATIONS KING OPERATIONS TURNER OPERATIONS ADAMS OPERATIONS JAMES OPERATIONS FORD OPERATIONS MILLER OPERATIONS No existem empregados no departamento 40
Drio S. Andrade

EMP.DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10 20 30 30 20 30 30 10 20 10 30 20 30 20 10

DEPT.DEPTNO 10 10 10 10 10 10 10 10 10 10 10 10 10 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 30 30 30 30 30 30 30 30 30 30 30 30 30 40 40 40 40 40 40 40 40 40 40 40 40 40 40

PG.

81

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Soluo: fazer de conta que existe uma linha fictcia, totalmente nula, na tabela de empregados, para que ela seja associada linha do departamento 40 (juno externa):

SQL> SELECT dept.deptno, dname, empno, ename 2 FROM dept, emp 3 WHERE dept.deptno = emp.deptno(+);
operador opcional para juno externa

DEPTNO 10 10 10 20 20 20 20 20 30 30 30 30 30 30 40

DNAME ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES OPERATIONS

EMPNO 7782 7839 7934 7369 7876 7902 7788 7566 7499 7698 7654 7900 7844 7521

ENAME CLARK KING MILLER SMITH ADAMS FORD SCOTT JONES ALLEN BLAKE MARTIN JAMES TURNER WARD

Para saber os departamentos sem empregados:

SQL> SELECT dept.deptno, dname, loc 2 FROM dept, emp 3 WHERE dept.deptno = emp.deptno(+) and empno is null;

DEPTNO DNAME 40 OPERATIONS

LOC BOSTON

Drio S. Andrade PG.

82

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.4 - AUTO - JUNO

As tabelas envolvidas numa juno no precisam ser distintas. Para descobrir quais gerentes esto ganhando menos que o dobro do salrio de algum de seus subordinados:

pseudnimos para tabelas

SQL> SELECT ger.ename gerente, ger.sal, max(2*trab.sal) 2 FROM emp trab, emp ger 3 WHERE trab.mgr = ger.empno 4 GROUP BY ger.ename, ger.sal 5 HAVING max(2*trab.sal) > ger.sal;

GERENTE BLAKE CLARK JONES KING


.

SAL MAX(2*TRAB.SAL) 2850 3200 2450 2600 2975 6000 5000 5950

SQL> SELECT e1.ename||TRABALHA PARA|| e2.ename EMPREGADOS 2 FROM emp e1, emp e2 where 3 e1.mgr = e2.empno;

Drio S. Andrade PG.

83

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.5 - CONSULTAS ENCAIXADAS

Uma subquery um comando SELECT que est contido em um outro comando SELECT. O comando que contm a subconsulta chamado de comando pai. As linhas retornadas pela subconsulta so usadas pelo comando pai. Subqueries podem:

Retornar uma ou mais linhas. Retornar uma ou mais colunas. Utilizar funes de grupos ou GROUP BY. Agrupar tabelas.
Uma sub-consulta pode fazer referncias a colunas do comando no qual ela est encaixada.

SELECT coluna1, coluna2,... FROM tabela WHERE coluna = ( SELECT coluna FROM tabela WHERE condicao )

Para saber quais empregados ganham mais que a mdia dos salrios: SQL> SELECT empno, ename, sal parenteses delimitam a 2 FROM emp sub-consulta 3 WHERE sal > (select avg(sal) from emp);
resultado desta sub-consulta um nico valor

Drio S. Andrade PG.

84

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber quais funcionrios trabalham com o SCOTT. SQL> SELECT ename, deptno 2 FROM emp 3 WHERE deptno = (SELECT deptno FROM emp where ename = SCOTT);

Para saber os departamentos que no tem empregados:


operador de excluso de conjunto

SQL> SELECT deptno, dname elimina os valores duplicados 2 FROM dept 3 WHERE deptno not in (SELECT distinct deptno FROM emp);

esta sub-consulta retorna um conjunto de valores

DEPTNO 40

DNAME OPERATONS

Encontre o funcionrio com maior salrio. SELECT ename, job FROM EMP WHERE sal = ( SELECT max(sal) FROM emp);

Encontre os funcionrios com maior salrio em cada departamento. SELECT ename, job, deptno FROM emp WHERE sal IN (SELECT max(sal) FROM emp GROUP BY deptno);

Drio S. Andrade PG.

85

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para recuperar os empregados que ganham mais que a mdia de salrio do seu departamento: SQL> SELECT deptno,ename, sal nesse caso necessrio o 2 FROM emp x pseudnimo para a tabela 3 WHERE sal > (SELECT avg(sal) FROM emp y 4 where x.deptno = y.deptno ) 5 ORDER BY deptno;

DEPTNO 10 20 20 20 30 30

ENAME KING JONES SCOTT FORD ALLEN BLAKE

SAL 5000 2975 3000 3000 1600 2850

Para saber se o resultado de uma sub-consulta vazio ou no equivalente ao IS NOT NULL para colunas: SQL > SELECT ename, job, deptno s importa se uma linha 2 FROM emp x existe ou no 3 WHERE exists (SELECT x from emp y 4 WHERE x.empno = y.mgr)

Sub-consultas tambm podem ser usadas nos comandos de manipulao de dados (INSERT, UPDATE, DELETE). Para eliminar os empregados mais novos de cada departamento: SQL> DELETE FROM emp e 2 WHERE hiredate = (SELECT max(hiredate) FROM emp 3 WHERE deptno = e.deptno);

Drio S. Andrade PG.

86

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para que todos os empregados mais novos de cada cargo ganhem o melhor salrio e a mdia das comisses de seu cargo: SQL> UPDATE emp e 2 SET (sal,comm) = (SELECT max(sal), avg(comm) FROM emp 3 WHERE job = e.job) 4 WHERE hiredate = (SELECT max(hiredate) FROM emp 5 WHERE job = e.job);

Drio S. Andrade PG.

87

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.6 - CONSULTAS HIERRQUICAS

Oracle permite recuperar informaes estruturadas de forma hierrquica (em rvore): Voc pode selecionar linhas em uma ordem hierrquica usando as seguintes clusulas

START WITH CONNECT BY WHERE

voc pode especificar linha(s) pai de uma hierarquia. voc pode especificar o relacionamento entre linhas pais e linhas filhas de uma hierarquia. voc pode restringir as linhas retornadas pela consulta sem afetar outras linhas da hiearquia.

A clusula START WITH identifica a(s) linha(s) a ser(em) usada(s) como raiz(es) de uma consulta hierrquica. Esta clusula especifica uma condio que a raiz tem que satisfazer. Se voc omitir essa clusula, o Oracle7 usa todas as linhas na tabela como linhas raiz. A clusula CONNECT BY especifica o relacionamento entre linhas pais e filhas na consulta hierrquica. Esta clusula contm uma condio que define este relacionamento. Alguma parte da condio tem que usar o operador PRIOR para se referir a linha pai. Para encontrar o filho de uma linha pai, o Oracle7 executa a expresso PRIOR para a linha pai e a outra expresso para cada linha na tabela. Linhas para o qual a condio verdadeira so filhas. Se a clusula CONNECT BY resultar em um loop na hierarquia, o Oracle7 retorna um erro. Um loop ocorre se uma linha pai e filha de uma outra linha A seguinte clusula CONNECT BY define um relacionamento hierrquico no qual o valor EMPNO da linha pai seja igual ao valor do MGR da linha filha. CONNECT BY PRIOR empno = mgr

Drio S. Andrade PG.

88

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

75 / PRESIDENTE

110 / DIRETOR

230 / SECRETRIA

189 / DIRETOR

103 / ANALISTA

276 / ANALISTA

201 / VENDEDOR

208/VENDEDOR

EMP 7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934

ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER

JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

MGR 7902 7698 7698 7839 7698 7839 7839 7566 7698 7788 7698 7566 7782

HIREDATE 17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 01-MAY-81 09-JUN-81 19-APR-87 17-NOV-81 08-SEP-81 23-MAY-87 03-DEC-81 03-DEC-81 23-JAN-82

SAL 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300

COMM 300 500 1400

DEPTNO 20 30 30 20 30 30 10 20 10 30 20 30 20 10

Para saber todos os superiores do SCOTT: SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE ename <> SCOTT 4 CONNECT BY empno = PRIOR mgr 5 START WITH ename = SCOTT;
especifica a conexo da coluna indica o comeo da consulta

indica o sentido da consulta: do empregado para o chefe

EMPNO 7566 7839

ENAME JONES KING

JOB MANAGER PRESIDENT

Drio S. Andrade PG.

89

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Para saber o nome do Presidente e de seus subordinados, exceto aqueles que so tambm subordinados de JONES:

SQL> SELECT empno, ename, job 2 FROM emp 3 CONNECT BY PRIOR empno = mgr AND mgr <> 7566 4 START WITH job = PRESIDENT;
Elimina toda uma sub-rvore

EMPNO 7839 7566 7698 7499 7521 7654 7844 7900 7782 7934

ENAME KING JONES BLAKE ALLEN WARD MARTIN TURNER JAMES CLARK MILLER

JOB PRESIDENT MANAGER MANAGER SALESMAN SALESMAN SALESMAN SALESMAN CLERK MANAGER CLERK

Drio S. Andrade PG.

90

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Podemos usar uma pseudo-coluna LEVEL para saber o nvel de cada registro na hierarquia:

SQL> SELECT level, lpad( ,2*level ) | | ename nome 2 FROM emp 3 CONNECT BY PRIOR empno = mgr 4 START WITH job = PRESIDENT;

LEVEL 1 2 3 4 3 4 2 3 3 3 3 3 2 3

NOME KING JONES SCOTT ADAMS FORD SMITH BLAKE ALLEN WARD MARTIN TURNER JAMES CLARK MILLER

Drio S. Andrade PG.

91

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

IV.7 - EXERCCIOS

1. Consulte os nomes dos funcionrios que so chefes de algum.

2. Consulte o nome dos chefes (MOME_CHEFE) dos funcionrios (ENAME) da tabela EMP, ordenados por NOME_CHEF. Caso algum funcionrio no possua chefe, mostre a cadeia de caracteres ___________ em NOME_CHEFE.

3. Consulte os nomes e salrios dos funcionrios que esto na mesma faixa salarial que seus chefes.

4. Aumente o salrio em 20% para os empregados que sejam os mais antigos de seus departamentos.

5. Promova a diretor os empregados que recebem mais que a mdia dos salrios de seus cargos.

6. Desfaa as duas operaes anteriores.

7. Faa com que os empregados passem a ganhar o maior salrio dentre os companheiros da mesma faixa.

8. Desfaa a operao anterior.

Drio S. Andrade PG.

92

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI - ESTRUTURA DE DADOS

Drio S. Andrade PG.

93

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.1 - ESTRUTURA DE DADOS ORACLE

Tabelas podem ser criadas a qualquer hora, mesmo que o Banco de Dados esteja sendo utilizado. O tamanho dos dados so variveis, somente so armazenados os caracteres e nmeros. Os espaos em branco no so armazenados. No h necessidade de especificar o tamanho de alguma tabela. Isto definido pelo espao determinado para o Banco de Dados. Mas importante sempre verificar o tamanho das tabelas. As estruturas das tabelas podem ser modificas quando esto em uso.

Drio S. Andrade PG.

94

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.2 - CRIANDO UMA TABELA

O nome escolhido para a tabela deve sempre seguir as regras bsicas de nomenclatura dos objetos do Banco de Dados ORACLE.

1. O nome sempre deve comear com letra (A - Z) 2. Pode-se utilizar letras, nmeros e caracteres especiais 3. O nome da tabela no sensvel a letras maisculas e minsculas 4. Deve ter no mximo 30 caracteres 5. No pode existir duas tabelas, vises ou sinnimos para um mesmo usurio com o mesmo nome 6. O nome da tabela no pode ser uma palavra reservada do SQL

Drio S. Andrade PG.

95

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.3 - DIRETRIZES PARA CRIAO DE NOMES DE TABELAS

Utilize nomes auto-descritivos para tabelas, colunas, ndices ou outros objetos. Cuidado com as abreviaes e o uso de singular e plural nos nomes das tabelas. Crie padres para nomear os objetos. Ex.: tabela de notas fiscais nota_fiscal. Utilize os mesmos nomes definidos para as entidade-atributos para descreverem a tabela-coluna relacionada.

Drio S. Andrade PG.

96

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.4 - TIPOS DE COLUNAS

Quando criar uma tabela, voc deve especificar os tipos das colunas. Os mais utilizados so:

CHAR (n)

Valores tipo CHAR consistem em palavras compostas por letras minsculas e maisculas, nmeros e caracteres especiais. O nmero de caracteres especificado por n e no pode ser maior que 255. No usa armazenamento dinmico.

VARCHAR2(n)

So valores tipo CHAR com no mximo 2000 posies. Usa armazenamento dinmico.

NUMBER (n,m)

So valores numricos (0 - 9) e caracteres de sinal (+ -) e ponto decimal. n so nmeros inteiros e m so decimais. Usa armazenamento dinmico.

DATE

So valores tipo data. Ex.: December 31, 4712 BC. Usa 7 bytes.

LONG

Similar ao tipo CHAR, mas aceita a quantidade de caracteres acima de 65.535. S pode ser definida uma coluna LONG por tabela.

Drio S. Andrade PG.

97

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.5 - A OPO NULL E NOT NULL

NULL

Esta opo define que a coluna pode possuir valores nulos. Esta opo default e pode ser omitida.

NOT NULL

Esta opo assegura que a coluna sempre tenha valores diferentes de nulo. Se tentar incluir uma linha com a coluna que tem essa opo sem valor, o ORACLE enviar uma mensagem de erro.

Drio S. Andrade PG.

98

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.6 - CLUSULA CONSTRAINT

O Banco de Dados Oracle suporta documentao para integridade armazenando informaes sobre verificao de integridade no dicionrio de dados. Uma Constraint de integridade uma regra que define um relacionamento entre tabelas de um banco de dados. Por exemplo, uma constraint de integridade pode definir que um funcionrio no esteja contido em dois ou mais departamentos. Uma constraint pode ser definida para tabelas e colunas e so definidas no comando CREATE ou ALTER TABLE. O objetivo de uma constraint definir um intervalo de valores vlidos. Para que os comandos INSERT, UPDATE e DELETE sejam executados com sucesso, devem obedecer as regras de constraint estabelecidas. A utilizao de constraint possibilita definir as seguintes regras para uma ou mais colunas:

Restringir uma coluna ou mais a valores diferentes de nulo (NOT


NULL).

Definir que o valor da coluna seja nico na tabela (UNIQUE) Identificar a coluna como coluna chave da tabela (PRIMARY KEY) Estabelecer restries a chaves estrangeiras (FOREIGN KEY) Verificar se o valor de uma ou mais colunas esto de acordo com uma
expresso (CHECK).

Drio S. Andrade PG.

99

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Existem dois tipos de constraints: * * Constraints de tabela Constraints de coluna

Estes tipos so idnticos, a no ser que as constraint de coluna refereciem a uma coluna enquanto a de tabela refereciem a uma ou mais colunas da tabela. Definio da constraint da tabela: CREATE TABLE assignment ( projeto number (4) , funcionario number(4), PRYMARY KEY ( projeto, funcionario);

Definio da constraint da coluna: CREATE TABLE emp ( EMPNO NUMBER (4) NOT NULL CONSTRAINT EMPNO PRIMARY KEY, ENAME VARCHAR(10) CHECK (ENAME = UPPER (ENAME) ) , JOB VARCHAR(10) , MGR NUMBER (4) CONSTRAINT EMP_MGR REFERENCES EMP (EMPNO), HIREDATE DATE CHECK (HIREDATE <= SYSDATE), SEG_NUM VARCHAR(12) UNIQUE CONTRAINT EMP_SEG , SAL NUMBER (7,2) , COMM NUMBER (7,2) , DEPTNO NUMBER (2) NOT NULL CONSTRAINT EMP_DEPT REFERENCES DEPT(DEPTNO) );

Drio S. Andrade PG.

100

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.7 - PARMETROS DA CONSTRAINT

CONSTRAINT nome_da_constraint

Define o nome da constraint. Este parmetro opcional. Se no definir o nome da constraint, ela receber um nome default no formato SYS_Cn, onde n um inteiro e nico identificador da constraint.

NULL/NOT NULL

Define se a coluna pode ou no conter valores nulos. O default que pode conter ( NULL).

UNIQUE

Certifica que cada linha da tabela ter um valor diferente para a coluna. Esta coluna tem que ser definida como NOT NULL e no pode ser a chave primria.

PRIMARY KEY

Define que a coluna a nica identificao de cada linha. Esta coluna tem que ser NOT NULL e no pode ter o UNIQUE constraint.

FOREIGN KEY ( coluna ...)/ Identifica que essa uma chave estrangeira da tabela do usurio definida. Deve sempre estar referenciada a REFERENCES uma tabela e no a uma viso. usurio.tabela(colunas)

CHECK

Define a condio que deve ser satisfeita para que a coluna possa ser includa ou alterada numa linha da tabela.

Drio S. Andrade PG.

101

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.8 - CREATE TABLE

O comando CREATE TABLE usado para criar novas tabelas no banco de dados. Sintaxe:
CREATE TABLE schema. table

, ( coluna tipo DEFAULT expr table_constraint column_constraint )

AS subquery

Obs: Sintaxe abreviada.

Drio S. Andrade PG.

102

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Onde: Schema o schema contendo a tabela. Se voc omitir o schema, o Oracle cria a tabela como seu prprio dono. o nome da tabela a ser criada. Especifica o nome de uma coluna da tabela. Uma tabela no pode ter mais do que 254 colunas. o tipo da coluna. Especifica um valor a ser atribudo para a coluna se um comando INSERT subsequente for omitido para o valor da coluna. O tipo da expresso tem que ser o mesmo tipo da coluna. Define uma integridade de constraint como parte da definio da coluna. Define uma integridade de constraint como parte da definio da tabela. Insere as linhas retornadas por uma subconsulta na tabela que ser criada.

Table Coluna

Tipo Default

Column_constraint Table_constraint As subquery

Drio S. Andrade PG.

103

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Criando a tabela DEPT. CREATE TABLE dept (deptno number (2) NOT NULL, dname char (12), loc varchar2 (12)) ;

Criando a tabela EMP.

SQL> 2 3 4 5 6 7 8 9 10

CREATE TABLE emp (empno number(4) ename char(10) job char(10), mgr number(4) hiredate data CHECK (hiredate <= sysdate), sal number(10,2), comm number(10,2) deptno number(2)

PRIMARY KEY, NOT NULL, REFERENCES emp(empno), DEFAULT sysdate

CHECK(comm > 0), REFERENCES dept(deptno));

Verificando a estrutura criada na tabela DESCRIBE EMP;

Name Null --------------------------------------------- --------------- -----EMPNO NOT NULL ENAME JOB MGR HIREDATE SAL COMM DEPTNO NOT NULL

Type NUMBER (4) CHAR (10) CHAR (9) NUMBER (4) DATE NUMBER (7,2) NUMBER (7,2) NUMBER (2)

Drio S. Andrade PG.

104

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.9 - CRIAR UMA TABELA COM BASE EM UMA J EXISTENTE

A tabela ser criada com as colunas especificadas e as linhas resultantes do comando SELECT sero inseridas na nova tabela. As especificaes das colunas podem ser omitidas se no comando SELECT foram especificadas. O nmero de colunas no comando SELECT deve ser igual ao do comando CREATE TABLE.

CREATE AS SELECT FROM WHERE

TABLE dept10 empno, ename, job, sal emp deptno = 10;

Table created.

Exemplo:
SQL> CREATE TABLE sal_medio AS 2 SELECT dname, avg(sal) Media_Salarial 3 FROM dept, emp 4 WHERE emp.deptno = dept.deptno 5 GROUP BY dname;

SQL> SELECT * FROM sal_medio;

DNAME ACCOUNTING RESEARCH SALES

Media_Salario 2916.6667 2175 1566.6667

Drio S. Andrade PG.

105

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.10 - ALTERAO DE UMA TABELA

Restries para a alterao da estrutura de uma tabela:

S possvel diminuir o tamanho de uma coluna, ou mudar seu tipo,


se todos os valores desta coluna forem nulos;

S possvel alterar o tipo de uma coluna para NOT NULL se


nenhum dos seus valores for nulo;

No possvel remover uma coluna de uma tabela com o comando


ALTER TABLE. Para conseguir este efeito deve-se criar outra tabela sem a coluna a ser removida. Por exemplo, para apagar a coluna DIRETOR:

SQL> CREATE TABLE dep_temp AS 2 SELECT deptno, dname, loc 3 FROM dept; SQL> DROP TABLE dept; SQL> RENAME dep_temp TO dept;

Drio S. Andrade PG.

106

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.11 - ALTERANDO UMA TABELA O comando ALTER TABLE serve para alterar a estrutura de uma tabela. O parmetro ADD deve ser utilizado para adicionar uma coluna e/ou constraint para uma tabela existente.
ALTER TABLE schema. , ADD ( column_datatype DEFAULT exp table_constraint , MODIFY ( column datatype DEFAULT expr column_contraint ) column_constraint ) table

Obs: Sintaxe abreviada.

Drio S. Andrade PG.

107

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

Onde:

Table ADD MODIFY Column Datatype DEFAULT

Column_constraint Table_constraint

o nome da tabela a ser alterada. adiciona uma coluna ou integridade de constraint. modifica a definio de uma coluna existente. o nome da coluna a ser alterada ou modificada. especifica um tipo para a coluna ou um novo tipo para uma coluna existente. especifica um valor default para uma nova coluna ou um novo valor default para uma coluna existente. O Oracle assume esse valor para a coluna se um comando INSERT subsequence omitir um valor para a coluna. O tipo de um valor default tem que ser igual ao tipo especificado para a coluna. A expresso DEFAULT no pode conter referncias a outras colunas. adiciona ou remove uma constraint NOT NULL para ou de uma coluna existente. adiciona uma integridade de constraint para a tabela.

Drio S. Andrade PG.

108

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

O comando abaixo adiciona a coluna NOME_DA_ESPOSA na tabela EMP. ALTER TABLE EMP ADD( nome_da_esposa CHAR (10));

O comando abaixo adiciona a constraint CHECK na coluna SAL da tabela EMP. ALTER TABLE EMP ADD(CHECK(sal <= 5000));

O comando abaixo modifica a coluna ENAME da tabela EMP para o tamanho de 25 posies. ALTER TABLE EMP MODIFY (ename char(25));

Drio S. Andrade PG.

109

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.12 - O COMANDO RENAME

O comando RENAME server para alterar o nome dos objetos de uma banco de dados.

RENAME OLD TO

NEW ;

Todos os objetos de banco de dados relacionados tero que ser alterados. Exemplo: Aplicaes, programas, relatrios. Para mudar o nome de uma tabela: O exemplo abaixo troca o nome da tabela EMP para FUNCIONARIO. RENAME EMP TO FUNCIONRIO;

O exemplo abaixo NOME_FUNCIONARIO. RENAME

troca

nome

da

tabela

NOME_FUN

para

NOME_FUN TO NOME_FUNCIONARIO;

O exemplo abaixo troca o nome da tabela DEPT para DEPARTAMENTO. SQL> rename dept to departamento;

Drio S. Andrade PG.

110

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.13 - DROP TABLE

Sintaxe:
DROP TABLE schema. table CASCADE CONSTRAINTS

Onde:

schema

table CASCADE CONSTRAINTS

o esquem em que a tabela est contida. Se voc omitir o schema, o Oracle Server assume que o dono da tabela o schema corrente. o nome da tabela a ser apagada. apaga todas as constraints de integridade referencial que se refere chave primria e/ou nica na tabela a ser apagada. Se voc omitir esta opo, e existir constraint de integridade referencial, o Oracle Server retorna uma mensagem de erro e no apaga a tabela.

O comando DROP TABLE serve para remover a definio de uma tabela. DROP TABLE emp;

Quando uma tabela eliminada, todos os dados e os ndices associados tambm sero removidos.

Todos os dados sero removidos Todas as vises (VIEWS) e sinnimos (SYNONYMS) permanecero,
mas ficaro invlidas.

Todas as transaes pendentes sero gravadas. Somente o dono da tabela ou o DBA pode remov-la.

Drio S. Andrade PG.

111

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.14 - ELIMINANDO CONSTRAINT DA TABELA

Para eliminar constraint de uma tabela, deve-se utilizar o parmetro DROP. ALTER TABLE emp DROP CONSTRAINT emp_seg;

Drio S. Andrade PG.

112

Drio Andrade Coordenador Treinamento Tecnolgico - https://www.facebook.com/dariosandrade

VI.15 - DOCUMENTANDO UMA TABELA

O Comando COMMENT inclui um comentrio de no mximo 255 caracteres sobre a tabela ou coluna no dicionrio de dados. Adicionando um comentrio em uma tabela: COMMENT ON TABLE emp IS Informaes sobre Funciorios;

Adicionando um comentrio em uma coluna:

COMMENT ON COLUMN emp.empno IS Identificador do Funcionrio;

Eliminando um comentrio: COMMENT ON COLUMN emp.empno;

Para visualizar os comentrios, eles esto armazenados nas seguintes vises (VIEWS) do dicionrio de dados: ALL_COL_COMMENTS ou USER_COL_COMMENTS.

Drio S. Andrade PG.

113

Você também pode gostar