Você está na página 1de 87

Universidade Federal de Mato Grosso Instituto de Computao Ps Graduao Lato Sensu em Banco de Dados

Fundamentos de Banco de Dados e Modelagem de Dados


Prof. Dr. Josiel Maimone de Figueiredo josiel@ic.ufmt.br Junho !"##

$%& '$tructured %uer( &anguage)

*utores *driano $i,ueira *rantes -n.o $eraphim Josiel Maimone de Figueiredo

Introduo

Desenvolvida e implementada:

pelo Laboratrio de Pesquisas da IBM em San Jose entre os anos de 1964 e 1969

Ini ialmente !amada "S#$%#L& 'orma de inter(a e om o primeiro S)BD *ela ional:

S+stem *

Padroni.a/es

S#$%#L,-ri.inal S$L / 1904 S$L/16 234SI,IS-5 / 1916 S$L/96 / 1996 S$L:1999 / 1999 S$L:6778 / 6778 S$L:6776 / 6776

ntroduo

Padroni.a/es

S$L1 219165

bus ou padroni9ar as v:rias implementa;<es S$L da =po a> prin ipalmente 34SI IS-

ntroduo

Padroni.a/es

S$L 6 219965

a.entes S$L? one@<es liente,servidor S$L? suporte para S$L embutida em novas lin.ua.ens? suporte para novos tipos de dados

ntroduo

blobs> var !ar> date> time e timestamp?

suporte para tabelas tempor:rias? suporte para operadores de Aun;Bo ? altera;Bo do esquema via 3LC#* e D*-P

Padroni.a/es

S$L 8 219995 introdu9iu al.uns on eitos do paradi.ma --D permite ampos multivaloradosD permite ampos ompostosD

ntroduo

Padroni.a/es

