Escolar Documentos
Profissional Documentos
Cultura Documentos
Disciplina:
Banco de Dados I
Linguagem SQL
Professor:
Gustavo Belgini Andretta
ndice
ndice.............................................................................................................................................................2
Linguagem SQL............................................................................................................................................3
Notao para Sintaxes........................................................................................................................................... 3
Tabelas, Colunas e Linhas...........................................................................................................................
! Banco de "ados #$em%lo.........................................................................................................................&
Linguagem de 'ani%ula()o de "ados *nterativa +"'L,...........................................................................-
SELEC................................................................................................................................................................. !
Eliminao de linhas duplicadas..............................................................................................................................................7
Constantes e Expresses..........................................................................................................................................................8
Condies de Procura..............................................................................................................................................................8
Predicados Relacionais............................................................................................................................................................
Predicado !et"een...................................................................................................................................................................
Predicado #$%%....................................................................................................................................................................&'
Predicado %I(E.....................................................................................................................................................................&'
Predicado Exists.....................................................................................................................................................................&&
Predicado I#..........................................................................................................................................................................&&
$tili)ando mais de uma ta*ela na clusula from...................................................................................................................&+
Cha,es....................................................................................................................................................................................&-
.ari,eis /uplas....................................................................................................................................................................&0
1peraes de Con2untos........................................................................................................................................................&0
Exi*indo Resultados 1rdenados............................................................................................................................................&3
4unes de a5re5ao............................................................................................................................................................&3
6 Clusula 76.I#8.............................................................................................................................................................&7
Consultas Complexas.............................................................................................................................................................&8
.un(/es Built0in........................................................................................................................................12
"un#es para manipulao de strings................................................................................................................$%
"un#es para manipulao de n&meros.............................................................................................................'(
"un#es para manipulao de datas.................................................................................................................. '(
"un#es de con)erso.......................................................................................................................................... '$
'odi3icando o Banco de "ados.................................................................................................................22
Inserindo Lin*as: INSE+................................................................................................................................. ''
+emo)endo Lin*as: DELEE............................................................................................................................ '3
,odi-icando Lin*as: ./D0E.......................................................................................................................... '3
*ntrodu()o a ""L 0 Linguagem de "e3ini()o de "ados..........................................................................2&
a1elas 2a1les3 4 Criando5 0lterando e Excluindo.........................................................................................'6
7is#es 27ie8s3...................................................................................................................................................... '9
:ndices 2Indexes3.................................................................................................................................................. '9
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
Linguagem SQL
SQL 9Structured Query Language: trata;se de um con2unto completo de comandos <ue permite ao usurio
acessar um *anco de dados relacional. = uma lin5ua5em no procedural <ue permite di)er apenas o <ue
,oc> <uer e no como fa)er isto.
6 lin5ua5em SQL sur5iu no in?cio do anos 7' como parte do pro2eto @Astem RB no la*oratCrio de
pes<uisa da I!D em @an Eose. Inicialmente foi chamada de @e<uel. Ela sur5iu com o intuito de fornecer
ao FusurioG 9ou desen,ol,edor: uma interface mais ami5,el com os *ancos de dados. 1*te,e 5rande
sucessoB sendo <ue a maioria dos 5erenciadores de *ancos de dados atuais a utili)am.
Em*ora existam inHmeras ,erses do SQLB e cada produto utili)a umaB pode;se di)er <ue as diferenas
che5am a ser secundriasB pois o nHcleoB ou se2aB os principais comandos mantIm o mesmo padro. Em
&83B o 6merican #ational @tandart Intitute 96#@I: pu*licou um primeiro padro SQLB e 5randes
esforos ,em sendo tomados para <ue o padro 6#@I se2a cada ,e) mais o*edecido. 6 primeira 5rande
re,iso do padro @J% foi completa em &+B rece*endo a denominao de SQL2.ContudoB uma no,a
reformulaoB 2 chamada de SQL3B <ue incluir tam*Im o suporte a o*2etosB est em ,ias de ser
completada.
6 SQL esta*eleceu;se claramente como a lin5ua5em padro de *ancos de dados. 6l5uns di)em <ue SQL I
uma lin5ua5em de consultaB entretantoB o seu propCsito inicial foi ampliado e ela permite uma interao
completa com o *ancoB desde a atuali)ao de dadosB criao de ta*elas atI a administrao da *ase de
dados.
Podemos di,idir a lin5ua5em em al5uns mCdulos. @o eles:
K "ata de3inition language +""L, 9%in5ua5em de definio de dados:: 6 SQL fornece comandos
para definioB modificao e remoo de ta*elasB criao de ?ndicesB definio de ,ises. Inclui
tam*Im comandos para especificao de direitos de acessos a ta*elas e ,ises.
K *nteractive data mani%ulation language +"'L, 9%in5ua5em de manipulao de dados interati,a::
6 SQL DML inclui uma lin5ua5em de consulta *aseada na l5e*ra relacional e no clculo
relacional de tuplas 9linhas:. Possui tam*Im comandos para inserirB remo,er e modificar linhas
num *anco de dados.
K *ntegrit7 9Inte5ridade:: 6 SQL possui comandos para se especificar restries de inte5ridadeB como
cha,es primrias e cha,es estran5eiras.
K Transaction control 9Controle de /ransaes:: 6 SQL inclui comandos para especificao de
in?cio e fim de transaesB ,isando a inte5ridade dos dados no momento em <ue ocorrem
atuali)aes.
6 lin5ua5em SQL pode ser utili)ada de duas maneiras diferentes:
K Interati,amente atra,Is de um pro5rama <ue fa) a interface com o *anco de dados. Por exemploB
utili)ando o SQLPlus do Oracle. Ele se encarre5a de manter a conexo com o *anco e o usurio
entra com as instrues SQLB rece*endo as respostas imediatamenteL ou
K Em*utida numa aplicao utili)ando uma lin5ua5em de pro5ramao comumB como PascalB CB
Centura BuilderB Delphi ou Visual BasicB etc.
#esta apostilaB particularmenteB daremos >nfase M DML.
Notao para Sintaxes
#esta apostila utili)amos uma con,eno para descre,er as sintaxes de al5uns comandos e clusulas.
$tili)aremos o comando insert para explicar a notao:
insert into <nome da tabela> | (<C1, C2 ... Cn>) | values (< V1, V2 ... Vn >)
1s s?m*olos FNG 9menor: e FOG 9maior: indicam <ue de,emos su*stituir a frase de indicao por uma
string ,lida para o comando SQL. $tili)ando o exemploB poder?amos su*stituir Nnome da ta*elaO por
4$#CI1#6RI1.
-
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
Juando encontrarmos uma lista do tipo: C&BC+ ... CnB isto indica <ue de,e;se trocar esta se<P>ncia
sim*Clica por uma se<P>ncia de colunas ou ,aloresB dependendo do caso. C&B C+ ... CnB se5uindo o
exemploB poderia ser trocada pelas colunas da ta*ela 4$#CI1#6RI1B ou se2aB C1QR4$#CI1#6RI1B
#1DEB R8B etc.
!locos de comandos limitados pelo s?m*olo FSG 9pipe: so opcionaisB ou se2aB podem ser omitidos sem
in,alidar a expresso. #este casoB a se<P>ncia C&B C+ ... Cn pode ser omitida por estar entre pipes: S 9NC&B
C+ ... CnO: S .
6s outras pala,ras <ue no se encontram entre FN OG ou entre FS SG so o*ri5atCrias 9pala,ras cha,es :. 6s
pala,ras insertB into e )aluesB neste casoB so pala,ras;cha,es.
Tabelas, Colunas e Linas
#os *ancos de dados relacionaisB os dados so arma)enados em relaes ou ta*elas. $m exemplo de
ta*ela poderia conter os dados *sicos dos setores de uma empresaB como seu CCdi5o e seu #ome.
/a*ela de @etores
CCdi5o e #omeB <ue no Dodelo Entidade;Relacionamento 9DER: nCs chamamos de atri*utosB a<ui so
denominados colunas.
$ma linha I a denominao dada a cada instTncia arma)enada na ta*ela de @etoresB ou se2aB 9&''B
.endas: constitui uma linha ou re5istro.
Qa mesma forma <ue os dados so arma)enadosB o resultado de um comando de consulta @J%B tam*Im I
o*tido so* a forma de ta*elasB ou se2aB um con2unto de linhas e colunas.
1 *anco de dados utili)ado para a construo dos exemplos citados nesta apostila foi desen,ol,ido a
partir do exemplo FControle de Esto<ueG mostrado a se5uir atra,Is do seu Pro2eto Conceitual 9Qia5rama
de Entidades e Relacionamentos: e correspondente dia5rama de ta*elas.
0
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
! "anco de #ados $%em&lo
/odos os exemplos desta apostila esto *aseados num *ancos de dados exemploB <ue se prope a
arma)enarB simplificadamenteB os dados de um controle de esto<ue.
6 se5uirB temos o seu Dodelo de Entidade;Relacionamento 9DER:B se5uido pelo seu Qia5rama de
/a*elas 9ou Qia5rama Relacional:.
U
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
3
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
Linguagem de 'ani&ula()o de #ados *nterativa (#'L)
Como citado anteriormenteB esta poro da lin5ua5em SQL cuida de fornecer aos usurios comandos e
funes para a recuperao de informaesB *em como a atuali)ao destas no *anco de dados.
6 instruo utili)ada para consultas na *ase de dados I a selectB en<uanto para atuali)aes so utili)adas
as instrues insertB para insero de linhasB deleteB para remoo de linhasB e updateB para alteraes nas
linhas.
SELECT
6 estrutura *sica da instruo de consulta select consiste em tr>s clusulas:
K select: = usada para listar os atri*utos dese2ados no resultado da consultaB ou se2aB as colunas
re<uisitadas como respostas.Esta listaB alIm de nomes de colunasB pode conter:
K um asterisco 9V:B indicando <ue todas as colunas de,em ser retornadasL
K expressesL
K constantesL
K funesL
K <ual<uer com*inao destesB conectadas por operadores aritmIticos e par>nteses.
K -rom: %ista as ta*elas a serem examinadas na a,aliao da expresso.6s colunas indicadas na
clusula select de,em constar nas ta*elas listadas nesta clusula.
K 8*ere: Consiste de uma condio de procura en,ol,endo atri*utos das ta*elas <ue aparecem na
clusula -rom. = o lu5ar onde se restrin5e ou seleciona <uais linhas de,ero ser retornadas.
$ma consulta t?pica SQL tem a forma:
select < A1, A2, ..., An >
+rom < R1, R2, ..., Rn >
| ,ere P |
onde:
K 6i : representa uma coluna 9atri*uto: de uma ta*ela RiB uma expressoB constante ou funoL
K Ri : representa uma ta*elaL
K P : uma condio de procura <ue utili)a os atri*utos de R&B ...B Rn.
6 clusula 8*ere pode ser omitidaL neste casoB o predicado I tido como sempre ,erdadeiro e todas as
linhas sero retornadas.
6 lista de colunas na clusula select 96&B ..B 6n: pode ser su*stitu?da por um asterisco 9V: para selecionar
todos os atri*utos de todas as ta*elas presentes na clusula -rom.
Considerando uma simples consulta ao *anco de dados exemplo: FJuais os cCdi5os de todos os
funcionrios <ue fi)eram al5uma re<uisio ao esto<ue WGL a instruo correspondente ser:
select COD_FUNCONARO
+rom REQUSCAO
Eliminao de linhas duplicadas
#o exemplo anteriorB caso um funcionrio ti,esse feito mais de uma re<uisioB o cCdi5o dele teria
aparecido mais de uma ,e) na resposta dada pelo 5erenciador de *anco de dados. EntretantoB a eliminao
de linhas repetidas ou duplicadas I poss?,el utili)ando a pala,ra;cha,e distinct depois de select. Ento
podemos reescre,er a consulta anterior da se5uinte maneira:
7
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
select distinct COD_FUNCONARO
+rom REQUSCAO
#ota;se <ue I permitido o uso da pala,ra;cha,e all para especificar explicitamente <ue as duplicaes no
sero remo,idas. $ma ,e) <ue a deteno das duplicaes I o padroB o uso pala,ra;cha,e all pode ser
omitido. 6*aixo se5ue um exemplo utili)ando all:
select all COD_FUNCONARO
+rom REQUSCAO
Constantes e Expresses
Como citado anteriormenteB a lista da clusula select tam*Im pode conter constantes e expresses.
Exemplo utili;ando constante:
select COD_REQUSCAO, 'datada de', DATA
+rom REQUSCAO
6s constantes utili)adas na clusula selectB alIm de stringsB podem ser de <uais<uer outros tiposB tais
como nHmerosB datasB etc.
Exemplo utili;ando expresso:
select COD_REQUSCAO, ( QTDE / QTDE_MNMA ) / 100
+rom PRODUTO
$ma expresso pode conter uma com*inao de par>nteses e das <uatro operaes aritmIticas *sicas:
K adio 9X:
K su*trao 9;:
K multiplicao 9V:
K di,iso 9Y:
Condies de Procura
$ma condio de procura na clusula 8*ere <ualifica o escopo de um consultaB pois especifica as
condies particulares <ue de,em ser encontradas. 6 clusula 8*ere pode ser usada nas instrues selectB
deleteB update.
Cada condio de procura contIm um ou mais predicados conectados por operadores lC5icos orB andB e
notB conforme o exemplo:
,ere (not -1 and -2) and -. or -/
onde: Pi so predicados da clusula 8*ere.
6 se5uinte ordem de preced>ncia I utili)ada ao a,aliar uma expresso numa condio:
&. Primeiro so analisados as expresses dentro de par>ntesesL
+. 1 operador not I analisado antes do andL
-. 0nd antes do orL
0. 1peradores do mesmo n?,el de preced>ncia so analisados da es<uerda para a direita.
$tili)ando a re5ra de preced>nciaB a ordem de a,aliao dos predicadosB do exemplo anteriorB ser:
&. R& Z not P&
8
4uc0Cam%inas 5 Banco de "ados * 5 4ro6eto de Banco de "ados
+. R+ Z R& and P+
-. R- Z R+ and P-
0. R0 Z R- or P0
1nde:
Ri trata;se um resultado *ooleano intermedirio.
Predicados usam operadoresB expressesB e constantes para especificar a condio a ser a,aliada.
1s se5uintes tipos de predicados sero discutidos:
K Relacionais
K BETWEE
K !LL
K L"#E
K E$"STS
K "
Predicados Relacionais
1s predicados relacionais so a<ueles <ue relacionam duas expresses se5undo um operador. 1s
se5uintes operadores so suportados:
!&erador 0igni+icado
= gual
!= Diferente
<> Diferente
> Maior
!> No maior (menor ou igual )
< Menor
!< No menor (maior ou igual )
>= Maior ou igual
<= Menor ou igual
$m predicado relacional se5ue a se5uinte sintaxe: <expresso= <operador= <expresso=.
%o5o a*aixo encontra;se um exemplo utili)ando operadores relacionais. #este exemploB <ueremos
o*ter todos os dados dos funcionrios cu2os salrios so maiores ou i5uais a R[ &.'''B'''.
select *
+rom FUNCONARO
,ere SALARO >= 1000
%em*re <ue o uso do asterisco 9V: na clusula select indica o dese2o de <ue todas as colunas se2am
retornadas.
Predicado Between
1 predicado 1et8een compara um ,alor com uma faixa de ,alores. 1s limites da faixa esto
inclusos. Ele possui a se5uinte sintaxe:
<e%&ress)o> | not | bet,een <e%&ress)o> and <e%&ress)o>
1 exemplo se5uinte mostra uma instruo usando 1et8een: