You are on page 1of 41

Objetivos............................................................................................................................

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

O banco de dados Pubs2 contm 11 tabelas de dados relacionadas a operao e


distribuiodelivrosfictcios.
Titles

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;

[] (colchetes), qualquer caractere simples dentro da srie


especificada;
[^] (colchetes e acento circunflexo), qualquer caractere
simplesforadasrieespecificada.
o Coloqueoscoringaseostringdecaracteresentreaspassimples.

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

Parntesespodemalterarosignificado de umaperguntapara foraraordemde


execuo

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

Permitequeousuriofornea outronome aserusadonasadado comando select ao


invsdonomedacoluna.


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.

Normalmente, a lista_do_select do subquery ser *, desde que a funo


existsretomeverdadeirooufalsoenodadosreais.
*exists(subquery)

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

Todas listas de select no comando unon devem ter o mesmo nmero de


expresses.
Asexpressesnaslistasdeselectsoarranjadasporordem.
Expresses correspondentes nas listas de select devem ser do mesmo tipo de
dados, ou uma converso de dados mplicita deve ser possvel, ou uma
conversodedadosexplcitadeveserespecificada.
Osnomesdecolunadoresultadossoobtidasdoprimeiroquerydaunio.
Especifiquenomesdecolunasomentenoprimeiroquery
order by e compute so permitidos somente depois de todas queries, no
podemserdentrodequeriesindividuais.
group by e having s podem aparecer em queries individuais, no podem ser
usadosparaoresultadofinal.
A clusula into s pode ser usada no primeiro query, para criar como
resultante,umanovatabela.

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.

Entrar com datatime e todos valores de caractere entre aspas simples ou


duplas.
Para entrar com um string de caracteres maior que uma linha use uma
barrainvertida(\)antesdeirparaprximalinha.
Para entrar com aspas como se fossem um literal use o tipo oposto de
aspas,isto , se uma aspa simples o literal, use aspas duplas para
delimitarovalordedadostotalaserinserido.

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

You might also like