Você está na página 1de 128

p  


   
p  

O 
SQL - Structured Query Language
Ú     
   p 
!  "#$%

Ú &   ' & (


 "#$)

Ú * +,
' -' 

'   

Ú .,/0

    
 ,
     

p  


SQL - Structured Query Language
Ú /0
  1 23
/0
4#/0
#5

Ú 67 
   ,/0
83
7 

Ú  p9   +:+


 8


Ú ;   


ncorporada em quase todos os SGBDƞs em seu padrão ANSI,
com as extensões propretáras de cada fabrcante.

p  


SQL - Structured Query Language
Ú *   
pode ser usada desde um PC até um manframe.

Ú u2, 
aplcações podem mgrar de ambente com custo reduzdo em
trenamento.

Ú &  


comandos escrtos em um nglês estruturado de alto nível.

Ú   +


acesso rápdo aos dados através de comandos nteratvos.

p  


SQL - Structured Query Language
Ú < +3 
possblta levar dferentes vsões dos dados a dferentes
usuáros.

Ú 2,=  


possblta a alteração dnâmca das estruturas dos dados
armazenados, com flexbldade.

p  


Uso de SQL em aplcatvos
Ú p    +
faz a conexão com o banco de dados e fornece os regstros
como cursores.

Ú  > 98?*@:


acetam comandos SQL embutdos na lnguagem, funconando
também como cursores.

Ú
 + 6p
componentes para bancos de dados além de alguns comandos
de SQL embutdos.

p  


SQL - Structured Query Language
p 

 

Ú u/ ' p  u  

Ú
   2,  
       23

Ú
* -
 &   8 
  23

p  


SQL - Structured Query Language
 p 
 

Ú  

ao térmno do comando SQL deve-se acrescentar ponto e
vírgula(;) e pressonar <Enter> para ser executado
medatamente.

Ú
Ap-&&'u
parte da memóra gerencada pelo SQL*PLUS, que armazena
um comando sql por vez.
todo comando smples é realocado no SQL*BUFFER, toda vez
que um novo comando é executado.

p  


SQL - Structured Query Language
Ú *   

Ú /  + 

Ú   +  

Ú u    

p  


SQL - Structured Query Language
Ú  2,   9 :
Insert
Update
Delete
Commt
Rollback
Select

p  


SQL - Structured Query Language
Ú 2,   9 :
Create
Alter
Drop
Rename

Ú    9 :


Grant
Revoke
Lock

p  


Comandos SQL*Plus
Ú  '82,
Ë
Execute
Run

Ú  '2,
Edt

p  


Comandos SQL*Plus
Ú      2,/+
Start ou @

Spool

p  


Regras para escrever comandos SQL
Ú     

Ú 7 ,    




Ú    < 


< 

Ú + + 2 




p  


SQL - Tpos de Dados
Ú  9
:
Alfanumérco de tamanho fxo, máxmo 2000 caracteres.

Ú 6  59
:
Alfanumérco com tamanho máxmo de 4000 caracteres. O que
não for utlzado não ocupa espaço no banco de dados.

Ú 6  9
:
esmo que Varchar2.

Ú 
Smlar ao Varchar2, porém, o tamanho máxmo é de 2
ggabytes. O valor não pode ser nformado. Só pode exstr um
por tabela e não pode ser usado em consultas.

p  


SQL - Tpos de Dados
Ú 09*
:
Valor numérco com tamanho máxmo de 38 caracteres, sendo
* o nº total de dígtos (nteros + decmas) e
o nº de casas
decmas.

Ú  
Valor de data e hora (01Ë01Ë4712 AC até 31Ë12Ë4712 DC).

p  


SQL - Smbologa
  !"#$
% d  

&% d 
 

&%'&%  d  


   
    
&%'&%       
d 
 
(( d  

 d  

'      


  

p  


Defnr Restrções de Integrdade de Dados
Ú  u2,
representa um mecansmo capaz de mplementar controles que
garantam a consstênca dos dados (ntegrdade de dados
referencal).

pode ser defndo tanto para uma coluna (afeta apenas um


campo), como para toda a tabela (afeta todos os campos).

p  


Defnr Restrções de Integrdade de Dados
 ) )  #$
