Você está na página 1de 28

Programao para Banco de Dados

Prof. Rafael Braga

PL/SQL - Oracle

Tabela
- Unidade bsica de armazenamento da base de dados, formada por colunas e linhas (tuplas)

Criando Tabelas
- Criando a tabela depto.
SQL> CREATE TABLE depto 2 (depto_num NUMBER(2), 3 depto_nom VARCHAR2(14), 4 depto_loc VARCHAR2(13)); Table created.

- Listando a estrutura da tabela criada.


SQL> DESCRIBE depto Name Null? --------------------------- -------DEPTO_NUM NOT NULL DEPTO_NOME DEPTO_LOC Type --------NUMBER(2) VARCHAR2(14) VARCHAR2(13)

Consultando o Dicionrio de Dados


- Tabelas do usurio
SQL> SELECT 2 FROM * user_tables;

- Objetos
SQL> SELECT 2 FROM DISTINCT object_type user_objects;

- Tabelas, vises, sinnimos e seqncias


SQL> SELECT 2 FROM * user_catalog;

Descartando uma Tabela


- Todos os dados e a estrutura da tabela so destrudos. - Qualquer transao pendente encerrada. - Todos os ndices so descartados.
SQL> DROP TABLE depto30; Table dropped.

Essa operao no pode ser desfeita.

Renomeando Objetos da Base


- Tabelas, vises, sinnimos e sequncias

SQL> RENAME depto TO departamento; Table renamed.

Truncando uma Tabela


- Remove todas as linhas da tabela liberando o espao ocupado
SQL> TRUNCATE TABLE departamento; Table truncated.

Essa operao no pode ser desfeita

PL/SQL - Oracle

O Comando SELECT
SELECT FROM [DISTINCT] {*, column [alias],...} table;

- SELECT identifica as colunas - FROM identifica as tabelas

Selecionando linhas
SQL> SELECT 2 FROM * depto;

SQL> SELECT depto_num, depto_loc 2 FROM depto; SQL> SELECT enome, sal, sal+300 2 FROM emp;

SQL> SELECT enome, sal, 12*sal+100 2 FROM emp;

Definindo Alias para Colunas


SQL> SELECT enome AS nome, sal AS salario 2 FROM emp;

NOME

SALARIO

------------- ---------

SQL> SELECT enome "Nome", 2 sal*12 Salario Anual" 3 FROM emp; Nome Salario Anual

------------- -------------

Eliminando Linhas Duplicadas


- DISTINCT
SQL> SELECT DISTINCT depto_num 2 FROM emp;

DEPTO_NUM --------10 20 30

PL/SQL - Oracle

Subqueries
SELECT FROM WHERE select_list table expr operator (SELECT FROM select_list table);

-A subquery (inner query) geralmente executada antes da consulta principal. -O resultado da subquery , ento, avaliado pelo da query principal (outer query).

Utilizando uma Subquery


SQL> SELECT enome 2 FROM emp 2975 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE enum=7566);

ENOME ---------CARLOS JOSE FABIO

Regras para Subqueries


-Utilize subqueries entre parnteses. -As subqueries vem sempre direita do operador de comparao.

-No utiliza a clusula ORDER BY em subqueries. -Uma subquery retorna uma tabela sobre a qual pode-se realizar qualquer uma das operaes vistas anteriormente.

PL/SQL - Oracle

Utilizando a Clusula WHERE


SQL> SELECT enome, cargo, depto_num 2 FROM emp 3 WHERE cargo='CAIXA';

ENOME ---------RONALDO MANUEL PAULO LUCIANO

CARGO DEPTO_NUM --------- --------CAIXA 30 CAIXA 20 CAIXA 20 CAIXA 10

Operadores de Comparao
Operador = > >= < <= <> Significado Igual a Maior que Maior ou igual a Menor que Menor ou igual a Diferente de

Outros Operadores
Operador BETWEEN ...AND... IN(lista) LIKE IS NULL Significado Entre dois valores (inclusive)

Satisfaz uma lista de valores Satisfaz um padro de caracteres um valor nulo (null)

Operador BETWEEN
SQL> SELECT 2 FROM 3 WHERE enome, sal emp sal BETWEEN 1000 AND 1500;

ENOME SAL ---------- --------MARIA 1250 SERGIO 1500 MATHEUS 1250 PAULO 1100 LUCIANO 1300

limite inferior

limite superior

Operador IN
SQL> SELECT 2 FROM 3 WHERE enum, enome, sal, ger emp ger IN (7902, 7566, 7788);

ENUM --------7902 7369 7788 7876

ENOME SAL GER ---------- --------- --------JOSE 3000 7566 MANUEL 800 7902 FABIO 3000 7566 PAULO 1100 7788

Operador LIKE
- Utilize o operador LIKE para realizar pesquisas por padres (wildcards).
% substitui zero ou mais caracteres _ substitui um nico caracter

SQL> SELECT 2 FROM 3 WHERE

enome emp enome LIKE M%';

Operador IS NULL
- Testando valores nulos (null)

SQL> SELECT 2 FROM 3 WHERE

enome, ger emp ger IS NULL;

ENOME GER ---------- --------CARLOS

Operadores Lgicos
Operador AND Significado Retorna TRUE se a condio de ambos os componentes for TRUE Retorna TRUE se a condio de um dos componentes for TRUE

OR

NOT

Retorna TRUE se a condio for FALSE (vise-versa)

Operador NOT
SQL> SELECT enome, cargo 2 FROM emp 3 WHERE cargo NOT IN('CAIXA','GERENTE','ANALISTA');

ENOME CARGO ---------- --------CARLOS PRESIDENTE MARIA VENDEDOR CELSO VENDEDOR SERGIO VENDEDOR MATHEUS VENDEDOR

Clusula ORDER BY
SQL> SELECT enome, cargo, depto_num, dtinicio 2 FROM emp 3 ORDER BY dtinicio DESC;
ENOME ---------PAULO FABIO LUCIANO RONALDO JOSE CARLOS MARIA CARGO DEPTO_NUM --------- --------CAIXA 20 ANALISTA 20 CAIXA 10 CAIXA 30 ANALISTA 20 PRESIDENTE 10 VENDEDOR 30 DTINICIO --------12-JAN-83 09-DEC-82 23-JAN-82 03-DEC-81 03-DEC-81 17-NOV-81 28-SEP-81

14 rows selected.

Você também pode gostar