Professional Documents
Culture Documents
3
AlinguagemSQL..............................................................................................................3
DatabaseBancodeDados(BD) .....................................................................................3
DatabaseManagementSystem(SistemaGerenciadordeDados).....................................3
Terminologia .....................................................................................................................4
Tabelas...............................................................................................................................4
LinhaseColunas ...............................................................................................................4
Acessandoosdados/Chavesprimrias ............................................................................5
PessoaldoBancodeDadosefunesdetrabalho............................................................5
Formandoumatabela ........................................................................................................6
Recuperandoosdadosdeumatabela................................................................................6
ObancodedadosPubs2....................................................................................................7
Escolhendoumbancodedados.........................................................................................7
SimplesrecuperaoSelect/From ................................................................................8
Eliminandoduplicaes.....................................................................................................9
RecuperaoqualificadaSelect/From/Where ............................................................9
RenomeandoColunas......................................................................................................14
Stringsdecaracteresnosresultadosdaquery .................................................................15
Expressesnumricas......................................................................................................15
Valoresnulos ...................................................................................................................18
Select/orderby...............................................................................................................19
Funesagregadas...........................................................................................................20
Lidandocomvaloresnulos..............................................................................................21
Selecto/Groupby .............................................................................................................22
OperaodeunioJOIN..............................................................................................25
JOINSbaseadosemigualdade.....................................................................................26
Aliases .............................................................................................................................27
JOINSnobaseadosemigualdade ..............................................................................27
Self-Joins .........................................................................................................................28
Unindomaisdeduastabelas ...........................................................................................29
Outerjoins(joinsexternos) .............................................................................................29
Escrevendosubqueries ....................................................................................................30
Razesparausarsubqueries............................................................................................31
Subqueries-restries.....................................................................................................31
Mltiplosnveisdeaninhamento.....................................................................................31
Subqueriesretornandomltiplaslinhas...........................................................................32
Subqueriescomoperadoresdecomparao....................................................................33
Exists ...............................................................................................................................34
Unions..............................................................................................................................36
Criandoumatabelaapartirdeoutraexistente ................................................................37
Modificandodadosincluindodados.............................................................................38
Modificandodadosatualizandodados .........................................................................40
Modificandodadosdeletandodados ............................................................................41
Removendodefiniesdedados .....................................................................................42
Objetivos
Aotrminodaapresentao,oleitordeveestaraptoausaralinguagemSQLpara:
Fazerumacessobsico(query)deumBDexistente;
Usarfunesdeconstruopararealizarmanipulaodedados;
ObterinformaoderivadadoBD;
AgregardadosqueforamrecuperadosdeumBD;
AgruparelimitardadosrecuperadosdoBD;
UnirumaoumaistabelaspararecuperardadosdoBD;
Realizarqueriesdedadosusandosubqueries;
Criarumatabelasimpleseincluir,atualizaredeletardados.
AlinguagemSQL
StruturedQueryLanguage(Linguagemdeconsultaestruturada):
LinguagemcomooIngls;
Noinclunenhumarefernciaacaminhosdeacessoexplcitos;
ummododerecuperaremanipulardadosdeumBD;
PodeserusadoporumterminalON-LINE;
PodeserusadonaformadeEMBEDDEDSQLemumprogramadeaplicao;
Possuiumasriecompletadeoperaesdeatualizao;
Usadoparaadministrao.
DatabaseBancodeDados(BD)
umcorpodedadosnoqualexistemrelacionamentosentreoselementosdedados.
DatabaseManagementSystem(SistemaGerenciador
deDados)
SoftwarequefacilitaadefiniodeBDsestruturadoseoarmazenamentoerecuperao
dosdadosdessasestruturas.
Terminologia
Tabela(relao)
o umconjuntodelinhas,ouumconjuntodelistasdevalores,umarelao.
Coluna(atributo)
o Semelhantecampodeumregistro;
o Cadacolunaemcadalinhatemapenasumcontedo;
o Cadacolunasdeumtipodedados.
Linha(dupla)
o Anlogoaumregistrodeumarquivo;
o Todaslinhasdeumatabelatemomesmoconjuntodecolunas.
ChavePrimria(PrimaryKey)
o Umaoumaiscolunascomvaloresquesonicosdentrodatabelaeporisso
podemserusadosparaidentificaraslinhasdessatabela.
Domnio
o Conjuntodevaloresvlidosparaumadeterminadacoluna.
Tabelas
ModeloRelacional
o NumBDrelacionaltodososdadosestoemtabelas;
o Atabelamantmdadosrelacionadosaurnadeterminadaclassedeobjetos.
Tabelassofeitasdelinhasecolunas
o Existesomenteumvalordedadoparacadacolunadecadalinha.
LinhaseColunas
Colunas
o Cadacolunatemumnome.
Cadacolunacontmdadossobreumaspectodatabela;
Cadacolunacontmdadosdeumstipo,porexemplo:
nmerointeiro;
stringdecaracteres;
etc.
Linhas
o Cadalinhacontmdadosrelacionadosaumacitaodatabela;
o Aslinhasnoestoemqualquerordemdeterminada.
Acessandoosdados/Chavesprimrias
Onomedatabela,nomedacolunaelinhadeterminamumtemdedado;
CadalinhapodeseracessadaporumanicaChavePrimria;
Emcadalinha,algumacolunaougrupodecolunasidentificamalinha.
PessoaldoBancodeDadosefunesdetrabalho
UsuriodoBancodeDados
o Recuperaodosdados;
o Atualizaodosdados;
o Inclusodosdados;
o Deleodosdados.
DesenhistadoBancodeDados
o DesenhaoBancodeDados;
o CriaodasTabelas;
o CriaodeRegrasdeTrabalho/Segurana(IntegridadeReferencial).
ProgramadordeAplicaonoBancodeDados
o UtilizaodoembededSQLnacodificao;
o Desenhaeescrevetelasparausurios.
AdministradordoBancodeDados
o Instalaodosistema;
o CpiaseRecuperaes;
o Performanceesegurana(Ex:Senha).
Formandoumatabela
ODBAoudesenhistacriarastabelasusandoosseguintespassos:
CriaaTabela
createtablestores
(stor_id
notnull,
stor_name
varchar(40)
notnull,
stor_address
varchar(40)
null,
city
varchar(40)
null,
state
char(2)
null,
country
varchar(12)
null,
postalcode
char(5)
null,
dayterms
varchar(12)
null)
char(4)
go
Urnavezqueatabelacriadaosdadospodemserinseridos.
Incluiosdados
Exemplo:
insert into stores (stor_id stor name stor_address, city, state,
country,postalcode,dayterrns)
values (7066, Barnums , 567 Pasadena Ave, Tustin
CA,USA,92745,Net30)
Recuperandoosdadosdeumatabela
Recuperandoodado
select*
fromstores
Convenodenomes
database.owner.table_name.column_name
Exemplo:
pubs2.bob.stores.stor_id;
pubs2.fred.stores.stor_name.
ObancodedadosPubs2
Titles
Authors
Salesdetail
Titleauthor
Royched
Publishers
Discounts
Stores
Blurbs
Sales
Au_pix
Informaesbsicasdecadalivro
Authors
Informaessobreautores
Titleauthor
Tabelarelacionalusadaparaligarastabelasauthorsetitle
Publisher
Informaessobreeditores
Stores
Informaessobrelojasquevendemnossoslivros
Sales
Resumodevendasparaaslojas
Salesdetail
Vendasdetalhadasdettulosparaaslojas
Roysched
Escalademonstrandoopercentualderoyaltiespagvelemcadattulo
Discounts
Umatabeladedescontosvariadosdisponveis
Blurbs
Pequenabibliografiadosautores
Au_pix
Imagemdosautores
Escolhendoumbancodedados
Paraconectar-seaumBancodeDados
Sintaxe:
usenome_do_banco_de_dados
SimplesrecuperaoSelect/From
UsadopararecuperardadosdeumBancodeDados
o select,especificaacolunaquevocquerrecuperar;
o from, especfica a tabela ou as tabelas das quais voc deseja recuperar
dados.
Sintaxesimplificada:
o select:lista_do_select;
o from:lista_de_tabelas;
Todasascolunas
o select*
fromstores
(Listatodasasinformaesdatabelastores).
Umacoluna
o selectstor_narne
fromstores
(Listaapenasosnomesdaslojastabelastores)
Maisdeumacoluna
o selectstor_name,city,state
fromstores
(Listanomedaloja,acidadeeoestadodatabelastores)
Reordenandocolunas
A ordem das colunas no comando select determina a ordem em que as colunas
apareceronoresultado.
o selectcity,stornamc,state
fromstores
(Listaacidade,onomedalojaeoestadodatabelastores)
Eliminandoduplicaes
Distinct:palavrachavequeeliminacolunasduplicadasnasada
Sintaxesimplificada:
o select[distinct]lista_do_select
fromlista_de_tabelas
Exemplo:
o (semdistinct)
selectstate
fromstores
(Listaosestadosdatabelastores)
o (comdistinct)
selectdistinctstate
fromstores
(Listaumaocorrnciaparacadaestadoexistentenatabelastores)
RecuperaoqualificadaSelect/From/Where
where:clusulaquedeterminaexatamentequelinhasdevemserrecuperadas.
Sintaxesimplificada:
o selectlista_do_select
fromlista_de_tabelas
wherecondies_de_pesquisa
Condiesnaclusulawhere
o Operadoresdecomparao(=,>,<);
o Intervalos(betweenandnotbetween);
o Caracteressemelhantes(likeandnotlike);
o Valoresdesconhecidos(isnullandisnotnull);
o Listas(inandnotin);
o Combinaes(and,or).
not pode negar qualquer expresso booleana e palavras chave, tais como like,
null,between,ein.
operadoresdecomparao
=
Iguala
>
Maiorque
<
Menorque
>=,!<
Maiorouiguala
<=,!>
Menorouiguala
!=,<>
Diferente
o Nacomparaodedatas,<significaantese>significadepois;
o Use aspas simples ou duplas para dados char, varchar e datetime, por
exemplo;
o Alfabticos de caixa baixa so maiores que alfabticos de caixa alta e
alfabticosdecaixaaltasomaioresquenmeros.
Exemplo:
o (igual)
selectstor_name,state
fromstores
wherestate=CA
(ListaaslojasqueselocalizamnaCalifrnia)
o (noigual)
selectstor_name,city,state
fromstores
wherestate!=CA
(ListaaslojasquenoselocalizamnaCalifrnia)
o (maiorque)
selectstor_id,stor_name
fromstores
wherestor_id>7066
(Listaoscdigosenomesdaslojasquepossuemcdigomaiorque7066)
o (menorque)
selectcity,stor_name
fromstores
wherecity<Remulade
(Listaosnomesdaslojaseascidadesdaslojasqueselocalizamemcidades
cujonomealfabeticamenteinferioraRemulade)
between: palavra chave usada para especificar uma srie que compreende, de um
valormaisbaixoatumvalormaisalto,paraapesquisa.
Exemplo:
selectstor_idstor_name,city,state
fromstores
wherestor_idbetween7067and8000
(Listaaslojasquepossuemoscdigosentre7067e8000inclusive)
notbetween:palavrachaveusadaparaexcluirosdadosforadasrieentreomais
baixoeomaisaltovalorespecificado(Foradointervalo).
Exemplo:
selectstor_id,stor_name,city,state
fromstores
wherestor_idbetween7067and8000
(Listaaslojasquepossemoscdigosforadointervalo7067e8000.)
like: palavra chave usada para selecionar linhas que contm campos que se
assemelhamemumadeterminadaporodostring.
o usadosomentecomchar,varcharedatetime;
o Podeusarcoringas
o Significadodoscoringas
% (porcentagem), qualquer string de zero ou mais
caracteres;
_(anderscore),qualquercaracteresimples;
Exemplo:
o Like
Selectstor_name
Fromstores
Wherestor_namelikeB%
(listaosnomesdaslojascujosnomescomecemcomaletraB)
o NotLike
Selectsor_name
Fromstores
Wherestor_namenotlikeB%
(listaosnomesdaslojascujosnomesnocomecemcomaletraB)
o Especificandoonmerodecaracteres
Selectstor_id,stor_name
Fromstores
Wherestor_idlike70__
(listaaslojascujaidentificaopossuanasduasprimeirasposies70)
o Intervalodecaracteres
Selectstor_name
Fromstores
Wherestor_namelike[D-F]%
(listaosnomesdaslojascujosnomescomecemcomaletraD,EouF)
o Foradointervalodecaracteres
Selectstor_name
Fromstores
Wherestor_namelike[^D-F]%
(listaosnomesdaslojascujosnomesnocomecemcomaletraD,EouF)
o Doisintervalos
Selectstor_name
Fromstores
Wherestor_name[A-C,G-Z]%
(listaosnomesdaslojascujosnomescomecemcomaletraA,B,CoudeG
Z)
in,notin:palavrachavequepermitequevocselecionevaloresqueseassemelham
ounocomqualquervalordeumalistadevalores.
Exemplo:
o in
selectstor_name,city,state
fromstores
wherestatein(CA,WA)
(listaaslojasqueserealizamemWashingtonounaCalifrnia)
o notin
selectstor_name,city,state
fromstores
wherestatenotin(CA,WA)
(listaaslojasquesenolocalizamemWashingtonenemnaCalifrnia)
and: une duas os mais condies. Retorna resultados somente quando todas
condiessoverdadeiras.
Exemplo:
o selectstor_name,city,state
fromstores
wherestate=CA
andcity=Fremont
(listaaslojaslocalizadasnacidadedeFremontnoestadodaCalifmia)
or: conecta duas ou mais condies. Retoma resultados quando qualquer uma das
condiesverdadeira.compreensivo.
Exemplo:
o selectstor_name,city,state
fromstores
wherestate=CA
orcity=Portland
(listaaslojaslocalizadasnacidadedePortlandounoestadodaCalifrnia)
Quandomaisdeumoperadorlgicousado,aordemnaqualelessoexecutados
:
not
and
or
Exemplos:
o semparnteses
selecttitle_id,type,advance
fromtitles
wheretype=businessor
type=psychologyor
advance>5500
(lista os livros da categoria business, ou categoria psychology, ou com
adiantamentomaiorqueU$5500)
o comparnteses
selecttitle_id,type,advance
fromtitles
where(type=businessor
type=psychology)and
advance>5500
(lista os livros da categoria business, ou categoria psychology, e desses
somenteosquepossuemadiantamentomaiorqueU$5500)
RenomeandoColunas
Sintaxesimplificada:
o selecttitulo_de_coluna=nome_de_coluna(,...)
Ateno:Afaltadeumavrgulanalistadeseleopodecausarqueaseguintecoluna
sejatratadacomoumttulodecolunaaoinvsdeumnomedecoluna.
Exemplo:
o selectCPF=au_id,SOBRENOME=au_lname
fromauthors
wherestate=CA
Stringsdecaracteresnosresultadosdaquery
Adicionandostringsdecaracteresclusulaselect.
Exemplo:
o selectONOMEDALOJA,stor_name
fromstores
wherestor_id=7067
o selectTOTALDEVENDAS,total_sales,DOLIVRO,title_id
fromtitles
wheretypepsychology
o selectONOMEDOEDITOR,pub_id,pub_name
frompublishers
Expressesnumricas
Operadoresaritmticos
Smbolo
Operao
Adio
Subtrao
Multiplicao
Diviso
Mdulo
podemserusadosemqualquercolunanumrica;
usadosemqualquerclusulaquepermitaumaexpresso;
mdulonopodeserusadoemcolunasdevaloresmonetrio.
o Adio
selectadvance,price,advance+price,title_id
fromtitles
wheretypebusiness
o Subtrao
selectadvance,price,advance-price,title_id
fromtitles
wheretype=business
o Multiplicao
selecttitle,RECEITA=price*total_sales
fromtitles
wheretype=business
o Multiplicao(expressousadanaclusulawhere)
selecttitle,RECEITA=price*total_sales
fromtitles
whereprice*total_sales>8000
o Multiplicao(mltiplascondies)
selecttitle,RECEITA=price*total_sales
fromtitles
whereprice*total_sales>8000and
type=business
o Diviso
selecttitle,VENDASMENSAIS=total_salles/12
fromtitles
wheretype=business
o Mdulo
selecttotal_sales,total_sales%2,title_id
fromtitles
wheretotal_sales%2=1
FunoConvert
o Converteexpressesdeumtipodedadosparaoutro;
o Usadonalista_do_selectenaclusulawhere;
o Uma expresso char que contenha alfabticos, no pode ser convertida
paraumint.
Sintaxesimplificada:
o convert(tipo_de_dados,expresso)
o errotiposdedadosincompatveis
selectstor_id*10
fromstores
o correto
selectconvert(int,stor_id)*10
fromstores
Com dados monetrios e qualquer outro tipo, tais como ponto flutuante, um
smbolo de dlar ($) pode opcionalmente ser usado na frente do outro tipo de
modoaexecutarumaoperao.(*3)
Exemplo:
o selectprice*$1.10,title
fromtitles
wheretype=business
Valoresnulos
umvalornuloimplicaemumvalordesconhecido
o umvalornulonoimplicaemzerosoubrancos,noexistevalordesignado;
o isnull(=nul)podeserusadoparaselecionarcolunasquecontmvalores
nulos.
Umvalornulonuncaigualaoutrovalornulo.
Algumascolunassodefinidasparapermitirvaloresnulos.
Operaesenvolvendonulosresultamemnulos.
Exemplo:
o selecttitle,price
fromtitles
wheretype=popular_compand
priceisnull
o selecttitle_id,advance
fromtitles
wheretype=popular_compand
price=null
selecttitle_id,advance
fromtitles
whereadvanceisnotnull
o selecttitle_id,advance
fromtitles
whereadvance<5000
o selecttitle_id,advance
fromtitles
whereadvance<5000or
advanceisnull
o operaoenvolvendonulosresultandonulos
selecttitle_id,advance,price,advance/price
fromtitles
wheretypenotin(business,psychology,trad_cook)
Select/orderby
Aclausulaorderbysorteiaosresultadosdapergunta(emordemascendentepordefault)
itensnomeadosnessaclusulanoprecisamaparecernoselect_list;
Usandoorderby,nulossolistadosprimeiro.
Sintaxesimplificada:
o select[distinct]lista_do_select
fromlista_de_tabelas
[wherecondies_de_pesquisa]
[orderby{coluna/expresso}[asc/dsc][,...]]
Exemplo:
o selectstor_namestate
fromstores
orderbystate,stor_name
o selectstor_name,state
fromstores
orderbystate,stor_namedesc
o ordenandoporcolunaderivada
select((total_sales/12)*1.10),title_id
fromtitles
wheretype=psychology
orderby((total_sales/l2)*1.10)
o ordenandoporcolunanoconstantenoselect
selecttitle,price
fromtitles
wherepub_id=0736
orderbypubdate
o nulosaparecendoprimeiro
selecttitle_id,type,price
fromtitles
wheretype=popular_comp
orderbyprice
Funesagregadas
Palavrachavedafuno
Valorcalculado
SUM
Total
AVG
Valormdio(mdia)
MIN
Valormnimo
MAX
Valormximo
COUNT(*)
Nmerodelinhas
COUNT
Nmerode(nicos)
([DISTINCT]nome_da_coluna)
Valoresvlidos
Agregadosignoramvaloresnulos(excetocount(*));
SUMeAVGstrabalhamcomvaloresnumricos;
Sumacolunaretornada(seaclusulagroupbynousada);
Nopodemserusadosnaclusulawhere;
Podeseraplicadoatodasascolunasdeumatabelaousubconjuntodetabelas
Sintaxesimplificada:
o selectfuno_agregada([distinct]expresso)
fromlista_de_tabelas
[where...condies]
COUNT:contmasomadonmerodecolunasquesatisfazemacondio
o selectcount(*)
fromtitles
o selectcount(advance)
fromtitles
MAX:determinaomaiorvalor
o selectmax(price)
fromtitles
MIN:determinaomenorvalor
o selectmin(price)
fromtitles
SUM:determinaaquantidadetotaldevaloresemdeterminadacoluna
o selectsum(total_sales)
fromtitles
wheretype=psychology
AVG:determinaamdiadosvaloresemdeterminadacoluna
o selectavg(advance)
fromtitles
maisdeumafunoagregadapodeserusadanaclusulaselect
Exemplo:
o selectmin(advance),max(advance)
fromtitles
Palavrachavedistinct
o OpcionalcomSUM,AVG,eCOUNT;
o NopermitidacomMIN,MAXeCOUNT(*);
o PermitidacomCOUNT(nome_de_coluna);
o Usadosomentecomnomesdecolunas,enocomexpressesaritmticas.
Exemplo:
o selectavg(distinctprice)
fromtitles
wheretype=business
Resultado=11.64
o selectavg(price)
fromtitles
Resultado=13.73
o selectcount(distincttype)
fromtitles
Lidandocomvaloresnulos
Tomandoumvalornuloasercontadonumafunoagregada.
isnull(expresso,valor)
o selectavg(price)
fromtitles
o selectavg(isnull(price,$9.98))
fromtitles
(paralivrosquenopossuempreo,assumirU$9.98)
o selectprice*2
fromtitles
o selectisnull(price,0)*2
fromtitles
Selecto/Groupby
Aclusulagroupbydividedadosemgrupos
Normalmenteusadocomumafunoagregadanalista_de_select.
Todososvaloresnulosnacolunagroupbysotratadoscomoumgrupo.
Sintaxesimplificada:
select[distinct]lista_de_select
fromlista_de_tabelas
[wherecondies_de_pesquisa]
[groupby[all]expresso_agregada[,]]
[orderbycoluna/expresso[asc|desc][,...]]
Exemplos:
(usocorreto)
selecttype,avg(price)
fromtitles
groupbytype
(usocomorderby)
selectavg(price),type
fromtitles
groupbytype
orderby(price)
selectstor_id,sum(qty)
fromsalesdetail
groupobystor_id
Aclusulawhereeliminalinhasantesdefazeragrupamentos
Aplicaumacondiotabelaantesqueosgrupossejamformados;
Noaceitarumafunoagregada.
Sintaxesimplificada:
select[distinct]lista_do_select
fromlista_de_tabelas
[wherecondies_de_pesquisa]
[groupby[all]expresso_agregada[,]
Exemplos:
selecttitle_id,sum(qty)
fromsalesdetail
wherediscount>50
groupbytitle_id
(Quaisoslivrosqueforamvendidoscomdescontomaiorque50%?)
Oqualificadorallpodeserusadocomumgroupby
Incluinoresultadoosgruposdeterminados,maisosgruposquenotemlinhas
quesatisfizeramacondiowhere;
O valor agregado ser nulo para as linhas que no satisfizeram a condio
where.
Exemplo:
selecttitle_id,avg(price)
fromtitles
wheretypein(business,popularcomp)
groupbytype
selecttype,avg(price)
fromtitles
wheretypein(business,popular_comp)
groupbyalltype
Aclusulahavingdeterminacondiesparaclusulagroupby
Aplicaumacondioaosgruposdepoisqueelesforamformados.
Sintaxesimplificada:
select[distinct]lista_do_select
fromlista_de_tabelas
[wherecondies_de_pesquisa]
[groupby[all]expresso_agregada[,...]]
[havingcondies_de_pesquisa]
[orderby{coluna|expresso}[asc|desc][,...]]
selecttitle_id,pubdate,total_sales,price
fromtitles
wheretotal_sales>4000
havingpubdate>06/12/85
(Lista todos os livros publicados depois de 06/12/85 e que venderam mais de 4000
cpias)
ou
selecttitle_id,pubdate,total_sales,price
fromtitles
wheretotal_sales>4000
andpubdate>06/12/85
selecttitle_id,sum(qty)
fromsalesdetail
groupbytitle_id
havingsum(qty)>50
(Quaisoslivrosquevenderammaisde50cpias?)
selecttitle_id,sum(qty)
fromsalesdetail
wherediscount>50
groupbytitle_id
havingsum(qty)>50
(Quaisoslivroscomdescontomaiorque50%quevenderammaisde50cpias?)
OperaodeunioJOIN
Ojoinumaoperaodemulti-tabelas
Select:onomedacolunadeveserprecedidopelonomedatabela,seonomeda
coluna for ambguo, isto , se mais de uma coluna na tabela especificada na
clusulafromtiveromesmonome.
From:duasoumaistabelaslistadasnocomandofromindicamaoSQLserver
queumauniodesejada.
tabelaspodemestarlocalizadasnomesmoBDouemdiferentesBDs.
Where: colunas so comparadas; elas devem ter valores similares (valores
puxadosdomesmodomnio).
noprecisamteromesmotipodedados;mastemdeserdeumtipoqueo
SQLserverautomaticamenteconverta.
(int,smallint,tinyint,decimalrealorfloat);
(char,varchar,datetimeandsmalldatetime)
Valoresnulosnuncaseunem
Colunasnacondiodejoinnoprecisamserdefinidasnaclusulaselect.
Sintaxesimplificada:
select[tabela],nome_de_coluna,[,...]
fromlista_de_tabelas
[wherecondies_de_pesquisa]
Exemplo:
selectpub_name,publishers.pub_id,titles.title_id
frompublishers,titles
wherepublishers.pub_id=titles.pub_id
JOINSbaseadosemigualdade
Baseadoemumaigualdade,entreosvaloresnascolunasespecificadas
Exemplo:
selectstores.stor_id,qty,title_id,stor_name
fromsalesdetail,stores
wherepublishers.stor_id=store.stor_id
(Quaisasvendasdecadaloja?)
(usandofunoagregadaegroupby)
selectstor_name,salesdetail.stor_id,sum(qty)
fromsalesdetail,stores
wheresalesdetail.stor_id=stores.stor_id
groupbysalesdetail.stor_id,stor_name
(Quantoslivroscadalojavendeu?)
(ordenandoporcolunaderivada)
selecttitles.title_id,qty,price,PRECOTOTAL=price*qty
fromtitles,salesdetail
wheretitles.title_id=salesdetail.title_id
orderbyprice*qty
Aliases
Funoqueforneceummodoabreviadoparareferenciartabelasnumsimplescomando
SQL.
Sintaxesimplificada:
selectlista_de_select
fromnome_de_tabelaalias_1,nome_de_tabelaalias_2
wherealias_1.nome_de_coluna=alias_2.nome_de_coluna
Exemplo:
selectt.title_id
fromtitlest.titleauthorta
wheret.title_id=ta.title_id
andau_id=409-56-7008
(Quaisoslivrosescritospeloautorcomcodigo409-56-7008?)
JOINSnobaseadosemigualdade
Operadoresdecomparaousados.
>
maiorque
<
menorque
>=
maiorigualque
<=
menorigualque
Exemplo:
selectESTADODOEDITOR=p.state,au_lname,au_fname,a.state
frompublishersp,authorsa
wherea.state>p.stateandpub_name=NewAgeBooks
(Queautoresmoramnumestadocujoonomealfabeticamentemaiorqueoestadoda
editoraNewAgeBooks?)
Self-Joins
Unindoumatabelaelamesma
unelinhasdeumatabelaaoutras(oumesma)linhasnessatabela
Maisdeumpardecolunaspodeserusadoparaespecificaracondiojoin.
Existemautoresquetenhamomesmosobrenome?
joinnoigualnormalmentefeitocomumself_join
Duascolunassousadasnacondio(incompleto)
(incompleto)
selectau1.au_lname,au1.au_fname,au1.city
fromauthorsau1,authorsau2
whereau2.au_lname=Karsenandau2.au_fname=Livia
andau1.city=au2.city
(QueautoresmoramnamesmacidadequeLiviaKarsen?)
(incompleto)
selecta1.au_lname,a1.au_fname
fromauthorsa1,authorsa2
wherea1.au_lname=a2.au_lname
selecta1.au_lname,a1.au_fname
fromauthorsa1,authorsa2
wherea1.au_id!=a2.au_id
(completoecorreto)
selecta1.au_lname,a1.au_fname
fromauthorsa1,authorsa2
wherea1.au_lname=a2.au_lnameand
a1.au_id!=a2.au_id
(queautorespossuemomesmosobrenome?)
Unindomaisdeduastabelas
Aclusulafromdevelistartodastabelasenvolvidas.
Aclusulawheredevelistarcondiesjoinssuficientesparareunirtodasas
tabelasemcadeia.
Vocnoprecisamostrarascolunasdecadatabelaenvolvidanojoin
Exemplo:
selectau_lnane,au_fnarne,titles.title_id,title
fromauthors,titleauthor,titles
whereauthors.au_id=titleauthor.au_id
andtitleauthor.title_id=titles.title_id
(Listeosautoresdecadalivro.)
Outerjoins(joinsexternos)
Incluilinhasnocombinadasnoresultado,comotambmascombinadas.
Operadoresdoouterjoin(*6)
*= Inclui no resultado todas as linhas da primeira tabela, e no somente
aquelasquecombinaram,nascolunasreunidas.
=* Inclui no resultado todas as linhas da segunda coluna, e no somente
aquelasquecombinaram,nascolunasreunidas.
Sintaxesimplificada:
selectlista_do_select
from [[banco_de_dados.]owner.]{tabela1},[[banco_de_dados.]
owner.]{tabela2}[[...]]
[wheretabela1.nome_de_coluna{*=|=*}tabela2.nome_de_coluna]
Exemplo:
selectstor_name,sum(qty)
fromsalesdetail,stores
wherestores.stor_id*=salesdetail.stor_id
groupbystor_name
(assumaqueestasendoabertaumanovaloja,queaindanovendeu,listeavendatotal
decadalojaincluindoestanovaloja)
Escrevendosubqueries
Umsubqueryumcomandodeseleo,usadocomoumaexpresso,comoparte
deoutroselect,update,insertoucomandodelete.
O subquery resolvido e os resultados so substituidos para dentro do query
maisexterno.
Se a clusula where do query mais externo inclui o nome da coluna, a coluna
devesercompativelcomacolunanomeadanoselectdosubquery
Subquery no pode ter order by ou clusula compute ou palavra chave
into
Sintaxesimplificada:
selectlista_do_select
fromlista_de_tabelas
[wherecondio_de_pesqusa]=
(selectlista_do_select
fromlista_de_tabelas
[wherecondio_de_pesquisa]
[groupbyexpresso_agregada]
[havingcondio_de_pesquisa]
[groupbyexpresso_agregada]
[havingcondio_de_pesquisa]
[orderby{{tabela.}coluna|expresso}[asc|desc][,]
[bycoluna[,]]
Razesparausarsubqueries
Muitasuniespodemserestabelecidascomumsubquery
s vezes, mais fcil entender do que um join que realiza a mesma
proposta.
Executaalgumastarefasquedeoutromodoseriamimpossveis.
Subqueries-restries
Alista_do_selectdosubquerypodeincluirsomenteumnomedecoluna(exceto
para o subquery existente), isto , mais de um valor de coluna no pode ser
retornado.
A palavra chave distinct no pode ser usada com subqueries que tenham a
clusulagroupby.
Asclusulaswhere,havingdeumcomandoselect,insert,updateou
deletepodemconterumsubquery.
Somente colunas da lista do select do comando mais atual (ltimo comando)
podemsermostradas.
Mltiplosnveisdeaninhamento
Umsubquerypodeconterumoumaissubqueries
Noexistenvelmximodeaninhamento
Exemplo:
(doisnveis)
selecttitle
fromtitles
wheretitle_id=(selecttitle_id
fromtitleauthor
whereau_id=(selectau_id
fromauthors
whereau_lname=Blotchet-Halls))
(QuelivrosBlotchet-Hallsescreveu?)
selectpub_name,pub_id
frompublishers
wherepub_id=(selectpub_id
fromtitles
whereprice=(selectmax(price)fromtitles)
(queeditorpublicouolivromaiscaro?)
Subqueriesretornandomltiplaslinhas
Subqueriesusadascominornotinaoinvsdeumaigualdadenaclusula
where,poderetomarzerooumaisvalores.
Sintaxesimplificada:
selectlista_do_select
fromlista_de_tabelas
[wherecondies_de_pesquisa][not]in(subquery)
Exemplo:
selectdistinctstor_id,title_id
fromsalesdetail
wherestor_idin(selectstor_id
fromstores
wherestate=CA)
(QuelivrosforamvendidosnaCalifrniaCA?)
selectdistinctstor_name
fromstores
wherestor_idin(selectstor_id
fromsalesdetail
wheretitle_idin(selecttitle_id
fromtitles
wheretitle=
TheBusyExecutivesDatabaseGuide))
(QuelojasvenderamolivroTheBusyExecutivesDatabaseGuide?)
selectdistinctpub_name
frompublishers
wherepub_idnotin(selectpub_id
fromtitles
wheretype=business)
(Queeditoresnoeditaramlivrosdacategoriabusiness?)
Subqueriescomoperadoresdecomparao
Osubquerydeveretornarsumvalor,aocontrriodeveexistiralgumerro
Sintaxesimplificada:
selectlista_do_select
fromlista_de_tabelas
[whereexpresso{=|!=|<|>|<=|>=}]
(subquery)
Exemplo:
(maiorque)
selecttitle_id,price
fromtitles
whereprice>(selectavg(price)fromtitles)
(Quelivroscustammaisqueamdiadetodososlivros?)
selectdistincttitle,advance
fromtitles
whereadvance>(selectmin(advance)
fromtitles,publishers
wheretitles.pub_id=publishers.pub_id
andpub_name=AlgodataInfosystems)
(Que livros tem adiantamento superior ao adiantamento mnimo dado pela editora
Algodatalnfosystems?)
selectdistincttitle,advance
fromtitles
whereadvance>(selectmax(advance)
frompublishers,titles
wheretitle.pub_ib=publishers.pub_id
andpub_name=AlgodataInfosystems)
(Que livros tem adiantamento superior ao adiantamento mximo dado pela editora
Algodatalnfosystems?)
Exists
Existsandnotexists,usadoparadoisconjuntosdeoperaesdeteoria
exists-interseco,todoselementosquepertencemaambososconjuntosde
origem.
notexists-diferena,oselementosquepertencemsomenteaoprimeirodos
doisconjuntos.
Palavrachaveexistsnoprecedidaporumnomedecoluna.
True selinhassoretomadas
False selinhasnosoretornadas
*notexists(subqueries)
True selinhasnosoretornadas
False selinhassoretornadas
Sintaxesimplificada:
selectlista_do_select
fromlista_de_tabelas
[where{exists|notexists}]
(subquery)
(intersecoentreautoreseeditores)
selectdistinctcity
fromauthors
whereexists(select*
frompublishers
whereauthors.city=publisliers.cty)
(Queautoresmoramnamesmacidadequeeditores?)
(diferenaentreautoreseeditores)
selectdistinctcity
fromauthors
wherenotexists(select*
frompublishers
whereauthors.cty=publishers.city)
(Queautoresnomoramnamesmacidadequeeditores?)
Unions
Deixavoccombinarosresultadosdemaisdeumselect
Exemplo:
selectcity,statefrompublishers
union
selectcity,statefromstores
union
selectcity,statefromstores
orderbystate,city
Descartaaslinhasduplicadas(anoserquevocuseaopoall)
Sintaxegeral:
Query1
[union[all]Queryn]
[orderbyclusula]
[computeclusula]
ondeQuery1:selectlista_do_select
[intoclusula]
fromlista_de_tabelas
[whereclausula]
[groupbyclusula]
[havingclusula]
ondeQueryn:selectlista_do_select
fromlista_de_tabelas
[wbereclusula]
[groupbyclusula]
[havingclusula]
QualquernmerodeoperadoresdeuniespodemaparecernocomandotransactSQL.
Operadoresuniosoexecutadosdaesquerdaparadireita.
Porexemplo:
Xunionall(YunionZ)
noequivalentea
(XunionallY)unionZ
Useparntesesparacontrolaraordemdeexecuo
Criandoumatabelaapartirdeoutraexistente
Apalavrachaveintousadaparacriarumatabelaapartirdeoutraexistente.
Sintaxesimplificada:
selectlista_do_select
[intotabela]
fromlista_de_tabelas
[wherecondio_de_pesquisa]
Exemplo:
(criaodetabelacarregandoosdados)
select*
intonew_titles
fromtitles
(criaodetabelanocarregandoosdados)
select*
intonew_pubs
frompublishers
where1=2
(criaodetabelacomcargalimitadadedados)
select*
intopub_1389_titles
fromtitles
wherepub_id=1389
(criaodetabelaeliminandocolunas)
selectpub_name,pub_id
intoshort_pubs
frornpublishers
Modificandodadosincluindodados
Aclusulainsertadicionadadosnumatabelaexistente
OSQLserververificaemtempodeentradadedados,seovalorinserido
dotipodedadoscorreto.
Se o valor maior (muito longo) o SQL trunca para o tamanho
especificado;nodamensagemdewarning(aviso).
Algumascolunassodefinidasparapermitirvaloresnulos.
Paraqueumacolunapermitavaloresnulos,especifiquenullparainserir
umvalonulo.
Sintaxesimplificada:
insert[into]tabela
[(lista_de_colunas)]
{values(constantes)|comando_select}
(Adicionaumalinhasimples.)
Exemplo:
(linhacompleta)
insertintonew_pubs
value(9945,MysteriesGalore,KansasCity,KS)
(inserindoumaaspa)
insertintonew_pubs
value(4444,ObryanPublishingHouse,Washington,DC)
Qualquercolunanoincludadevepermitirnulos.
Exemplo:
(linhaparcial)
insertintonew_pubs(pub_id,pub_nane)
values(3333,Jardinsmc)
Sealistadecolunasomitida,osvaloresdevemestarnamesmaordemqueos
nomesdecolunanocomandocreatetable.
(inserindodadosapartirdeoutratabela)
insertintonew_pubs(pub)id,pub_name,city,state)
selectpub_id,pub_name,city,state
frompublisher
(inserindousandoumasubquerie)
insertintonew_pubs
select*
frommass_publishers
wherepub_idin(selectpub_id
frommass_publishers
wherecity=Boston)
Modificandodadosatualizandodados
Aclusulaupdatealteraovalordeumaoumaiscolunasemumatabela(altera
osvaloresdosdadosnaslinhasexistentes,colunaporcoluna).
setclusulaquedeterminaascolunasaseremalteradas
fromclusulaquedeterminadequetabelasosdadosseoriginam,semaisde
umatabelausadaparadeterminarovalordeumanovacoluna.
whereclusulaquedeterminaquelinhasdevemseralteradas.
nopodemseralteradasvriastabelasnomesmocomandoupdate.
Sintaxesimplificada:
updatetabela
setnome_de_coluna={expresso|null}
[,nome_de_coluna={expresso|null}]...
[fromtabela1,tabela2,...]
[wherecondies_de_pesqusa]
(alteraodedadosbaseadoemconstantes)
updatenew_ubs
setpub_name=NewPublishersName
wherepub_name=NewAgeBooks
(alteraodedadosparaaslinhasquesatisfaamacondio)
updatenew_titles
setcontract=0
wherepub_id=1389
(alteraoparatodasaslinhasincondicionalmente)
updatenew_titles
setadvance=0
(alteraodosdadosdeumatabelabaseadosnosdadosdeoutratabela)
updatenew_titlies
setcontract=0
fromnew_titles,publishers
wherenew_titles.pub_id=publishers.pub_idand
pub_name=NewAgeBooks
(alteraousandosubquety,)
updatenew_titlies
settotal_sales=(selectsum(qty)
fromsalesdetail
wheretitle_id=BU1032)
Modificandodadosdeletandodados
Aclusuladeleteexcluidadosselecionadosdeuniatabela.
Apalavrachavefrom(depoisdodelete)opcional
A palavra chave from (sintaxe de extenso) permite que dados sejam
deletadosdeumatabelabaseadosemdadosguardadosemoutrastabelas.
Aclusulawheredeterminaquelinhasserodeletadas;seomitidatodasas
linhasserodeletadas.
Sintaxesimplificada:
delete[from]tabela
[fromtabela][,...]
[wberecondies_de_pesquisa]
Exemplo:
(removedadosdeumatabelabaseadosemumaconstante)
deletefromnew_pubs
wherepub_name=Mysteri
deletefromnew_titles
whereprice>$15
(removedadosdeumatabelabaseadosemoutratabela)
deletenew_titles
fromnew_titles,new_pubs
wherenew_titles.pub_id=new_pubs.pub_idandpub_name=Jardins
(removedadosdeumatabelausandosubqueries)
deletefromnew_titles
wheretitle)idin(selecttitle_id
fromtitleauthor
whereau_idin(selectau_id
fromauthors
wherestate=UT))
Removendodefiniesdedados
DroptableremoveadefiniodeumatabelaetodososdadosdoBD
Sintaxesimplificada:
droptabletabela