()( 
        
    

 * 
       
            


+%+          

& %+
      
  !    

,-
      
     
"


›
p  


SQL - Comandos
Ú  B     C  1  
Sntaxe:
Create Table [User.]Nome_Tabela
(Nome_Coluna DataType [(Tamanho)] [Default expr]
[Constrant] [,
Nome_Coluna DataType [(Tamanho)] [Default expr]
[Constrant] ] [,...)

NOME_TABELA - nome da tabela


NOME_COLUNA - nome do campo
DATATYPE - tpo de dado da coluna
CONSTRAINT_TABELA - ƠCONSTRAINTơ de dado para a coluna

p  


SQL - Comandos
Ú   u 0 2,

nomes da tabelas e colunas devem ser de 1-30 caracteres;

o prmero caracter deve der alfabétco;

nomes devem conter somente os caracteres de a-z, A-Z, 0-9,


_(underscore), $ e #(seu uso não é recomendado);

nomes não podem ser guas as palavras reservadas do Oracle;

nome da tabela não pode ser gual ao nome de um outro objeto


crado pelo mesmo usuáro Oracle.

p  


SQL - Comandos
Ú  B 

Exemplo 1:

CREATE TABLE Regao (Codgo Number(7), Nome


Varchar2(30) CONSTRAINT Regao_Nome_NN NOT NULL,
CONSTRAINT Regao_Codgo_PK PRIARY KEY(Codgo),
CONSTRAINT Regao_Nome_UK UNIQUE (Nome));

p  


SQL - Comandos
Ú  B 
Exemplo 2:
CREATE TABLE Empregado (Codgo Number(7), Sobrenome
Varchar2(25) CONSTRAINT Emp_Sobrenome_NN NOT NULL,
Nome Varchar2(25) Emp_Nome_NN NOT NULL , Cod_User
Varchar2(8), Dt_Admssao Date, Comentaros Varchar2(25),
Cod_Gerente Number(7), Cargo Varchar2(25), Cod_Depto
Number(7), Salaro Number(11,2), Pct_Comssao Number(4,2),
CONSTRAINT Emp_Cod_PK PRIARY KEY (Codgo),
CONSTRAINT Emp_Cod_User_UK UNIQUE (Cod_User),
CONSTRAINT Emp_Pct_Comssao CHECK (Pct_Comssao IN
(10, 12.5, 15, 17.5, 18, 20)));

p  


SQL - Comandos
Ú  
A* -

C- Executa a declaração contda no SQL Buffer mostrando


somente o resultado.

u - Exbe o comando e executa a declaração contda no SQL


Buffer.

p  


SQL - Comandos
Ú    '2,* -

'9: D chama o edtor


Exemplo:
sql> ED

p  


SQL - Comandos
Ú B  p   1  

-E 
 2,
Owner Nome do usuáro que crou a
constrant.
Constrant_Name Nome da constrant.
Table_Name Nome da tabela assocada com a
constrant.
Constrant_Type Tpo de defnção de constrant:
C ƛ Check
P ƛ Prmary Key
R ƛ Foregn Key
U ƛ Unque Key

p  


SQL - Comandos
Ú B  p   1  

 2,
Search_Condton Texto da condção de
procura da constrant tpo
Check.
R_Owner Nome do usuáro dono da
tabela referencada pela
constrant referencal.
R_Constrant_Name Nome da chave prmára
referencada pela constrant
referencal.

p  


SQL - Comandos
Ú 6 1    

Sntaxe:

DESCRIBE <nome-tabela>

Ú 6 1  

Sntaxe:

DESCRIBE user_constrants

onde USER_CONSTRAINTS é uma tabela nterna do dconáro


Oracle.

p  


SQL - Comandos
Ú 6 1 F

Sntaxe:

DESCRIBE user_objects

ostra os objetos dsponíves na base de dados:


Name Null Type
-------- ------ ------
OBJECT_NAE VARCHAR2(128)
OBJECT_ID NUBER
OBJECT_TYPE VARCHAR2(13)
CREATED DATE
LAST_DDL_TIE DATE
TIESTAP VARCHAR2(75)
STATUS VARCHAR2(7)
p  


SQL - Comandos
Ú '8 7  

Sntaxe:

SELECT * FRO TAB;

TABLE_NAE
------------------
CLIENTE
DEPARTAENTO
EPREGADO
PRODUTOS
REGIAO

p  


SQL - Comandos
Ú /B D /    

crar, alterar ou elmnar colunas;

renomear a tabela;

crar ou elmnar constrants;

habltar ou desabltar constrants.

p  


SQL - Comandos
Ú /B D  +    

Sntaxe:

Alter Table Nome_Tabela Add (Nome_Coluna DataType


[Constrant_ Coluna],...)

Exemplo:
ALTER TABLE Regao ADD (Comentaros Varchar2(100));

p  


SQL - Comandos
Ú /B D /     

Sntaxe:
Alter Table Nome_Tabela odfy
(Nome_Coluna DataType|[Constrant_ Coluna],...)

Exemplo:
ALTER TABLE Regao odfy (Comentaros Varchar2(255));

p
: A modfcação do tpo eËou tamanho só deve ser feta se
não houver dados cadastrados na coluna.

p  


SQL - Comandos
Ú /B D /       
   

Exemplo:

ALTER TABLE Departamento ADD CONSTRAINT


Departamento_Cod_Regao_FK Foregn Key (Cod_Regao)
REFERENCES Regao(Codgo);

p  


SQL - Comandos
Ú /B D '   
  

Exemplo:

ALTER TABLE Departamento DROP CONSTRAINT


Departamento_Cod_Regao_FK;

p  


SQL - Comandos

Ú ADD
Ú ADD CONSTRAINT
ODIFY
ALTER TABLE
Ú
Ú
Ú DROP CONSTRAINT
Ú DROP COLUN
Ú RENAE COLUN

EXEPLOS:

Ú ALTER TABLE EP RENAE COLUN JOB TO CARGO


ALTERA O NOE DA COLUNA JOB PARA CARGO DA TABELA EP

Ú ALTER TABLE EP DROP COLUN SAL


REOVE A COLUNA SAL DA TABELA EP

p  


SQL - Comandos
Ú B D '   

Sntaxe:
Drop Table Nome_Tabela;

Exemplo:

DROP TABLE Departamento;

p  


SQL - Comandos
Ú / 23 

Inclusão: Comando INSERT

Alteração: Comando UPDATE

Exclusão: Comando DELETE

p  


SQL - Comandos
Ú D /    

Sntaxe:
INSERT INTO Nome_Tabela (coluna1, coluna2, colunaN)
VALUES (valor1, valor2, valorN);

Exemplo 1:

INSERT nto Aluno (matrcula, nome_aluno)


VALUES (8,ƞlton Soaresƞ);

p
:Se não forem defndos todos os campos, eles fcarão com
valor nulo (se permtdo).

p  


SQL - Comandos
Ú D     

Exemplo 2:

INSERT nto Funconaro VALUES (8,ƞltonƞ,2000,ƞƞ);

p
:Neste caso, os valores correspondem aos campos de
acordo com a ordem em que foram defndos na tabela. A
relação de colunas da tabela só pode ser omtda quando
forem nclusos valores para todas as colunas dessa tabela.

p  


SQL - Comandos
Ú D  + 7+
Exemplo 3:
INSERT nto Aluno (cod_matrc, nome_aluno, data_matrc)
VALUES (&atrcula, Ɲ&Nomeƞ, Ɲ&Dataƞ);

O comando INSERT terá a segunte execução:


Ô +  
:
Ô +
 :
Ô +
:

Este comando poderá ser executado dversas vezes,


pedndo novos valores para os campos, bastando para
sso, ao fnal de cada execução, dgtar Ë e <Enter>.
           +
 
      
 *

    
+            
 
'8?9GH0IGHI:

p  


SQL - Comandos
Ú - D /    

Sntaxe:

UPDATE <Tabela>
SET <Coluna> = <Novo Valor>
[, <Coluna> = <Novo Valor>...]
WHERE <Condção>

p  


SQL - Comandos
Ú - 

Na cláusula SET são especfcados os campos que terão seu


valor alterado e qual será seu novo valor;

A cláusula WHERE especfca qual(s) a(s) lnha(s) que terá(ão)


esse valor alterado. Caso não haja cláusula WHERE, os valores
serão alterados para todas as lnhas da tabela;

A expressão de atualzação pode envolver a própra coluna;

O WHERE pode ter qualquer condção válda, nclusve


subconsultas. O WHERE é avalado antes das atualzações, uma
vez que pode envolver valores sendo alterados.

p  


SQL - Comandos
Ú - 

Exemplo 1: Atualzar todos os saláros aumentando 5%.

UPDATE Funconaro SET Salaro = Salaro * 1.05;

Exemplo 2: Atualzar o saláro de todos os funconáros para


10000.

UPDATE Funconaro SET Salaro = 10000;

p  


SQL - Comandos
Ú - JK'u'

Exemplo 1: Atualzar os saláros aumentando 5% para os


funconáros que ganham menos que 1000.

UPDATE Funconaro SET Salaro = Salaro * 1.05


WHERE Salaro < 1000;

p  


SQL - Comandos
Ú D '8   

Sntaxe:

DELETE from <Tabela> [ WHERE <Condção>]

p
: Caso a cláusula WHERE seja omtda, todas as lnhas da
tabela serão elmnadas. CUIDADO!

Exemplo:

DELETE from Funconaro;


DELETE from Produto;

p  


SQL - Comandos
Ú 

Quando usado com o WHERE, pode especfcar quas lnhas


apagar;

O WHERE do DELETE comporta quase todas as condções


possíves do Select, desde que seja somente referente a uma
tabela;

Subconsultas são permtdas;

p  


SQL - Comandos
Ú 

Exemplos:

DELETE from Funconaro WHERE NumDepto= 003;

DELETE from Funconaro WHERE


Salaro between 1000 and 2000;

DELETE from funconaro WHERE Chapa n


(Select chapafunc from dependente where
datanasc < Ɲ01ËjanË70ƞ);

p  


SQL - Comandos
Ú 

O teste da condção é feto antes das lnhas serem removdas.

Na consulta a segur, se sso não fosse feto, poderíamos ter


resultados mprevsíves:

Exemplo:

DELETE from funconaro WHERE salaro >


(Select avg(salaro) from Funconaro)

p  


SQL - Transações
Ú 

Fnalza a transação corrente, tornando permanente todas as


mudanças pendentes no banco de dados fetas pelos comandos
nsert, update e delete.

Toda mudança de dados efetuada durante a transação é


temporára até que a transação seja efetvada, ou seja, dado um
ƠCOITơ.

Sntaxe:
COIT

p  


SQL - Transações
Ú
@ 

ostra como está o commt, se ON ou OFF.


Sntaxe:
SHOW AUTOCOIT

Ú
 

Um Commt é feto a cada nserção, alteração e deleção.

Ú
 

” necessáro fazer o Commt para efetvar as transações pendentes.

p  


SQL - Transações
Ú u (

Fnalza a transação corrente descartando todas as mudanças


pendentes.

Sntaxe:
ROLLBACK

p  


SQL - Comandos
Ú      2,/+


* - salva em arquvo comandos do SQLPlus
sql> spool a:grava.txt

sql> select * from emp ;

sql> spool off

p  


SQL - Comandos
Ú      2,/+
¦xecuta um arquivo salvo usando START ou @:
Sintaxe:

B/uB nome_arquvo
Exemplo: START a:consulta1
@a:consulta1.sql

p  


SQL - Comandos
Ú  
' 'BD     

O SELECT possu duas cláusulas obrgatóras (SELECT, FRO) e


outras cláusulas opconas (INTO, WHERE, GROUP BY, HAVING,
UNION, ORDER BY).

Sntaxe:
SELECT <coluna1>, <coluna2>,...,<colunan>
FRO <tabela1>, <tabela2>,...<tabelam>

p  


SQL - Comandos
Ú  
' 'B
O sstema consegue descobrr de onde cada coluna vem pelo
dconáro de dados.
No select, escolhemos quas colunas farão parte do resultado.
As colunas devem pertencer as tabelas presentes no comando
FRO.
Quando há colunas com o mesmo nome, dferenca-se
colocando o nome da tabela antes do nome da coluna,
separadas por um ponto.
Quando desejamos escolher todas as colunas, podemos usar o
astersco (*). Ex: sql> SELECT * FRO funconaro
As repetções são mantdas. Para elmná-las podemos usar a
cláusula dstnct. Ex: SELECT DISTINCT nome FRO Aluno

p  


SQL - Comandos
Ú
 /  2   

Sntaxe:

SELECT <campo1 [AS] nome1, campo2 [AS] nome2, ...>


FRO <tabela>

p
? Exbe todos os campos constantes na <lsta de campos>
e exbe também um nome alternatvo para cada campo,
que será exbdo como cabeçalho da coluna
correspondente.

p  


SQL - Comandos
Ú
 /  2   

Exemplo 1: Exbr nome, saláro e uma coluna contendo Ơnão


classfcadoơ com o cabeçalho ƠClassfcaçãoơ para
todos os empregados.

SELECT ename , sal, 'não classfcado' as Classfcação


FRO Emp

p  


SQL - Comandos
Ú
D    

SQL>#

ENAE SAL CLASSIFICAÇÃO


---------- ------- --------------------
SITH 800 não classfcado
ALLEN 1600 não classfcado
WARD 1250 não classfcado
JONE S 2975 não classfcado
ARTIN 1250 não classfcado
BLAKE 2850 não classfcado
CLARK 2450 não classfcado
SCOTT 3000 não classfcado
KING 5000 não classfcado

p  


SQL - Comandos
Ú
 /  2   

p
:

Se o pseudônmo contém brancos, caracteres especas


como (# ou _), ou em casos smlares, nclur o pseudônmo
entre aspas dupla (Ơơ).

Separe as colunas do pseudônmo usando espaços.

p  


SQL - Comandos
Ú
 /  2   

Exemplo 2:

SELECT Ename Nome, Empno Regstro, Job ƠOcupaçãoơ


From Emp;

NOE REGISTRO Ocupação


--------- -------------------------------
SITH 7369 CLERK
ALLEN 7499 SALESAN
WARD 7521 SALESAN
JONES 7566 ANAGER
ARTIN 7654 SALESAN

p  


SQL - Comandos
Ú
D  2,  

As lnhas aparecem ordenadas pela chave prmára, se esta


estver defnda.

Pode-se mudar a ordenação através do comando order by

Exemplo 1:

SELECT Codgo, Nome, Curso from Aluno ORDER BY Nome;

p  


SQL - Comandos
Ú
D  2,  

O padrão do ORDER BY é que a ordenação seja crescente, mas


usando-se o DESC, pode-se nverter a ordem.

Exemplo 2:

SELECT Codgo, Nome, Curso from Aluno


ORDER BY Nome DESC;

p  


SQL - Comandos
Ú
D  2,  

Em caso de Ơempateơ, a ordem é arbtrára, a não ser que sejam


defndas mas colunas para o ORDER BY.

Exemplo 3:

SELECT Nome, DataNasc from Pessoa


ORDER BY Nome, DataNasc;

p  


SQL - Comandos
Ú
D   7 J

ostrar lnhas específcas de uma tabela de acordo com uma


condção de pesqusa.

Sntaxe:

SELECT <Nome_coluna> FRO <TABELA>


WHERE (CONDIÇÃO)

p  


SQL - Comandos
Ú
D   7 J
   2,

  2,


= Igual
<> Dferente
> aor que
< enor que
>= aor ou gual
<= enor ou gual
Between and Comparações entre dos
valores

p  


SQL - Comandos
Ú
D   7 J
   2,

  2,


Not between and Não comparação entre
dos valores
IN (Lsta) Igual a qualquer membro
da lsta
Not IN (Lsta) Dferente a qualquer
membro da lsta
Lke Unr uma sequênca de
caracteres usando uma
sequênca

p  


SQL - Comandos
Ú
D   7 J

Exemplo 1: Especfcando lnhas com a cláusula Where (Å)

SELECT Ename Nome, Job Cargo from Emp

WHERE Deptno=20


LC
0 '/u


 (
!  

 / 
/  (
& / 

p  


SQL - Comandos
Ú
D   7 J

Exemplo 2: Especfcando lnhas com a cláusula Where (†L)

SELECT Ename Nome, Job Cargo from Emp


WHERE Job <> ƝCLERKƞ


LC
0 '/u

/
 
& / 
!  

 
M *

p  


SQL - Comandos
Ú
D   7 J

Exemplo 3: Especfcando lnhas com a cláusula Where between

SELECT Ename Nome, Job Cargo from Emp


WHERE hredate between Ɲ01-JAN-87ƞ AND Ɲ31-DEC-87ƞ


LC
0 '/u

M *
/
 
J 
 

 
B
 

p  


SQL - Comandos
Ú
D   7 J

Exemplo 3: Especfcando lnhas com a cláusula Where com


ntervalos. Para valores fora de um ntervalo, pode-
se usar o not between.

SELECT * from Aluno


WHERE Ingresso Not between ƞ01Ë01Ë90ƞ AND ƞ31Ë12Ë99ƞ;

p  


SQL - Comandos
Ú
D    M'

O comparador lke ajuda em consultas em que não temos o


valor exato de uma cadea de caracteres para encontrar

% sgnfca qualquer substrng (* do DOS)

Ecompara únco caracter (posção)

p  


SQL - Comandos
Ú
D   7 J

Exemplos: Especfcando lnhas com a cláusula Where utlzando


o comparador LIKE

SELECT * from Funconaro WHERE Nome LIKE ƝJosé%´;

SELECT * from Dscplna WHERE Nome LIKE Ɲ%cálculo%´;

SELECT * from Aluno WHERE Nome LIKE Ɲ___ Paula%´;

SELECT * from Clente WHERE Nome LIKE Ɲ%Pedro%´;

p  


SQL - Comandos
Ú
D   7 J

Exemplos: Especfcando lnhas com a cláusula Where utlzando


o comparador IN

SELECT Sobrenome, Cargo from Empregado


WHERE Cargo IN (ƝVendedorƞ,ƞRepresentanteƞ);

SELECT Sobrenome, Cargo from Empregado


WHERE Cargo NOT IN (ƝAnalstaƞ,ƞGerenteƞ);

p  


SQL ƛ Funções Caracteres
Ú 0/B - concatena duas colunas ou cadea de caracteres. Esta
função é equvalente ao operador de concatenação(||).

Sntaxe:
CONCAT (char1,char2)

Exemplo:
Select concat(ƝLabƞ,ƞBancoƞ) from Emp;

CONCAT
------------
LabBanco
LabBanco
LabBanco

p  


SQL - Funções Caracteres
Ú J'u- retorna todas as letras mnúsculas.

Sntaxe: LOWER(char)
Exemplo: Select lower(ename) from Emp;

LOWER(Ename)
--------------------
smth
allen
ward
jones

p  


SQL ƛ Funções Caracteres
Ú -**'u - retorna todas as letras maúsculas.
Sntaxe:
UPPER(char)
Exemplo:
Select upper(ename) from Emp;

ename
--------------------
SITH
ALLEN
WARD
JONES

p  


SQL - Funções Caracteres
Ú
-p
Bu 0 - retorna parte de uma strng. Deve-se ndcar a posção
ncal (m) da strng e quantdade de caracteres (n) a serem contados.
Se a quantdade de caracteres não for especfcada, a função contará
os caracteres até o fnal da strng.
Sntaxe:
SUBSTR(char,m,n)
Exemplo:
Select substr(dname,2) from Dept;

dname (Retorna a partr da posção 2 a coluna seleconada)


-----------------
CCOUNTING
ESEARCH
ALES

p  


SQL ƛ Funções Datas
Ú u 1 7 

'8, 2,
Data + Número Soma à data número de
das
Data - Número Substra à data número de
das
Data - Data Retorna o número de das
entre as datas

p  


SQL - Funções Datas
Ú '8?
Select ename, hredate, hredate + 90 from Emp
where deptno = 30;

ename hredate hredate+90


----------------- ------------- ---------------
ALLEN 20-FEB-81 21-AY-81
WARD 22-FEB-81 23-AY-81
ARTIN 28-SEP-81 27-DEC-81
BLAKE 01-AY-81 30-JUL-81
TURNER 08-SEP-81 07-DEC-81
JAES 03-DEC-81 03-AR-82

p  


SQL - Funções Datas
Ú
N
/B'D retorna a data do sstema.
Exemplo:
Select hredate, (sysdate - hredate)Ë7 semanas from emp;

HIREDATE SEANAS
---------------- ---------------
17-DEC-80 1080.8207
20-FEB-81 1071.535
22-FEB-81 1071.2493
02-APR-81 1065.6778
28-SEP-81 1040.1064

p  


SQL - Funções Datas
Ú /E 0BK
D retorna a data adconada n meses especfcado
Sntaxe:
ADD_ONTHS (data, número)
Exemplo:
Select hredate, add_months(hredate,6) from emp;

HIREDATE ADD_ONTH
---------------- ------------------
17-DEC-80 17-JUN-81
20-FEB-81 20-AUG-81
22-FEB-81 22-AUG-81
02-APR-81 02-OCT-81
28-SEP-81 28-AR-82

p  


SQL - Funções Datas
Ú 0BK
Ep'BJ''0D retorna o número de meses entre uma data e
outra.
Sntaxe:
ONTHS_BETWEEN (data, data)
Exemplo:
Select hredate, months_between(sysdate,hredate) from emp;

HIREDATE ONTHS_BETWEEN(
---------------- --------------------------
17-DEC-80 248.57263
20-FEB-81 246.47586
22-FEB-81 246.41134
02-APR-81 245.0565

p  


SQL ƛ Reformatação de Datas
' 2,
 Da do mês
N Nome do da abrevado com 3 letras
/N Nome do da com 9 letras

* Número do da no mês por extenso
Número do mês
0 Nome do mês abrevado com 3 letras
0BK Nome do mês com 9 letras
NN Dos dígtos do ano
NNNN Quatro dígtos do ano
KK? ?

Hora, nuto e Segundos


& Coloca espaço extra em cada elemento da máscara
KK5% Hora do da, formato 24 horas

p  


SQL - Funções de Conversão
Ú BEK/uD converte um valor tpo data ou número para um valor
char. Normalmente é utlzado para a formatação de datas e números.
Sntaxe:
TO_CHAR (data [, formato_char]) ou TO_CHAR(num [,formato_char])
Exemplo:
Select ename, to_char(hredate,ƞË ƞ) ƠAdmssãoơ from emp;


$%
 $ 
&&&&&&&&&&& &&&&&&&&&&&&&&&
S%'( )*#+,
$LL
,*#+)
-$. ,*#+)
/0
S ,1#+)
%$.',2#+)
3L$4
 ,5#+)
dL$.4 ,6#+)

p  


SQL - Funções de Conversão
Exemplo:
S  7 8   7Ɲ9%Ơơ  ::::ƞ!
Ơ$ ơ 
;

ENAE Admssão
----------- ----------------------------
SITH 17 de december 1980
ALLEN 20 de february 1981
WARD 22 de february 1981
JONES 2 de aprl 1981
ARTIN 28 de september 1981
BLAKE 1 de may 1981
CLARK 9 de june 1981

p  


SQL - Funções de Conversão
Ú BE/B'D converte uma expressão char para date.
Sntaxe:
TO_DATE (char [, formato_char])
Exemplo:
Insert nto Emp Values
(222, ƝIsa VonDxƞ,Ɲatrzƞ, 3424,
TO_DATE(Ɲ070393ƞ,ƞDD ƞ),3000,0,10);

S  7  


<  =***;

$%
 (.
$'

&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&
 > ? ,@&/AL&2@

p  


SQL ƛ Funções de Grupo
/23 F 
+O       

Ú &2,/6D calcula a méda dos valores seleconados

Exemplo:

SQL> Select avg(sal) from emp;

Resultado do exemplo: 3456,345

p  


SQL ƛ Funções de Grupo
Ú &2, 0C /PD selecona o menorËmaor valor dos valores
seleconados.

Exemplo:

SQL> Select mn(sal) from emp where job = ƝCLERKƞ;

Resultado do exemplo: IN(SAL) = 400

p  


SQL ƛ Funções de Grupo
Ú &2,-0BD faz a contagem das lnhas retornadas de uma
query.

Count (*) ƛ O * faz contar todas as lnhas.

Exemplo:

SQL> Select count(sal) from emp;

p  


SQL ƛ Cláusulas Group By e Havng
Ú '8 1 2,     
7 u-*pNK/6 0

Sntaxe:

SELECT nome_coluna FRO nome_tabela WHERE condção


GROUP B Expressão_Group_By

Expressão_Group_By especca as colunas pelos quas serão


agrupados pela unção de grupo.

p  


SQL ƛ Cláusulas Group By e Havng
Ú u-*pN

Exemplo:

SELECT codequpe, count(*) ƠNº de Funconárosơ FRO


funconaro GROUP B codequpe;

CodEqupe Nº de Funconáros
------------- -----------------------
1 3
2 2
3 1
4 1
5 1
6 1

p  


SQL ƛ Cláusulas Group By e Havng
Ú u-*pND Nunca selecone uma coluna smples com uma função de
grupo sem a cláusula GROUP B .

Exemplo:

SELECT codequpe as equpe, funcao Cargo,


count(*) ƠNº de Funconárosơ FRO funconaro;

'uuu "?
u/ ))#Q$: not a sngle-group group functon

p  


SQL ƛ Cláusulas Group By e Havng
Exemplo:

SELECT codequpe as equpe, funcao Cargo,


count(*) ƠNº de Funconárosơ FRO funconaro
GROUP B codequpe, funcao;
Equpe Cargo Nº de Funconáros
-------- ------------------ -----------------------
1 Chefe 2
1 Engenhero 1
2 Chefe 2
3 ecânco 1
4 ecânco 1
5 Chefe 1
6 ecânco 1

p  


SQL ƛ Cláusulas Group By e Havng
Ú   > >1  
7 K/6 0

Sntaxe:

SELECT nome_coluna FRO nome_tabela WHERE condção


GROUP B Expressão_Group_By HAVING condção

i   restrnge o grupo de lnhas retornadas


daqueles grupos para especcar uma condção TRUE.

p  


SQL ƛ Cláusulas Group By e Havng
Exemplo:

SELECT codequpe, 12 * AVG(sal) FRO funconaro


GROUP B codequpe HAVING 12 * AVG(sal) > 10000;

CodEqupe 12 * AVG(sal)
------------- -----------------
1 20000000
2 11400000
3 1200000
4 1200000
5 2400000
6 1200000

p  


SQL ƛ Cláusulas Group By e Havng
Exemplo:

SELECT funcao, sum(salaro) ƠSoma Salơ FRO funconaro


GROUP B funcao HAVING sum(salaro) > 5000;

Funcao Soma Sal


------------- -----------------
Chefe 6.300.000
Engenhero 800.000
ecânco 420.000

p  


SQL ƛ Cláusulas Group By e Havng
Exemplo:

SELECT funcao, sum(salaro) ƠSoma Salơ FRO funconaro


WHERE funcao not lke Ɲec%ƞ
GROUP B funcao HAVING sum(salaro) > 5000;

Funcao Soma Sal


------------- -----------------
Chefe 6.300.000
Engenhero 800.000

p  


SQL - Comandos
Ú       +O 


Sntaxe:

CREATE TABLE nome_tabela As SELECT * FRO nome_tabela;

Exemplo:

CREATE TABLE EmpCopa


As
SELECT * FRO Emp;

?Este comando faz uma cópa da tabela (estrutura e


regstros) mas não gera todas as constrants da tabela
orgnal para a nova tabela. Apenas as constrants de
Not Null são copadas para a nova tabela.
p  


SQL - Comandos
Ú       +O 
2,
 7 @

Exemplo:

CREATE TABLE EmpCopa


As
SELECT ename, empno FRO Emp where depto = 30;

p  


SQL - Comandos
Ú    


Podemos nclur váras lnhas na tabela com o uso do comando


select.

Exemplo 3:
INSERT nto Poupança
Select NumAg, NumConta, 200 from Correntes
Where NumAg = 1191;

p  


SQL ƛ Sub-Queres
Ú - O  

Sntaxe:
SELECT col1, col2 FRO table1 WHERE columm =
(SELECT nome_coluna FRO nome_tabela WHERE condo)
Exemplo: Quando queremos encontrar o funconáro que recebe o
menor saláro da empresa, sendo que no sabemos qual é o menor
saláro. Poderíamos dvr essa consulta em uas:
SELECT IN(sal) FRO emp;
SELECT ename, job, sal from emp where sal = 800;
 1    ?
SELECT ename, job, sal FRO emp WHERE sal = (SELECT IN(sal)
FRO emp);
A query interna é executaa primeiro e traz o valor necessário para
execuo a seguna consulta.
p  


SQL ƛ Sub-Queres
Ú
  + 

Exemplo: Encontrar os empregados que recebem o menor saláro


em cada departamento.

SELECT ename, sal, deptno FRO emp WHERE sal IN


(SELECT IN(sal) FRO emp GROUP B deptno);

A cláusula 0 substtu o operador Åpara que todas as


concdêncas sejam retornadas. Se usar o operador Å terá uma
mensagem de erro, dzendo que retorna mas que uma lnha.

p  


SQL ƛ Sub-Queres
Ú    +  

Exemplo:

SELECT ename, sal, deptno FRO emp WHERE (sal, deptno) IN


(SELECT IN(sal), deptno FRO emp GROUP B deptno);

 As colunas são comparadas em pares. O número de colunas e tpo


de dados das colunas da cláusula WHERE tem que ser os mesmos
nos dos Selects.

 Uma query nterna deve ser usada dentro de parênteses.

 A subquery não pode conter a cláusula Order By.

p  


SQL ƛ Jon
Ú ' O7  23,
    !9F2,:  
   
Ú *     1F2,   
   O    2,F2, 7 
JK'u''!O' - ! 09  
  :
Exemplo: Buscar dados que estão na tabela ', como o nome do
empregado, bem como o nome do departamento em que trabalha, que
está na tabela .
SELECT empno, ename, job, emp.deptno Depart, dept.deptno, dname, loc
FRO emp, dept JK'u''Å;
EPNO ENAE JOB DEPART DEPTNO DNAE LOC
--------- ---------- --------- ----------- ---------- -------------- -------------
7369 SITH CLERK 20 20 RESEARCH DALLAS
7499 ALLEN SALESAN 30 30 SALES CHICAGO
7521 WARD SALESAN 30 30 SALES CHICAGO
p  


SQL ƛ Jon
Ú  23 
SELECT empno, ename, job, emp.deptno Depart, dept.deptno,dname
FRO emp, dept JK'u''LÅ;
EPNO ENAE JOB DEPART DEPTNO DNAE
--------- ---------- --------- ----------- ----------- --------------
7369 SITH CLERK 20 10 ACCOUNTING
7369 SITH CLERK 20 20 RESEARCH
7499 ALLEN SALESAN 30 10 ACCOUNTING
7499 ALLEN SALESAN 30 20 RESEARCH
7499 ALLEN SALESAN 30 30 SALES
7566 JONES ANAGER 20 10 ACCOUNTING
7566 JONES ANAGER 20 20 RESEARCH
7839 KING PRESIDENT 10 10 ACCOUNTING

p  


SQL ƛ Jon
Ú !2323?p     23
/0
Exemplo:
SELECT empno, ename, job, sal, dname, loc FRO emp, dept
JK'u'Dept.Deptno = Emp.Deptno sal > 1500;

EPNO ENAE JOB SAL DNAE LOC


---------- ---------- --------- ----------- ---------- --------------
7499 ALLEN SALESAN 1600 SALES CHICAGO
7566 JONES ANAGER 2975 RESEARCH DALLAS
7698 BLAKE ANAGER 2850 SALES CHICAGO
7782 CLARK ANAGER 2450 ACCOUNTING NEW ORK

p  


SQL ƛ Jon
Ú 2  8 +3

4R
SELECT C.empno, C.ename, C.job, D.dname FRO emp C, dept D
JK'u'D.Deptno = C.Deptno;


#5
SELECT C.empno, C.ename, C.job, D.dname
FRO emp C 00'u! 0 dept D -
0(Deptno);

A cláusula -
0 só pode ser usada quando as chaves primária e
estrangeira tiverem o mesmo nome, seno, usar a cláusula 0
SELECT C.empno, C.ename, C.job, D.dname
FRO emp C 00'u! 0 dept D 0C.Deptno = D.NumDep;

p  


SQL ƛ Jon
Ú -B'u! 0D !+    ,
+     
Sntaxe:
SELECT tabela1.coluna, tabela2.coluna FRO tabela1, tabela2
JK'u'tabela1.coluna = tabela2.coluna 9S:;
Acrescenta-se o
(+) ao lado da
Exemplo: tabela em que
faltam elementos
SELECT ename, job, dname, emp.deptno, dept.deptno
FRO emp, dept JK'u'emp.deptno = dept.deptno 9S:;

Além de trazer os empregados que possuem um departamento


correspondente na tabela Dept, traz os registros de empregados
sem código de departamento.

p  


SQL ƛ Jon
Ú 2  8 +3

4R
SELECT ename, job, dname, emp.deptno, dept.deptno
FRO emp, dept JK'u'emp.deptno = dept.deptno 9S:;


#5
SELECT ename, job, dname, emp.deptno, dept.deptno
FRO emp '&B-B'u! 0 dept -
0(deptno);

A cláusula -
0 só pode ser usada quando as chaves primária e
estrangeira tiverem o mesmo nome, seno, usar a cláusula 0
SELECT ename, job, dname, emp.deptno, dept.deptno FRO emp
'&B-B'u! 0 dept 0empDeptno = Dept.NumDep;

p  


SQL ƛ Jon
Ú
' &! 0D '!O1     
2,     

Exemplo: Apresentar cada funconáro com seu devdo gerente


4R
SELECT E.ename, E2.ename Gerente FRO emp E, emp E2
JK'u'E.empno = E2.empnoger;


#5
SELECT E.ename, E2.ename Gerente
FRO emp E 00'u! 0emp E2 on E.empno = E2.empnoger;

p  


SQL ƛ Jon
Ú '8
' &! 0
B  
COD_CURSO NOE_CURSO PRE_REQUISITO
---------------- ------------------ ----------------------
1 Introdução à Lógca de Programação
2 Fundamentos da odelagem de Dados
3 Delph: Recursos Báscos 1
4 Delph: Acesso a Banco de Dados 1
5 Oracle: SQL*Plus e SQL 2
6 Oracle: PLËSQL 5

SELECT P.nome_curso, E.nome_curso ƠPré-Requstoơ


FRO cursos P, cursos E JK'u'P.pre_requsto = E.cod_curso;
NOE_CURSO PRE_REQUISITO
------------------ ----------------------
Delph: Recursos Báscos Introdução à Lógca de Programação
Delph: Acesso a Banco de Dados Introdução à Lógca de Programação
Oracle: SQL*Plus e SQL Fundamentos da odelagem de Dados
Oracle: PLËSQL Oracle: SQL*Plus e SQL
p  


SQL ƛ Unon
Ú *    
-0 0
Ú / 
+ >+9: 
   
Ú u          
Ú u23,8> 
Exemplo:
SELECT ename from emp -0 0 SELECT dname from dept;
ENAE
----------
Accountng
Adams
Allen
Clark
Ford
Kng
Sales
Scott p  


SQL ƛ Unon All
Ú *    
-0 0/ O    ,8 

Exemplo:

SELECT job from emp -0 0/ SELECT dname from dept;

p  


SQL ƛ Intersect
Ú u  2, 23  
 2    23
Ú  -,  + >+
Ú u23,8> 
Exemplo: Seleconar os códgos e nomes dos muncípos que possuem Clentes
e Fornecedores, estando os clentes e fornecedores em tabelas separadas.

SELECT cd_muncp, nm_muncp from uncpo


JK'u' cd_muncp 0(SELECT cd_muncp from Fornecedor)
0B'u
'B
SELECT cd_muncp, nm_muncp from uncpo
JK'u' cd_muncp 0(SELECT cd_muncp from Clente);
CD_UNICIP N_UNICIP
---------------- ----------------
1 São Paulo
3 Curtba

p  


SQL ƛ nus
Ú    2,,
F   
Ú  -,  + >+
Exemplo: Seleconar os códgos e nomes dos muncípos que possuem
Fornecedores cadastrados, mas não exstem Clentes, estando os clentes e
fornecedores em tabelas separadas.

SELECT cd_muncp, nm_muncp from uncpo


JK'u' cd_muncp 0(SELECT cd_muncp from Fornecedor)
0-

SELECT cd_muncp, nm_muncp from uncpo


JK'u' cd_muncp 0(SELECT cd_muncp from Clente);
CD_UNICIP N_UNICIP
---------------- ----------------
2 Santos
4 Ro de Janero

p  


SQL ƛ Vew
Ú - +,O  O   + 1  
     <   

Ú - +@OF    +@


      

Ú - +@,8    / 


  +@O   
 

p  


SQL ƛ Vew
*   6@T

Ú U       F7  


+@ O        

Ú
        7

Ú * 7+ 1 


  

p  


SQL ƛ Vew
Sntaxe:
CREATE VIEW Nome_Vew [nome_coluna [,nome_coluna]] AS
Select...... WITH CHECK OPTION [CONSTRAINT, CONSTRAINT]
[WITH READ ONL ];

seno:
ƥ 0 'E6 'J ƛ nome da vsão.

ƥ 0 'E -0/ ƛ especfca nomes para as colunas


seleconadas pelas queres da vsão. O número de colunas ou
alases deve ser gual ao número de expressões seleconadas
pela vsão.

ƥ
' 'B ƛ é uma cláusula SELECT completa, nclundo JOINS e
SUBQUERIES. Não é possível especfcar a cláusula Order By.

p  


SQL ƛ Vew
ƥ J BKK'M*B 0 ƛ caso exsta algum fltro especfcado
na cláusula WHERE do comando SELECT, a condção será
utlzada para mpedr atualzações realzadas dretamente
sobre a Vew que contrarem este fltro. Sem esta cláusula, as
alterações poderam ser fetas, porém não seram vstas ao
lstar o conteúdo retornado pela Vew.

ƥ 0
Bu/ 0B ƛ é o nome da CONSTRAINT assnalada ao
CHECK OPTION.

ƥ J BKu'/0 N ƛ ndca que não podem ser executados


comandos de DL (nsert, delete, update) sobre a vew.

p  

 
SQL ƛ Vew
  +@  
6F  23   1 23 ,
 ?

Ú B + 2, +@, 


      9 +7 ,
:V

Ú B +   1 2,    + 


  7 V

Ú '8,   

p  

 
SQL ƛ Vew
Exemplo:

CREATE VIEW Emp2 AS


Select empno, ename, sal FRO Emp WHERE deptno = 20;

Para seleconar os dados da VIEW crada:

SELECT * FRO Emp2;

p  


SQL ƛ Vew
Ú * +@23  
  W>+  2   
,     8
' 'B

Exemplo:

CREATE VIEW Resumo_Depto AS


Select dname Nome, mn(sal) Ơínmoơ, max(sal) Ơáxmoơ,
avg(sal) Ơédaơ FRO Emp, Dept
WHERE Emp.Deptno = Dept.Deptno Group By dname;

Para seleconar os dados da VIEW crada:

SELECT * FRO Resumo_Depto;

p  


SQL ƛ Vew
Ú W>+1  X 9  : 
7 
' 'B  +,7 

' 'BY0U / Z

Exemplo:

CREATE VIEW Emp_Sal (Nome, Cargo, Salaro) AS


Select ename, job, sal FRO Emp;

Para seleconar os dados da VIEW crada:

SELECT * FRO Emp_Sal;

p  


SQL ƛ Vew
Ú 2,J BKK'M*B 0D 1 2, 7 
  YZY Z,,
+   +  
' 'B +,
O7 +,7    
  +,7     
Exemplo:
CREATE VIEW Emp2 AS
Select * FRO Emp WHERE deptno = 20 WITH CHECK OPTION;

A cláusula WITH CHECK OPTION mpedrá que, por meo da vew,


sejam nserdos ou alterados empregados que tenham o número
do departamento dferente de 20. Caso sso ocorra, a segunte
mensagem será apresentada:
u/ )"%)5: volação da cláusula where da vew WITH CHECK OPTION

p  

 
SQL ƛ Vew
Ú u+ +,p  

Sntaxe:
DROP VIEW Nome_Vsão;

Exemplo:
DROP VIEW Emp_Sal;

p  

 
SQL - Vew
Ú B  p   1 6@

-E6@
 2,
Vew_Name Nome da Vsão
Text_Length Tamanho do texto da vsão
Text Texto da vsão

p  

 
SQL ƛ Vew
Ú 6 1 6@

Exemplo:
SELECT text FRO User_Vews WHERE Vew_Name = ƝEP_SALƞ;

TEXT
--------------------------------------------------------------
select ename, job, sal from emp

p