S$L 267785 in lusBo de ara terEsti as FML de(inida l:usula M#*)#

ntroduo

Padroni.a/es

S$L 267765 mais ara terEsti as FML suporte G F$uer+ padrBo para inter(a e FML/S$L

ntroduo

Padroni.a/es

Divis<es atuais
Descrio Descrio das partes comuns nas divises De!inio dos dados" sinta#e e sem$ntica de manipu%ao 'a%% Leve% (nter!ace )OD*'+ ersistent Stora.e -odu%e/ %in.ua.em procedura% SQL 1m2utido )cance%ado+ 1specia%i5ao da especi!icao 67Open 6A )para%isado+ 4ratamento de dados temporais )incorporada ; diviso 1+ 4rata do mode%o de o2:etos -ana.emen o! 1#terna% Data/ acesso a dados e#ternos O2:ect Lan.ua.e *indin./ SQL com >ava )SQL>+ (n!ormao e de!inio de es@uema Funciona%idade de rep%icao de dados >ava Aoutines and 4Bpes/ uso de >ava dentro do *D Cso de 6-L

Parte 1 SQL / Framework 2 SQL / Foundation SQL / OLA & SQL / 'L( , SQL / S0 SQL / *indin.s 3 SQL / 4ransactions 8 SQL / 4empora%

ntroduo

9 SQL / O2:ects 1#tended O2:ects < SQL / -1D 1= SQL / OL* 11 SQL / Sc?emata 12 SQL / Aep%ication 1& SQL / >A4 1, SQL / 6-L

Padroni.a/es

Divis<es atuais 2 ontD5

S$L,MM 2Multimedia5
Parte 1 Framework 2 Fu%% 4e#t & Spatia% 0 Sti%% (ma.e 3 Data minin. Descrio De!inio da e#tenso 4ratamento de te#tos %on.os )D3,E2+ Dados espacias (ma.ens -inerao de dados

ntroduo

0egras Gerais

instru;<es S$L nBo sBo case sensitiveD instru;<es S$L podem ser (eitas em mais de uma lin!aD palavras !ave nBo podem ser abreviadasD l:usulas .eralmente sBo olo adas em lin!a separadasD normalmente sBo utili9adas identa;<es para mel!orar a le.ibilidade das instru;<esD

ntroduo

M-0 -1emplo
Autor
cod_autor nome nascimento

escreve

Livro
N publica 1

cod_livro ttulo valor volume

ntroduo

Editora

cod_editora razo endereo cidade

Mapeamento para o 0elacional


3utor H I codigo> nome> nas imento J #s reve H I codigoAutor> codigoLivroJ Livro H I codigo> titulo> valor> volume> odi.o#ditora J #ditora H I codigo> ra9ao> endere o> idade J

ntroduo

Classes dos Comandos


-s omandos podem ser a.rupados em 8 lasses: DDL 2Data Definition Language5

in lui omandos para de(inir> alterar e remover tabelas e Endi es? omandos para inserir> remover> atuali9ar e onsultar os dados arma9enados nas tabelas? omandos para se trabal!ar em ambiente multi/ usu:rio> permitindo estabele er nEveis de se.uran;a e manipular transa;<esD

DML 2Data Manipulation Language5

e2ini/es

DKL 2Data Control Language5

DD&

Para todos omandos da DDL: K*#3C# / Kria uma de(ini;Bo 3LC#* / 3ltera uma de(ini;Bo D*-P / #@ lui uma de(ini;Bo 3l.uns omandos da DDL:

D& De2ini/es

C3BL# / De(ine uma tabela> seus ampos e as restri;<es de ampoD I4D#F / De(ine um Endi e asso iado a um ampo de uma tabelaD

DD&

3l.uns omandos da DDL 2 ontD5: C*I))#* de(ine um onAunto de instru;<es que sBo automati amente e@e utadas 2.atil!os5 antes ou depois de um omando I4S#*C> %PD3C# ou D#L#C#D P*-K#D%*# de(ine um onAunto de instru;<es 2stored procedures5D podem re eber ou retornar valoresD podem ser e@e utadas atrav=s de uma soli ita;Bo do usu:rio ou por um C*I))#*D

D& De2ini/es

4ipos de Dados

CHAR(n)

D& 3 4ipos de Dados

taman?o de arma5enamento n 2BtesF para arma5enamento de dados te#tuaisF o nGmero mH#imo de caracteres I de!inido por n e deve estar entre 1 e &2F830F reserva previamente o taman?o de!inido por n" mesmo @ue o dado arma5enado no preenc?a tota%mente o campoF

VARCHAR(n) ou CHAR VARYING(n) ou CHARACTER VARYING(n)

arma5ena somente a @uantidade de caracteres para conter o dado tendo no mH#imo o va%or nF pro2%emas com a%terao de va%or do dado imp%ica em mudana de %oca% de arma5enamentoF

4ipos de Dados

D& 3 4ipos de Dados

NUMBER ( reciso! "eci#a$) taman?o de arma5enamento variHve% para va%ores decimaisF preciso de!ine a @uantidade de dJ.itos numIrico mH#imo para o dado e decima% a @uantidade de nGmeros decimaisF por e#emp%o/ KC-*1A )1="&+ indica @ue o dados pode ter no mH#imo 8 dJ.itos inteiros e & dJ.itos decimaisF INTEGER mesmo @ue Kum2er)&9+F taman?o de arma5emanento &2 2itsF para arma5enamento de nGmeros inteiros no interva%o de 2F1,8F,9&F3,9 to 2F1,8F,9&F3,8F

4ipos de Dados

DATE

D& 3 4ipos de Dados

taman?o de arma5enamento 3, 2itsF para arma5enamento de data e ?oraF o interva%o de datas vH%idas I 1/>an/1== atI 11/>an/0<,1F a ?ora I inc%usaF

B%&B (Binary Large Object)


arma5ena os dados em !ormato 2inHrioF taman?o de arma5enamento variHve%F para arma5enamento de .rande @uantidade de dados como Hudio" vJdeo" .rH!icos" etcF

5peradores &gicos

%'(icos

D& 3 4ipos de Dados

AND &R N&T *!+!,!. 0 .0 ./ 0/ /

Arit#)ticos

Re$acionais

%I1E! BET2EEN

5peradores

Con3unturais /ANY 0ANY ./ANY .A%% .0A%% E4I5T5 IN N&T E4I5T5 N&T IN .ANY 0/ANY .0ANY 0A%%

D& 3 4ipos de Dados

C0-*4- 4*B&

'ria uma nova ta2e%a com seus campos e de!ine as restries de campo Sinta#e/
CREATE TAB%E ta2e%a (campo1 tipo L)taman?o+M LN&T NU%%M LPRIMARY 1EY N UNI6UEM LDE7AU%T %itera%M" Lcampo2 tipo L)taman?o+M LN&T NU%%M LPRIMARY 1EY 8 UNI6UEM! LDE7AU%T %itera%9! L" FFFM" :C&N5TRAINT nome9 ;PRIMARY 1EY (primHria1L" primHria2 L" FFFMM) N UNI6UE (e#c%usiva1L" e#c%usiva2 L" FFFMM) N 7&REIGN 1EY (re!1L" re!2 L" FFFMM+ RE7ERENCE5 ta2e%ae#terna L)campoe#terno1 L" campoe#terno2 L" FFFMM+ N CHEC1 LcondioM O )

D& 3 Comandos

C0-*4- 4*B&

1#emp%o 1/ /P 'ria a ta2e%a Autor P/ CREATE TAB%E Autor( codi.o NUMBER(<) N&T NU%% " nome VARCHAR(=>) N&T NU%%" nascimento DATE N&T NU%%" C&N5TRAINT '?aveAutor PRIMARY 1EY )codi.o+" C&N5TRAINT CnicoAutor UNI6UE( nome" nascimento) )Q

D& 3 Comandos

C0-*4- 4*B&

1#emp%o 2/ CREATE TAB%E 1ditora) codi.o NUMBER(<) N&T NU%%! ra5ao VARCHAR(=>)! endereco CHAR(=>)! cidade CHAR(=>)! C&N5TRAINT '?ave1ditora PRIMARY 1EY (codi.o) +Q

/P 'ria ta2e%a editora P/

D& 3 Comandos

C0-*4- 4*B&

1#emp%o &/ /P 'ria ta2e%a %ivro P/ CREATE TAB%E Livro( codi.o NUMBER(?) N&T NU%%! titu%o CHAR(=>) N&T NU%%! va%or NUMBER(=!@)! vo%ume NUMBER(@)! codi.o1ditora NUMBER(<) N&T NU%%! C&N5TRAINT '?aveLivro PRIMARY 1EY (codi.o)! C&N5TRAINT Livro1ditora 7&REIGN 1EY (codi.o1ditora) RE7ERENCE5 1ditora +Q

D& 3 Comandos

C0-*4- 4*B&

1#emp%o ,/ CREATE TAB%E 1screve ( codi.oLivro NUMBER(?) N&T NU%%! codi.oAutor NUMBER(<) N&T NU%%! C&N5TRAINT '?ave1screve PRIMARY 1EY (codi.oLivro" codi.oAutor)! C&N5TRAINT 1stran.eiraLivro 7&REIGN 1EY (codi.oLivro) RE7ERENCE5 Livro" C&N5TRAINT 1stran.eiraAutor 7&REIGN 1EY (codi.oAutor) RE7ERENCE5 Autor +Q

/P 'ria ta2e%a escreve P/

D& 3 Comandos

*&4-0 4*B&

A%tera as de!inies de campos e de restries de uma ta2e%aF Sinta#e/

D& 3 Comandos

A%TER TAB%E ta2e%a LADD campo tipo L)taman?o+M LN&T NU%%M LPRIMARY 1EY N UNI6UEM" L" FFFM" LDR&P campo tipo L)taman?o+M LN&T NU%%M LPRIMARY 1EY N UNI6UEM" L" FFFM" LADD C&N5TRAINT restrio L" FFFMM LDR&P C&N5TRAINT restrio L" FFFMM

*&4-0 4*B&

1#emp%o 1/

Adicionar o campo 1mai% na ta2e%a Autor

A%TER TAB%E Autor ADD emai% VARCHAR(<>)A

D& 3 Comandos

1#emp%o 2/

Apa.ar a 'OKS4AA(K4 CnicoAutor A%TER TAB%E Autor DR&P C&N5TRAINT CnicoAutorQ

da ta2e%a Autor

D05P 4*B&

1#c%ui uma ta2e%a e#istente de um 2anco de dadosF Ko pode ser e#c%uJda uma ta2e%a @ue possui a%.uma re!erRnciaF

D& 3 Comandos

nesse caso deve7se primeiro e#c%uir a re!erRncia ; ta2e%aF

Sinta#e/ DR&P TAB%E ta2e%aQ

1#emp%o/

Apa.a ta2e%a Autor DR&P TAB%E AutorQ

C0-*4- I6D-7

'ria um novo Jndice em uma ta2e%a e#istenteF A criao dos Jndices ocorrem para/

au#i%iar o .erenciador em uma pes@uisa de um ou mais campos na 2ase de dados" @uando !or so%icitadoQ au#i%iar o .erenciador em uma ordenao de um ou mais campos na 2ase de dados" @uando !or so%icitadoF

D& 3 Comandos

Sinta#e/ CREATE LUNI6UEM INDE4 nomeSJndice &N nometa2e%a ( campo LA5C 8 DE5CM L" campoTM)

C0-*4- I6D-7

1#emp%o 1 /

'ria Jndice do campo nascimento em ordem descendente para ta2e%a Autor CREATE INDE4 Kascimento(D6 &N Autor (nascimento DE5C)A

D& 3 Comandos

1#emp%o 2/

'ria Jndice do campo cidade e ra5o em ordem ascendente para ta2e%a 1ditora CREATE INDE4 'idadeAa5ao(D6 &N 1ditora (cidade" ra5ao)Q

D05P I6D-7

1#c%ui um Jndice e#istente de uma ta2e%aF Sinta#e DR&P INDE4 nomeSJndice

D& 3 Comandos

1#emp%o/

Apa.a Jndice 'idadeAa5ao(D6 da ta2e%a editora DR&P INDE4 'idadeAa5ao(D6Q

DM&

'omandos D-L (KS1A4 (K4O adiciona um )ou mG%tip%os+ re.istros a uma ta2e%aF C DA41 a%tera va%ores de campos em uma determinada ta2e%a com 2ase em critIrios especi!icadosF D1L141 remove os re.istros de uma ou mais ta2e%as @ue satis!aam aos critIriosF S1L1'4 procura na ta2e%a ou ta2e%as especi!icadas" e#trai as co%unas esco%?idas" se%eciona as %in?as @ue atendem aos critIrios e c%assi!ica ou a.rupa as %in?as resu%tantes na ordem especi!icadaF

M& 3 De2ini/es

I6$-04 I645

adiciona um re.istro ou mG%tip%os re.istros a uma ta2e%aF Sinta#e

(nsere mG%tip%os re.istros/

M& 3 Comandos

IN5ERT INT& nome4a2e%a L)campo1L" campo2L" FFFMM+M 5E%ECT Lori.emFMcampo1L" campo2L" FFFM 7R&M e#pressodeta2e%a

(nsere um Gnico re.istro/

IN5ERT INT& nome4a2e%a L)campo1L" campo2L" FFFMM+M VA%UE5 )va%or1L" va%or2L" FFFM+

I6$-04 I645

1#emp%o 1/

(nsere um re.istro na ta2e%a autor IN5ERT INT& Autor )codi.o" nome" nascimento+ VA%UE5 (1" UO%iveira" >FU" U1&7-aB7 1<3=U)A

M& 3 Comandos

(nsere um re.istro na ta2e%a editora IN5ERT INT& 1ditora VA%UE5 (1" U-'VAAW 7 X(LLU" UAFSo 'ar%os" &21U" USo >osI do Aio retoU)A

I6$-04 I645

1#emp%o 2/

'ria ta2e%a autorve%?o em se.uida insere na ta2e%a autorve%?o" os autores com nascimento Y =1/=1/1<3= CREATE TAB%E AutorZe%?o) codi.o NUMBER(<) N&T NU%% C&N5TRAINT '?aveAutorZe%?o PRIMARY 1EY" nome VARCHAR(<>) N&T NU%%! nascimento DATE N&T NU%%! C&N5TRAINT CnicoAutorZe%?o UNI6UE( nome" nascimento) )A

M& 3 Comandos

I6$-04 I645

1#emp%o 2 )continuao+/ IN5ERT INT& AutorZe%?o 5E%ECT P 7R&M Autor 2HERE nascimento Y U=1/=1/1<3=UQ

M& 3 Comandos

UPD*4

a%tera va%ores de campos em uma determinada ta2e%a" com 2ase em critIrios especi!icados Sinta#e/ UPDATE nometa2e%a 5ET novova%or L2HERE condioS2oo%eanaMQ

M& 3 Comandos

UPD*4

1#emp%o 1/

A%terar o endereo e a cidade da ta2e%a editora com c[di.o \ 1 UPDATE 1ditora 5ET endereco \ UAZFKFSFD1 FA4(-A" 12&U" cidade \ USAK4A F]U 2HERE codi.o \ 1Q

M& 3 Comandos

1#emp%o 2/

Aea:usta o va%or de todos os %ivros em 1=^ UPDATE Livro 5ET va%or \ va%or P 1F1Q

D-&-4

remove os re.istros de uma ou mais ta2e%as @ue satis!aam aos critIriosF Sinta#e/ DE%ETE 7R&M nomeSta2e%a L2HERE condioS2oo%eanaMQ

M& 3 Comandos

1#emp%o 1/

Apa.a o re.istro da ta2e%a Autor com codi.o \ 1

DE%ETE 7R&M Autor 2HERE codi.oAutor \ 1Q 1#emp%o 2 /

Apa.a todos os re.istros da ta2e%a %ivro DE%ETE 7R&M LivroQ

$-&-C4

-1trai os valores arma.enados nas ta8elas9 0eali.a v:rias opera/es da ;lge8ra 0elacional+

M& 3 Comandos

$eleo< Pro=eo< Juno< etc

$inta1e+
SELECT L !ST!NCT M ALLN I O M tabelaDO M LtabelaDN ampo1 LAS alias1N L> DDDNNJ "#$M e@pressBodetabela L> DDDN L%&E#E ondi;BoPbooleanaN L'#$() *+DDD N L&A,!N'DDD N L(N!$NDDD N

$-&-C4

M& 3 Comandos

-1emplo #+ $eleciona todos os campos na ta8ela autor SELECT O "#$M 3utor? -1emplo !+ $elecionar todos os nomes e datas de nascimento da ta8ela autor SELECT nome> nas imento "#$M 3utor? -1emplo >+ $elecionar todos os nomes e datas de nascimento da ta8ela autor renomeando a coluna nome para autor SELECT nome AS autor> nas imento "#$M 3utor?

Cl:usula ?@-0

-speci2ica ,uais registros das ta8elas listadas na cl:usula F05M so a2etados por uma instruo $-&-C4< UPD*4- ou D-&-4-9 $e no 2or especi2icado uma cl:usula ?@-0-< a consulta retornar: todas as linhas da ta8ela9 -1emplo #+

M& 3 Comandos

$eleciona todos os livros cu=o valor se=am maiores ,ue 0A B"<"" SELECT titulo> valor "#$M Livro %&E#E valor Q 67?

Cl:usula ?@-0

M& 3 Comandos

-1emplo !+ $elecionar as editoras da cidade de $o Paulo SELECT ra9ao "#$M #ditora %&E#E idade H RSBo PauloS? -1emplo >+ $elecionar tCtulo da ta8ela livro e nome da ta8ela autor e renomeando a ta8ela para 2acilitar a digitao SELECT 3%Dnome> LIDtitulo "#$M 3utor 3%> Livro LI> #s reve #S %&E#E 23%D odi.o H #SD odi.o3utor5 AN 2LID odi.o H #SD odi.oLivro5?

Cl:usula G05UP BG

M& 3 Comandos

Com8ina registros com valores idDnticos na lista de campos especi2icada em um Enico registro9 Um valor de resumo F criado para cada registro se vocD incluir uma 2uno agregada $%&< como $um ou Count< na instruo $-&-C49 -1emplo+

4odas editoras ,ue pu8licaram livro SELECT #ditoraDra9ao "#$M Livro> #ditora %&E#E LivroD odi.o#ditora H #ditoraD odi.o '#$()-*+-#ditoraDra9ao?

Cl:usula @*HI6G

M& 3 Comandos

-speci2ica ,uais registros agrupados so e1i8idos na instruo $-&-C4 com uma cl:usula G05UP BG9 Depois de G05UP BG com8inar os registros< @*HI6G e1i8ir: ,ual,uer registro agrupado pela cl:usula G05UP BG ,ue satis2aa Is condi/es da cl:usula @*HI6G9 -1emplo+ -ditoras cu=o total de pu8lica/es F maior ,ue # SELECT odi.o#ditora AS editora "#$M Livro '#$() *+ odi.o#ditora &A,!N' C$(NT. odi.o#ditora/ Q 1?

Cl:usula 50D-0 BG

M& 3 Comandos

Classi2ica os registros resultantes de uma consulta em um campo ou campos especi2icados< em ordem crescente ou decrescente9 5s registros so classi2icados pelo primeiro campo listado aps 50D-0 BG9 5s registros ,ue tDm valores iguais na,uele campo sero ento classi2icados pelo valor no segundo campo listado e assim por diante9 -1emplo+ $elecione nome e nascimento da ta8ela autor em ordem dos autores mais novos SELECT nome>nas imento "#$M 3utor $# E# *+ nas imento ESC?

5perador UPP-0

coloca as letras da coluna especi2icada em maiEsculo -1emplo #+


SELECT %PP#*2nome5 "#$M 3utor

M& 3 Comandos

-1emplo !+
SELECT O "#$M 3utor TU#*# %PP#*2nome5 H "J-S#&

5perador DI$4I6C4

0etira valores repetidos na coluna especi2icada9 -1emplo+


SELECT DISCI4KC2 odi.oLivro5 "#$M #s reve

M& 3 Comandos

5perador I6

Determina se o va%or de uma e#presso I i.ua% a a%.um dos vHrios va%ores em uma %ista especi!icadaF Se e#pr !or encontrado na %ista de va%ores" o operador (n retornarH 4rueQ caso contrHrio" retornarH Fa%seF 1#emp%o/

M& 3 Comandos

$elecionar editora locali.adas nas cidades de so paulo< so carlos e rio de =aneiro SELECT O "#$M #ditora %&E#E idade !N 2VSW- P3%L-V> VSW- K3*L-SV> V*I- D# J34#I*-V5?

5perador B-4?--6 M *6D

M& 3 Comandos

Determina se o valor de uma e1presso se situa dentro de um intervalo especi2icado de valores9 $e o valor de e1pr estiver entre valor# e valor! 'inclusive)< o operador BetJeen999*nd retornar: 4rueK caso contr:rio< retornar: False9 -1emplo+

$elecionar livros com valor entre 0A L"<"" e 0A B"<"" SELECT titulo> valor "#$M Livro %&E#E valor *ET%EEN X7 AN 67?

5perador &IO

M& 3 Comandos

'ompara uma e#presso de se@_Rncia de caracteres com um padro em uma e#presso SQLF ara padro" vocR pode uti%i5ar caracteres corin.as )por e#emp%o" Like `-AE^a" para `-AEAOK *OOESa+ ou uti%i5ar caracteres iso%ados )por e#emp%o" Like `SOS1a" para `>OS1 1 AOS1a+ 1#emp%o/

$elecionar nome de autor ,ue inicie com letra NeN SELECT nome "#$M 3utor %&E#E nome L!0E V#YV?

5perador I$ 6U&&

Determina se o va%or de uma e#presso I nu%oF -1emplo+

M& 3 Comandos

$elecionar as editoras com endereo nulo SELECT ra9ao "#$M #ditora %&E#E endere o !S N(LL?

5perador *HG

'a%cu%a a mIdia aritmItica de um con:unto de va%ores contido em um campo especi!icado de uma consu%taF 1#emp%o/

M& 3 Comandos

-Idia de va%ores dos %ivros S1L1'4 AZV)ZALOA+ AS -1D(A FAO- L(ZAOQ -Idia de va%ores dos %ivros de cada editora 5E%ECT 1DFra5ao" AVG)L(Fva%or+ A5 media 7R&M 1ditora 1D" Livro L( 2HERE 1DFcodi.o\L(Fcodi.o1ditora GR&UP BY 1DFra5aoQ

5perador C5U64

M& 3 Comandos

'a%cu%a o nGmero de re.istros retornado por uma consu%taF A !uno 'ount no conta re.istros @ue ten?am campos Ku%%" e#ceto @uando e#pr !or o caractere curin.a asterisco )P+F Se e#pr identi!icar vHrios campos" a !uno 'ount contarH um re.istro somente se um dos campos no !or Ku%%F Separe os nomes de campo com um bF 1#emp%o/

'ontar autores @ue nasceram antes de =1/=1/1<3= 5E%ECT C&UNT )P+ 7R&M Autor 2HERE nascimentoY U1/1/1<3=UQ

5perador C5U64

EBe# $oC

M& 3 Comandos

'ontar @uantos %ivros no tem vo%ume com nu%% 5E%ECT C&UNT )aZOLC-1U+ 7R&M LivroQ 'ontar tota% de editoras 5E%ECT C&UNT )P+ 7R&M 1ditoraQ 'ontar os %ivros pu2%icado por cada editora S1L1'4 1DFra5ao" C&UNT)L(Fcodi.o1ditora+ 7R&M 1ditora 1D" Livro L( 2HERE 1DFcodi.o \ L(Fcodi.o1ditora GR&UP BY 1DFra5aoQ

5peradores MI6< M*7

Aetornam o mJnimo ou o mH#imo de um con:unto de va%ores contido em um campo especi!icado em uma consu%taF 1#emp%o/

M& 3 Comandos

Se%ecionar o va%or do %ivro mais caro 5E%ECT MA4)va%or+ A5 ZASAL4O 7R&M LivroQ

Se%ecionar va%or do %ivro mais 2arato 5E%ECT -(K)va%or+ A5 ZAS*AAA4O 7R&M LivroQ

5peradores MI6< M*7

1#emp%o/

Se%ecionar o tJtu%o com va%or mais a%to 5E%ECT titu%o" va%or 7R&M Livro 2HERE va%or IN ) 5E%ECT MA4)va%or+ 7R&M Livro +Q Se%ecionar o tJtu%o com va%or mais a%to 5E%ECT titu%o" va%or 7R&M Livro 2HERE va%or IN )5E%ECT MIN)va%or+ 7R&M Livro+Q

M& 3 Comandos

5perador $UM

Aetorna a soma de um con:unto de va%ores contido em um campo especi!icado em uma consu%taF A !uno Sum i.nora os re.istros @ue conten?am campos Ku%%F EBe# $oC

M& 3 Comandos

Soma dos va%ores dos %ivros pu%icados pe%a editora com c[di.o 2 5E%ECT 5UM)va%or+ A5 soma1ditora 7R&M Livro 2HERE codi.o1ditora \ 2Q

5perador $UM

Somar os va%ores dos %ivros por cada editora 5E%ECT 1DFra5ao" 5UM)L(Fva%or+ 7R&M 1ditora 1D" Livro L( 2HERE 1DFcodi.o \ L(Fcodi.o1ditora GR&UP BY 1DFra5aoQ

M& 3 Comandos

J5I6 'Jun/es)

0eali.a opera/es ,ue envolvem duas ta8elas9 6ormalmente 2a. a PligaoQ entre uma chave estrangeira e a chave prim:rias a ,ue 2a. re2erDncia9 4ipos de Joins+

M& 3 Comandos

e,ui outer

-,ui Join

a condio de =uno F de igualdade9 recupera somente as tuplas ,ue o8edecem I condio de =uno9 -1emplo #+

M& 3 Comandos

$elecione os livros e suas editoras9

SELECT LivroDnome> #ditoraDnome "#$M Livro> #ditora %&E#E LivroD odi.o#ditora H #ditoraD odi.o

-,ui Join

-1emplo !+

$elecione os livros e suas editoras9

SELECT LivroDnome> #ditoraDnome "#$M Livro 1$!N #ditora $N odi.o#ditoraH odi.o

M& 3 Comandos

6o -,ui Join

a condio de =uno no F de igualdade9 recupera somente as tuplas ,ue o8edecem I condio de =uno9 -1emplo+

M& 3 Comandos

$elecione os autores cadastrados depois dos autores do livro PJoo e MariaQ9

SELECT 3utorDnome "#$M 3utor> Livro> #s reve %&E#E LivroDCitulo H "JoBo e Maria& --------AN LivroD odi.o H #s reveD odi.oLivro --------AN 3utorD odi.o Q #s reveD odi.o3utor

5U4-0 Join

recupera tuplas das duas ta8elas mesmo ,ue elas no o8edeam I condio de =uno9 4ipos+

M& 3 Comandos

&-F4 0IG4@ FU&&

&-F4 5U4-0 J5I6

recupera todas as tuplas da primeira ta8ela< mesmo ,ue as no o8edeam I condio de =uno9 -1emplo # '5racle)+

M& 3 Comandos

$elecione os livros e suas editoras< recuperando os livros ,ue no possuem editoras9

SELECT LivroDnome> #ditoraDnome "#$M Livro> #ditora %&E#E LivroD odi.o#ditora 2Z5 H #ditoraD odi.o

&-F4 5U4-0 J5I6

-1emplo ! 'Inter8ase)+

$elecione os livros e suas editoras< recuperando os livros ,ue no possuem editoras9

M& 3 Comandos

SELECT LivroDnome> #ditoraDnome "#$M Livro LE"T $(TE# 1$!N #ditora $N odi.o#ditora H odi.o

0IG@4 5U4-0 J5I6

recupera todas as tuplas da segunda ta8ela< mesmo ,ue as no o8edeam I condio de =uno9 -1emplo # '5racle)+

M& 3 Comandos

$elecione os livros e suas editoras< recuperando as editoras ,ue no possuem livros pu8licados9

SELECT LivroDnome> #ditoraDnome "#$M Livro> #ditora %&E#E LivroD odi.o#ditora H #ditoraD odi.o 2Z5

0IG@4 5U4-0 J5I6

-1emplo ! +

$elecione os livros e suas editoras< recuperando as editoras ,ue no possuem livros pu8licados9

M& 3 Comandos

SELECT LivroDnome> #ditoraDnome "#$M Livro #!'&T $(TE# 1$!N #ditora $N odi.o#ditora H odi.o

FU&& 5U4-0 J5I6

recupera todas as tuplas das duas ta8elas< mesmo ,ue as no o8edeam I condio de =uno9 -1emplo # '5racle)+

M& 3 Comandos

$elecione os livros e suas editoras< recuperando as editoras ,ue no possuem livros pu8licados e os livros sem editora9

SELECT LivroDnome> #ditoraDnome "#$M Livro> #ditora %&E#E LivroD odi.o#ditora 2Z5 H #ditoraD odi.o 2Z5

FU&& 5U4-0 J5I6

-1emplo # '5racle)+

M& 3 Comandos

$elecione os livros e suas editoras< recuperando as editoras ,ue no possuem livros pu8licados e os livros sem editora9

SELECT LivroDnome> #ditoraDnome "#$M Livro "(LL $(TE# 1$!N #ditora $N odi.oLivro H odi.o

$u8consultas

M& 3 Comandos

Uma su8consulta F uma consulta em8utida em uma outra cl:usula $%&9 * su8consulta F sempre e1ecutada primeiro9 5 resultado da su8consulta F utili.ado pela consulta principal9 -1emplo+
$elecione os livros escritos pelo autor L9 SELECT titulo "#$M Livro %&E#E odi.o !N 2SELECT odi.oLivro "#$M #s reve %&E#E odi.o3utor H X5

$u8consultas correlacionada

M& 3 Comandos

Utili.ada para ocasionar um processamento tupla tupla9 * su8consulta re2erencia uma coluna na consulta principal9 Cada su8 consulta F e1ecutada uma ve. para cada tupla da consulta principal9 Passos+
#9 58tFm

a tupla na consulta principal !9 -1ecuta a su8consulta com o valor da o8tido em # >9 Utili.a o's) valor'es) da su8consulta para ,uali2icar a tupla o8tida em #9

$u8consultas correlacionada

-1emplo+

$elecione os livros cu=os preos se=am maiores ,ue a mFdia de preo dos livros de sua editora9

M& 3 Comandos

SELECT titulo "#$M Livro LivroPrin %&E#E valor Q 2SELECT 3[)2valor5 "#$M Livro LivroSub %&E#E LivroSubD odi.o#ditora H LivroPrin D odi.o#ditora5

5perador -7I$4$

Se uma tup%a I encontrada na su2consu%ta/


a procura no continua na su8consulta9 a condio retorna 40U-9 a condio retorna F*&$-9 a 8usca continua na su8consulta9

M& 3 Comandos

Se o va%or no I encontrado na su2consu%ta/


5perador -7I$4$

1#emp%o/

-ncontre os nomes dos autores do livro #!>R9

SELECT 3utorD4ome "#$M 3utor %&E#E #FISCS 2 SELECT O "#$M AN #s reve #s reveDKodi.oLivro H 16845 5 %&E#E 2#s reveDKodi.o3utor H 3utorDKodi.o

M& 3 Comandos

5perador *6G

retorna 40U- se a comparao F verdadeira para pelo menos um valor retornado pela su8consulta9

-1emplo

M& 3 Comandos

$elecione o tCtulo dos &ivros ,ue possua autores nascidos em #ST"9 LivroDtitulo

SELECT

"#$M Livro %&E#E-LivroD odi.o !N 2 SELECT odi.oLivro ------"#$M #s reve ------%&E#E odi.o3utor HAN+ 2 SELECT odi.o "#$M 3utor %&E#E \#3*2nas imento5 H 1907 5 5

5perador *&&

retorna 40U- se a comparao F verdadeira para todos os valores retornados pela su8consulta9

Exemplo

M& 3 Comandos

$elecione os livros ,ue no 2oram escritos pelo Joo9

SELEC titulo F!"M &ivro #$E!E codigo %& ' SELEC D%S %&C 'codigo&ivro) -----------------------"#$M #s reve -----------------------%&E#E odi.o3utor 23-ALL 2 SELECT odi.o "#$M 3utor %&E#E-())E#2nome5 H ())E#2RJoBoS 5 5

5perador U6I56

Fa. a unio das tuplas de duas rela/es resultantes opera/es $-&-C49

-1emplo

M& 3 Comandos

$elecione os livros ,ue custam mais ,ue 0A>"<"" ou ,ue so do ,uarto volume9
SELECT %&E#E (N!$N SELECT odi.o> titulo "#$M Livro %&E#E volume H 4 odi.o> titulo [alor Q 87 "#$M Livro

5perador I64-0$-C4

Fa. a interseco das tuplas de duas rela/es resultantes opera/es $-&-C49

-1emplo

M& 3 Comandos

$elecione os livros ,ue custam mais ,ue 0A>"<"" e ,ue so do ,uarto volume9
SELECT %&E#E SELECT odi.o> titulo [alor Q 87 odi.o> titulo "#$M Livro !NTE#SECT "#$M Livro %&E#E volume H 4

5perador MI6U$

Fa. a di2erena das tuplas de duas rela/es resultantes opera/es $-&-C49

-1emplo

M& 3 Comandos

$elecione os livros ,ue custam mais ,ue 0A>"<"" e ,ue no so do ,uarto volume9
SELECT %&E#E M!N(S SELECT odi.o> titulo "#$M Livro %&E#E volume H 4 odi.o> titulo valor Q 87 "#$M Livro

0egras para U6I56< I64-0$-C4 e MI6U$

* cl:usula $-&-C4 deve selecionar o mesmo nEmero de colunas9 *s colunas correspondentes devem ser o mesmo tipo de dado9 *s linhas duplicadas so automaticamente eliminados9 5s nomes das colunas do primeiro $-&-C4 F ,ue aparecem no resultado9 50D-0 BG somente pode ser usada indicando o nEmero da coluna9 50D-0 BG deve aparecer no 2inal do comando9

M& 3 Comandos

0egras para U6I56< I64-0$-C4 e MI6U$

5s operadores U6I56< I64-0$-C4 e MI6U$ podem ser utili.ados em su8,ueries9 *s colunas $-&-C4s so e1ecutadas de cima para 8ai1o9 H:rios $-4 5P-0*450$ podem ser utili.ados9 Para indicar a se,UDncia de e1ecuo deve se utili.ar se parDnteses9

M& 3 Comandos

Comandos DC&

C&NNECT ermite a cone#o a uma 2ase de dados atravIs de um .erenciadorF DI5C&NNECT Desconecta de uma 2ase de dadosF C&MMIT 4orna permanente todas as a%teraes )como os comandos (KS1A4" D1L141 e C DA41+ !eitas desde o inJcio de uma transaoF R&%%BAC1 Descarta todas as a%teraes !eitas desde o inJcio da transao" ou do G%timo comando 'O--(4 ou AOLL*A'EF

C& 3 De2inio

Comando C5MMI4

4orna permanente todas as a%teraes )comandos (KS1A4" D1L141 e C DA41+ !eitas desde o inJcio da cone#oF 4odos os comandos da DDL causam um 'O--(4 automHticoF 1#emp%o/

C& 3 Comandos

4ornar permanente todas as a%teraes pendentes na sesso corrente 'O--(4Q

Comando 05&&B*CO

Descarta todas as a%teraes )comandos (KS1A4" D1L141 e C DA41+ !eitas desde o inJcio da transao )do G%timo comando 'O--(4 ou AOLL*A'E+F 1#emp%o/

C& 3 Comandos

Descartar todas as a%teraes R&%%BAC1 A

Você também pode gostar