Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
M I C R O S O F T
S Q L S E R V E R
F O R W I N D O W S N T
S T J
S E I N F - S U T E C - S A B A S
W a n d e r l e y C . L . d e F r e i t a - ! " " #
___________________________________________________________________________________________________________________
SEINFS!TE"S#$#S %
&
%' M()EL(S )E )#)(S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1.1 Modelo entidade-relacionamento (ERA).............................................................................................................................................
&' SQL E *E+EN"I#MENT( )E $#N"( )E )#)(S +EL#"I(N#L''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
,' Q!E+IES- M()IFI"#./( )E )#)(S E (!T+(S "(M#N)(S'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
0' T#$EL#S- "(L!N#S E LIN1#S'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
2' (3E+#.4ES +EL#"I(N#IS'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
5' E6TENS4ES )( T+#NS#"T7SQL'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
6.1 Linguagem de controle de fluxo..........................................................................................................................................................
6.2 Procedures Armazenadas.....................................................................................................................................................................
6. !riggers................................................................................................................................................................................................
6." #l$usula #%MP&!E...........................................................................................................................................................................
6.' Regras e (efaults.................................................................................................................................................................................
6.6 !ratamento de Erros e %)*+es do comando ,E!................................................................................................................................
8' S($+E (S E6EM3L(S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
9' +E"!3E+#N)( )#)(S )E $#SES )E )#)(S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-.1 Escol.endo colunas.............................................................................................................................................................................
-.2 #olunas Es)ec/ficas.............................................................................................................................................................................
-. Alterando a ordem................................................................................................................................................................................
-." Renomeando colunas no resultado......................................................................................................................................................
-.' Para mais de uma )ala0ra )ara re)resentar uma coluna no ca1e*al.o2..........................................................................................
-.6 3alores calculados na lista de sele*4o................................................................................................................................................
-.5 Preced6ncia de ti)os de dados em o)era*+es aritm7ticas..................................................................................................................
-.- #l$usula (8,!89#! - Eliminando du)licados....................................................................................................................................
-.: Ex)ress+es de )es;uisa........................................................................................................................................................................
-.1< %R(ER => - #lassificando resultados..............................................................................................................................................
:' T;3I"(S #<#N.#)(S )E +E"!3E+#./( )E )#)(S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
:.1 ,elecionando 0alores de texto e imagem.............................................................................................................................................
:.2 #riando uma ta1ela de resultados.......................................................................................................................................................
:. Agru)ando dados - ?R%&P => e @A389?........................................................................................................................................
:." #%MP&!E => - Lin.as sumarizadas..................................................................................................................................................
:.' (ados #orrelacionados.......................................................................................................................................................................
:.6 %)erador &98%9.................................................................................................................................................................................
%=' M#N!TEN./( )E )#)(S E >MET#)#)(S?'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1<.1 8m)ortando e Ex)ortando (ados......................................................................................................................................................
%%' @N)I"ES'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
11.1 #ria*4o de Andices.............................................................................................................................................................................
11.2 #aracter/sticas de Andices #lustered.................................................................................................................................................
11. #aracter/sticas de Andices 9onclustered...........................................................................................................................................
11." Andices Bnicos....................................................................................................................................................................................
%&' <IS4ES'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
%,' 3+(*+#M#$ILI)#)E E LIN*!#*EM )E "(NT+(LE )E FL!6(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1.1 =A!#@E, (Lotes)...............................................................................................................................................................................
1.2 ,#R8P!,.............................................................................................................................................................................................
1. ?erenciamento de !ransa*+es...........................................................................................................................................................
1." #onsist6ncia de (ados.......................................................................................................................................................................
1.' Recu)era1ilidade de (ados...............................................................................................................................................................
1.6 #ontrole de Cluxo..............................................................................................................................................................................
%0' 3+("E)!+ES #+M#AEN#)#S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
%2' F!N.4ES EM$!TI)#S'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1'.1 Cun*+es do sistema (informa*+es so1re ta1elas do sistema)............................................................................................................
1'.2 Mani)ula*4o de cadeia de caracteres...............................................................................................................................................
1'. Mani)ula*4o de textos e imagens......................................................................................................................................................
1'." Matem$ticas.......................................................................................................................................................................................
1'.' (atas..................................................................................................................................................................................................
1'.6 #on0ers4o de ti)os de dados.............................................................................................................................................................
%5' "(NST+!IN)( >S!$Q!E+IES?'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Modelos de Dados
)efiniBos uB Bodelo de dados coBo consistindo eB trCs coBponentesD
uBa coleEo de tipos de obFetos
uBa coleEo de operadores
uBa coleEo de reGras de inteGridade Gerais
M$del$ entidade-rela%i$na&ent$ 'ERA(
Entidade
SEo obFetos Hue eIisteB e sEo distinGuJveis de outros obFetos'
EIeBploD uBa pessoa- uB fato- uBa orGaniKaEo'
Toda entidade L Bodelada coBo uBa tabela
Rela%i$na&ent$
M a representaEo das associaNes eIistentes entre os obFetos'
EIeBploD "asaBento para os obFetos 1oBeB e MulOer- Fornece para Fornecedor e 3roduto- 3ossui para
FuncionPrio e )ependente
SEo Bodelados coBo uBa coluna ou uBa tabela- dependendo do tipo de relacionaBento QcardinalidadeR-
Hue pode serD
Rela%i$na&ent$ De%ri)*$ M$delad$ %$&$
%D%
QuB7para7uBR
"ada ocorrCncia da entidade S6T relaciona7se coB uBa
e soBente uBa ocorrCncia da entidade SUT e vice7versa'
EIeBploD
coluna
%Dn
QuB7para7BuitosR
"ada ocorrCncia da entidade S6T relaciona7se coB
vPrias ocorrCncias da entidade SUT- e cada ocorrCncia
da entidade SUT relaciona7se coB uBa e soBente uBa
ocorrCncia da entidade S6T'
EIeBploD )epartaBento e FuncionPrio
coluna
nDn
QBuitos7para7
BuitosR
"ada ocorrCncia da entidade S6T relaciona7se coB
vPrias ocorrCncias da entidade SUT e vice7versa'
EIeBploD "ursos e FuncionPrios
tabela
Atri+,t$
Qualidades ou identificadores para uBa entidade
EIeBploD MatrJcula do FuncionPrio- )escriEo da 3ea
SEo Bodelados coBo colunas eB uBa tabela
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Retri)-e
NoBes de tabelas deveB ser Vnicos
NoBes de coluna deveB ser Vnicos na tabela
LinOas deveB ser Vnicas
De%$&.$i)*$ de C$l,na
Se uBa coluna pode ser Huebrada eB partes coBponentes- ela deve ser redefinida coBo duas ou Bais
colunas
+aKNes para decoBposiEo de colunas
Facilidade para atualiKaEo
Facilidade para seleEo
MantLB uBa BelOor inteGridade dos dados
C/a0e 1ri&2ria '13(
"oluna ou conFunto de colunas Hue fora a inteGridade da entidade pela Garantia Hue cada linOa na tabela L
Vnica
Toda tabela deve ter uBa cOave priBPria
SW eIiste uBa cOave priBPria por tabela
# cOave priBPria nEo pode ser nula e neB aceitar duplicados QnEo aceitar Budanas L altaBente
recoBendPvelR
C/a0e Etran4eira 'F3(
FaK referCncia X cOave priBPria de uBa tabela' !Ba coluna pode ser uBa cOave priBPria e uBa cOave
estranGeira
"Oeca os valores na coluna Barcada coBo cOave estranGeira contra os valores na cOave priBPria para
verificar se estes valores estEo leGJtiBos
3rovC uBa liGaEo entre duas tabelas
Fora a inteGridade referencial Garantindo Hue cada valor na coluna da cOave estranGeira e uBa cOave
priBPria vPlida
3ode conter valores nulos
____________________________________________________________________________________
SEINFS!TE"S#$#S 2
SQL e Gerenciamento de Banco de Dados Relacional
( SQL Qstructured ;uerD languageR L uBa linGuaGeB QsublinGuaGeBR de alto nJvel para sisteBas de banco de
dados relacional' # versEo inicial da linGuaGeB apareceu pela priBeira veK coBo SEQ!EL eB Beados dos
anos setenta- e foi desenvolvida pela I$M coBo linGuaGeB padrEo para acessar uB antiGo banco de dados
relacional Hue eIecutava eB seus coBputadores de Grande porte' No final dos anos setenta- o noBe foi
abreviado para SQL- eBbora ainda eIistaB os Hue pronunciaB este noBe coBo Ssi-;uelT- por OPbito'
( SQL teB sido adaptado para diversos sisteBas de GerenciaBento de banco de dados relacional Q+)$MSR-
e teB sido aprovado coBo o padrEo oficial de linGuaGeB de consulta relacional pelo American 9ational
,tandards 8nstitute Q#NSIR' ( Microsoft ,EL ,er0er utiliKa a linGuaGeB Transact7SQL - Hue L coBpatJvel
coB o I$M SQL e coB a Baioria das outras iBpleBentaNes coBerciais do SQL- Bas taBbLB provC
iBportantes caracterJsticas e funNes adicionais'
EBbora o SQT do SQL siGnifiHue S;uerDF- ele inclui coBandos para Buito Bais Hue apenas Huestionar Qobter
dados deR uBa base de dados' "oB o SQL vocC pode criar novas bases de dados- beB coBo obFetos destas
bases- adicionar novos dados- Bodificar dados eIistentes e realiKar Buitas outras funNes'
Queries, modificao de dados e outros comandos
Nesta seEo- ;uerD siGnifica uB pedido de obtenEo de dados usando o coBando SELE"T' ModificaEo de
dados refere7se a adicionar- eIcluir- ou alterar dados usando os coBandos INSE+T- )ELETE- ou !3)#TE'
(utros coBandos SQL sEo instruNes para realiKar definiEo de dados e operaNes adBinistrativas'
"ada coBando SQL coBea coB uBa palavra cOave- coBo SELE"T- Hue denota a operaEo bPsica a ser
realiKada' Muitos coBandos SQL taBbLB inclueB eIpressNes- e uBa ou Bais clPusulas Hue HualificaB uB
coBando para uBa necessidade particular' ( seGuinte coBando- por eIeBplo- instrui o SQL Server para
selecionar todas as colunas de tabela er0id$r no banco de dados R5STJD
select *
from servidor
Neste eIeBplo- as palavras cOave sEo SELECT e FROM- a eIpressEo L 6- e a clPusula L FROM er0id$r'
Quando uBa ;uerD L coBpletada- os resultados sEo eIibidos' Se nenOuB dado foi encontrado pelo critLrio
especificado- vocC recebe uBa BensaGeB para alertP7lo'
"oBandos de definiEo- BodificaEo de dados- e atividades adBinistrativas- nEo eIibeB resultados porHue
eles nEo recuperaB dados' #o invLs disto- vocC recebe uBa BensaGeB Hue indica se o coBando foi eIecutado
e Huantas linOas- se alGuBa- foraB Bodificadas pelo coBando'
5
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Tabelas, colunas e linhas
"ada lin/a- ou reGistro- de uBa tabela descreve uBa ocorrCncia de uBa entidade QrelaNesR- por eIeBplo-
uBa pessoa- uBa coBpanOia- ou uBa venda' "ada %$l,na- ou caBpo- descreve uBa caracterJstica de uBa
entidade 7 por eIeBplo- o noBe ou endereo de uBa pessoa- o noBe de uBa coBpanOia ou o presidente da
coBpanOia- itens vendidos- Huantidade- ou uBa data'
!B banco de dados L constituJdo de uB conFunto de ta+ela rela%i$nada' No banco de dados +1STJ- a
tabela er0id$r estP associada coB a tabela %ar4$ pelo relacionaBento S.$,iT'
Operaes relacionais
#s operaNes bPsicas eB uB sisteBas de banco de dados relacional sEo ele)*$ Qou restriEoR- .r$7e)*$ e
7,n)*$' Estas operaNes podeB ser coBbinadas eB uB coBando SELE"T'
!Ba ele)*$ L uB subconFunto especJfico de linOas de uBa tabela particular' 3or eIeBplo- vocC pode
selecionar o subconFunto contendo colunas para noBe- endereo- cidade- estado- cep- e nVBero do telefone'
!Ba proFeEo L uB subconFunto especJfico de colunas de uBa tabela particular na tabelaY pode eIibir soBente
noBe e cidade'
!Ba 7,n)*$ liGa as linOas de duas ou Bais tabelas coBparando os valores eB colunas especJficas' 3or
eIeBplo- uBa tabela pode conter inforBaNes sobre autores- incluindo as colunas auGid QnVBero de
identificaEo do autorR e auGlname QVltiBo noBe do autorR- e outra tabela pode conter inforBaNes sobre o
tJtulo dos livros- e taBbLB uBa coluna Hue dP o nVBero de identificaEo do autor do livro' 3ode7se Funtar a
tabela aut.ors e a tabela titles- testando pelos valores iGuais da coluna auGid de cada tabela' SeBpre Hue
acOar- uBa nova linOa contendo colunas de aBbas as tabelas L eIibida coBo o resultado de uBa FunEo'
____________________________________________________________________________________
SEINFS!TE"S#$#S 8
!"tenses do Transact#SQL
( Transact7SQL foi planeFado para auBentar o poder do SQL e BiniBiKar a necessidade de uB a linGuaGeB
de proGraBaEo Bais coBpleIa to realiKar uBa deterBinada tarefa' #s seNes seGuintes resuBeB as
eItensNes do Transact7SQL para o SQL #NSI padrEo'
Lin4,a4e& de %$ntr$le de 8l,9$
( Transact7SQL fornece uBa linGuaGeB de controle de fluIo Hue pode ser usado para direcionar a eIecuEo
dos coBandos SQL' #lGuBas construNes disponJveisD
$E*IN'''EN) *(T( la1el +ET!+N
$+E#Z IF''ELSE W#ITF(+
"(NTIN!E 3+INT W1ILE
)E"L#+E +#ISE++(+
<ariPveis locais sEo freH[enteBente usadas coBo contadores e valores coBparativos coB construNes de
linGuaGeB de fluIo' <ocC pode definir variPveis locais coB o coBando )E"L#+E e atribuir valores usando o
coBando SELE"T'
1r$%ed,re Ar&a:enada
3rocedure arBaKenadas podeB coBbinar Huase todos os coBandos SQL atravLs da linGuaGeB de controle de
fluIo e obter uB ou Bais par\Betros- podeB taBbLB retornar valores'
# Oabilidade de escrever suas prWprias procedures arBaKenadas auBenta GrandeBente o poder- eficiCncia e
fleIibilidade da linGuaGeB de banco de dados SQL' )esde Hue as procedures arBaKenadas sEo coBpiladas na
priBeira veK Hue elas sEo eIecutadas- elas subseH[enteBente eIecutaB Buito Bais rPpido Hue os coBandos
stand-alone correspondentes' ( criador de uBa procedure arBaKenada pode usar variPveis locais e definir
par\Betros para sereB fornecidos Huando a procedure arBaKenada for eIecutada'
Tri44er
!B trigger L uB tipo especial de procedure arBaKenada usada para forar reGras sobre os relacionaBentos
de dados eB diferentes tabelas QtaBbLB conOecidas coBo inte4ridade re8eren%ialR' !rigger tCB efeito
Huando uB usuPrio tenta Bodificar dados coB uB coBando INSE+T- )ELETE ou !3)#TE'
!B trigger pode instruir o sisteBa a obter HualHuer nVBero de aNes Huando uBa Budana especificada
acontece' 3revenindo contra Budanas incorretas- nEo autoriKadas ou inconsistentes de dados- os triggers
aFudaB a Banter a inteGridade de uBa base de dados'
9
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Cl2,,la COM1UTE
(utra iBportante eItensEo Transact7SQL L a clPusula "(M3!TE- usada coB funNes de aGreGaEo de linOas
QS!M- M#6- MIN- #<*- e "(!NTR para calcular valores suBariKados' (s resultados de uBa consulta Hue
inclueB a clPusula "(M3!TE sEo eIibidos coB aBbos os detalOes e linOas suBariKadas- e asseBelOaB7se a
relatWrios Hue a Baioria dos +)$Ms podeB produKir soBente coB uB Gerador de relatWrios'
Re4ra e Defaults
# eItensEo Transact7SQL aFuda a Banter inte4ridade de entidade QcertificaEo de Hue uB valor L fornecido
para cada coluna Hue reHuer uB valorR- e inte4ridade de d$&;ni$ QcertificaEo de Hue cada valor eB uBa
coluna pertence ao conFunto de valores leGais para aHuela colunaR'
(efaults e reGras defineB restriNes de inteGridade Hue sEo aplicadas durante a entrada e BodificaEo de uB
dado' !B default L uB valor liGado a uBa coluna ou tipo de dado particular- e L inserido pelo sisteBa Huando
nenOuB valor L providenciado durante a entrada de dados' Re4ra sEo restriNes de inteGridade definidas
pelo usuPrio liGadas a colunas ou tipo de dados particulares e obriGatWrios durante uBa entrada de dados'
Trata&ent$ de Err$ e O.)-e d$ %$&and$ SET
!B Grande nVBero de tLcnicas de trataBento de erros estEo disponJveis ao proGraBador Transact7SQL-
incluindo a Oabilidade de capturar o estado de retorno atravLs de procedures arBaKenadas- definir valores de
retorno custoBiKadas de procedures arBaKenadas- passar par\Betros de uBa procedure para seu cOaBador- e
obter relatWrios de variPveis Globais tais coBo ]]E++(+'
(s coBandos +#ISE++(+ e 3+INT- coBbinados coB a linGuaGeB de controle de fluIo- podeB direcionar
BensaGens de erro para o usuPrios de uBa aplicaEo Transact7SQL'
____________________________________________________________________________________
SEINFS!TE"S#$#S :
Sobre os !"emplos
# fiGura abaiIo Bostra a estrutura da base de dados de eIeBplo cOaBada )u1s'
TITLEAUT5OR TITLES RO<SC5ED
title_id title_id title_id title_id
au_id title_id title_id
title_id N % title % N loranGe
au_ord t^pe OiranGe
ro^alt^per pub_id ro^alt^
price
N au_id advance
ro^alt^ title_id title_id SALES
^td_sales
notes % N stor_id
pubdate ord_nuB
date
N pub_id Ht^
stor_id pa^terBs
% title_id
% au_id
N stor_id
AUT5ORS
au_id N stor_id % stor_id
au_lnaBe % pub_id
au_fnaBe DISCOUNTS STORES
pOone 3UBLIS5ERS stor_id
address discountt^pe stor_naBe
cit^ pub_id stor_id stor_address
state pub_naBe lowHt^ cit^
Kip cit^ OiGOHt^ state
contract state discount Kip
%=
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
!B coBando SQL deve seGuir reGras estruturais e sintPticas precisas' "ontudo- o SQL L uBa linGuaGeB de
forBato livreY nEo eIisteB reGras sobre Huantas palavras vocC pode colocar eB uBa linOa ou se vocC
necessita HuebrP7la' 3ara Baior coBpreensEo e consistCncia- os eIeBplos nesta apostila sEo forBatados para
Hue cada clPusula de uB coBando coBece eB uBa nova linOa'
# base de dados )u1s L usada para Huase todos os eIeBplos nesta apostila' <ocC pode tentar HualHuer dos
eIeBplos no seu sisteBa' Ela consiste de oito tabelas coBo Bostrado aciBa- Hue sEoD )u1lis.ersH aut.orsH
titlesH titleaut.orH roDsc.edH salesH stores e discountsD
Ta+ela De%ri)*$
publisOers "ontLB os nVBeros de identificaEo- noBes- cidades-e estados de
trCs editoras'
autOors "ontLB uB nVBero de identificaEo- priBeiro e VltiBo noBe-
endereo e estado do contrato para cada autor'
titles "ontLB o nVBero de identificaEo- noBe- tipo- nVBero de
identificaEo da editora- preo- ro^alt^- vendas por ano-
coBentPrios- e data de publicaEo para cada livro Hue teB sido ou
serP editado
titleautOor +elacionaBento das tabelas titles e aut.ors' 3ara cada livro- ela
contLB o nVBero de identificaEo do tJtulo- o nVBero de
identificaEo do autor- a ordeB do autor e a divisEo de ro^alt^
entre os autores de uB livro'
ro^scOed Lista as unidades de faiIas de vendas e o ro^alt^ associado X cada
faiIa' ( ro^alt^ L uBa porcentaGeB dos recebiBentos das vendas
da rede'
sales +eGistra as vendas das livrarias dos tJtulos na tabela de tJtulos'
stores Lista de livrarias pelo nVBero de identificaEo da BesBa'
discounts Lista trCs tipos de descontos para livrarias'
____________________________________________________________________________________
SEINFS!TE"S#$#S
%%
Recuperando dados de Bases de Dados
#cesso ao servidor SQL por Beio de loGinsenOa
"onectado a uBa base de dados default
Mudana para outra base de dados atravLs do coBando !SE
eIeBploD use pubs
(btenEo de dados atravLs do coBando SELE"T
SintaIe bPsica do SELE"T D
SELE"T lista7de7seleEo
F+(M lista7de7tabelas
W1E+E condiNes7de7pesHuisa
( coBando a seGuir recupera o priBeiro e VltiBo noBe dos escritores na tabela aut.ors Hue BoraB eB
S(a_landT
select au_fname, au_lname
from authors
where city=Oakland
( resultado do coBando aparece eB forBato de coluna- coBo a seGuirD
au_fname au_lname
-------------------- ----------------------------------------
Marorie !reen
"ean #trai$ht
"irk #trin$er
#tearns Mac%eather
&ivia 'arsen
() row(s* affected*
%&
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
SintaIe coBpleta do SELE"TD
SELE"T `#LL a )ISTIN"Tb lista7de7seleEo
`INT( ``database'bowner'bnoBe7da7tabelab
`F+(M ``database'bowner'bcnoBe7da7tabela a noBe7da7visEod`1(L)L("Zb
`-``database'bowner'bcnoBe7da7tabela a noBe7da7visEod`1(L)L("Zbb '''b
`W1E+E condiNes7de7pesHuisab
`*+(!3 $U `#LLb eIpressEo7de7aGreGaEo
`- eIpressEo7de7aGreGaEob '''b
`1#<IN* condiNes7de7pesHuisab
`(+)E+ $U c```database'bowner'bcnoBe7da7tabela a noBe7da7visEodb
noBe7da7coluna a nVBero7da7lista7de7seleEo a eIpressEod `#S" a )ES"b
`-c```database'bowner'bcnoBe7da7tabela a noBe7da7visEo'db
noBe7da7coluna a nVBero7da7lista7de7seleEo a eIpressEod `#S" a )ES"bb '''b
`"(M3!TE linOa7de7aGreGaEoQnoBe7da7colunaR '''b
`$U noBe7da7coluna `- noBe7da7colunab '''bb
`F(+ $+(WSEb
#s clPusulas deveB ser usadas na ordeB eIibida aciBa'
NoBes dos obFetos deveB ser Hualificados atL o ponto Hue nEo cause aBbiG[idade'
NoBes Hue coBpNeB o obFetoD noBe da base de dados- noBe usuPrio proprietPrio do obFeto e noBe da
tabela ou visEo para uBa coluna'
"ada coBponente do obFeto deve ser separado por vJrGula'
EIeBploD !suPrio wanderle^ L o proprietPrio da tabela aut.ors na base de dados )u1s- o identificador Vnico
para a coluna citD nesta tabela LD
pubs+wanderley+authors+city
____________________________________________________________________________________
SEINFS!TE"S#$#S
%,
E%$l/end$ %$l,na
#elect e,press-o., e,press-o +++/
select *
from nome-da-tabela
EIeBploD
select *
from publishers
pub_id pub_name city state
------ ------------------------------------- ---------- -----
0123 4ew Moon 5ooks 5oston M6
0711 5innet 8 9ardley :ashin$ton ";
<27= 6l$odata >nfosystems 5erkeley ;6
(2 row(s* affected*
C$l,na E.e%;8i%a
select pub_id, pub_name
from publishers
pub_id pub_name
------ ----------------------------------------
0123 4ew Moon 5ooks
0711 5innet 8 9ardley
<27= 6l$odata >nfosystems
(2 row(s* affected*
%0
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Alterand$ a $rde&
select state, pub_name
from publishers
state pub_name
----- ----------------------------------------
M6 4ew Moon 5ooks
"; 5innet 8 9ardley
;6 6l$odata >nfosystems
(2 row(s* affected*
Ren$&eand$ %$l,na n$ re,ltad$
select ?ditora=pub_name, ;idade=city
from publishers
ou
select pub_name ?ditora, city ;idade
from publishers
?ditora ;idade
---------------------------------------- --------------------
4ew Moon 5ooks 5oston
5innet 8 9ardley :ashin$ton
6l$odata >nfosystems 5erkeley
(2 row(s* affected*
____________________________________________________________________________________
SEINFS!TE"S#$#S
%2
1ara &ai de ,&a .ala0ra .ara re.reentar ,&a %$l,na n$ %a+e)al/$=
select pub_name 4ome da ?ditora, city ;idade
from publishers
4ome da ?ditora ;idade
---------------------------------------- --------------------
4ew Moon 5ooks 5oston
5innet 8 9ardley :ashin$ton
6l$odata >nfosystems 5erkeley
(2 row(s* affected*
Val$re %al%,lad$ na lita de ele)*$
(peradores aritBLticos disponJveisD
S;&+$l$ O.era)*$
e #diEo
7 SubtraEo
)ivisEo
f MultiplicaEo
g MWdulo QrestoR
( eIeBplo abaiIo Bostra uBa proFeEo sobre auBento de vendas eB %== porcento para todos os livros na
tabela titlesD
select title_id, ytd_sales, ytd_sales*@
from titles
title_id ytd_sales
-------- ----------- -----------
5A<02@ B0=) 7<=0
5A<<<< 2713 11)@
M;20@3 (null* (null*
+++
(<7 row(s* affected*
3ara se colocar uB cabealOo na coluna calculada- use o critLrio de renoBeaEo'
%5
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
(peradores aritBLticos para realiKar cPlculos envolvendo uBa ou Bais colunasD
select title_id, ytd_sales*price
from titles
title_id
-------- --------------------------
5A<02@ 7<,7)=+0)
5A<<<< B3,2<7+@0
+
+
+
(<7 row(s* affected*
"olunas calculadas podeB vir de Bais de uBa tabela'
select titles+title_id, stor_id, Cty*price
from titles, sales
where titles+title_id=sales+title_id
and titles+title_id=DE#@0=<D
title_id stor_id
-------- ------- --------------------------
E#@0=< 1033 7@<+@)
E#@0=< 1031 <0=+)0
E#@0=< 1<2< @<=+00
E#@0=< 3270 2@+7)
(B row(s* affected*
"alcula o produto do nVBero de cWpias de uB livro de psicoloGia vendido Qcoluna ;tD da tabela salesR e o
preo do livro Qa coluna preo da tabela titlesR
____________________________________________________________________________________
SEINFS!TE"S#$#S
%8
1re%ed>n%ia de ti.$ de dad$ e& $.era)-e arit&?ti%a
3ara resolver operaNes aritBLticas Hue envolveB valores de tipos de dados diferentes- eIiste uB ranIing
para os tipos de dados' ( tipo de dado coB Baior valor no ranIing prevalece na operaEo' EIiste uBa
eIceEo para a conversEo de moneD e float- onde moneD seBpre teB a precedCncia- apesar de ter Benor valor
no ranIing'
(btenEo do valores do ranIing de tipos de dadosD
select name, type
from systypes
order by type
Cl2,,la DISTINCT - Eli&inand$ d,.li%ad$
( default L a eIibiEo de todas as linOas Hue satisfaaB a clPusula W1E+E
( distinct eliBina as linOas duplicadas
select ">#F>4;F city, state
from authors
city state
-------------------- -----
5erkeley ;6
;ovelo ;6
Menlo Eark ;6
+
+
+
(<3 row(s* affected*
%9
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
E9.re-e de .e@,ia
(peradores de coBparaEo Q h- ij ou kh- i e jR
FaiIas Q`N(Tb $ETWEENR
select pubdate, title
from titles
where pubdate between G<H<H7)G and G<@H2<H7)G
Listas Q`N(Tb INR
select title, type
from titles
where type >4 (Gmod_cookG, Gtrad_cookG*
"asando padrNes Q`N(Tb LIZER
<alores desconOecidos QIS `N(Tb N!LLR
"oBbinaEo destas condiNes Q#N)- (+R
____________________________________________________________________________________
SEINFS!TE"S#$#S
%:
EIeBploD Listar todos os tJtulos Hue coBeaB coB STT- ou teB uBa publicaEo de S=988T e custa Bais
de %5 dWlares'
select title_id, title, pub_id, price, pubdate
from pubs++titles
where (title &>'? GFIG OJ pub_id = G0711G* 64"
(price K L<3+00*
title_id title pub_id price pubdate
-------- ----------------------------------- ------ ------ -------------------
5A<02@ Fhe 5usy ?,ecutiveGs "atabase !uide @27= <=+== Mun <@ <=7) <@N006M
M;@@@@ #ilicon Oalley !astronomic Freats 0711 <=+== Mun = <=7) <@N006M
E#<21@ ;omputer Ehobic and 4on-Ehobic 0711 @<+)= Oct @< <=7) <@N006M
>ndividualsN5ehavior Oariations
F;2@<7 Onions, &eeks, and !arlicN 0711 @0+=) Oct @< <=7) <@N006M
;ookin$ #ecrets of the Mediterranean
(B row(s* affected*
ORDER B< - Clai8i%and$ re,ltad$
(+)E+ $U classifica resultados por uBa ou Bais colunas QatL o BPIiBo de %5R' 3ode ser ascendente
Q#S"R ou descendente Q)ES"R' #S" L o default'
3odeB ser usados nVBeros indicando a posiEo na lista de seleEo no luGar do noBe da coluna no
(+)E+ $UD
select pub_id, type, title_id
from titles order by < desc @, 2
&=
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
T$picos a%anados de recuperao de dados
Sele%i$nand$ 0al$re de te9t$ e i&a4e&
"oBandos SELE"T e +E#)NE6T para obter valores de teIto e iBaGeB'
TaBanOo do dado retornado para caBpos deste tipo depende do estabelecido na variPvel Global
]]TE6TSIAE'
3ode ser Budado pelo coBando SET'
set te,tsiPe @)
(efault L 0=:5 Q0ZR
3ara continuar coB Bais eIeBplos- deverP ser criada uBa tabela coB uBa coluna tipo text- pois a base de
dados )u1s nEo contLB nenOuBa'
create table te,tnotes
(au_id id not null , copy te,t not null*
insert into te,tnotes values (3B7-=@-<@B@, 6 chefQs chef, Je$inald
5lotchet-9alls calls &ondon his second home+ 9e has an astoundin$
ability to deli$ht our palates with palace deli$htsR*
3ara retornar TE6TSIAE para o seu valor defaultD set te,tsiPe 0
Criand$ ,&a ta+ela de re,ltad$
select pub_id, pub_name
into newtable
from publishers
(2 rows affetcted*
<erifiHue o conteVdo da tabela neJta1le'
____________________________________________________________________________________
SEINFS!TE"S#$#S
&%
# clPusula SELE"T INT( L Vtil na criaEo de tabelas de testes e cWpias de tabelas eIistentes- e para
produKir vPrias tabelas Benores de uBa Grande tabela' !sada taBbLB para criaEo do SesHueletoT de uBa
tabela QseB dadosR- por eIeBploD
select * into newtable@
from publishers
where <=@
<erifiHue o conteVdo da tabela neJta1le2'
A4r,.and$ dad$ - AROU1 B< e 5AVINA
*+(!3 $U orGaniKa dados eB Grupos
1#<IN* estabelece condiNes nos Huais os Grupos sEo incluJdos nos resultados
)eveB ser usados Funtos- caso contrPrio podeB ser Gerados resultados confusos'
FunNes Hue retornaB valores suBariKados trabalOaB coB a tabela toda ou coB Grupos
NEo podeB ser usados coB a clPusula W1E+E
NEo podeB ser usados coB colunas teIto e iBaGeB'
F,n)-e de A4re4a)*$ Re,ltad$
S!M Q`#LL a )ISTIN"Tb eIpressEoR Total de valores eB uBa eIpressEo nuBLrica-
coB todos ou distintos
#<* Q`#LL a )ISTIN"Tb eIpressEoR MLdia de valores eB uBa eIpressEo nuBLrica-
coB todos ou distintos
"(!NT Q`#LL a )ISTIN"Tb eIpressEoR NVBero de valores na eIpressEo- coB todos ou
distintos
"(!NT QfR NVBero de linOas selecionadas
M#6 QeIpressEoR Maior valor na eIpressEo
MIN QeIpressEoR Menor valor na eIpressEo
select pub_id, total = sum(ytd_sales*
from titles
$roup by pub_id
&&
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
COM1UTE B< - Lin/a ,&ari:ada
!sado coB funNes de aGreGaEo de linOas para produKir relatWrios Hue resuBeB valores seBpre Hue o
valor eB uBa coluna especJfica Bude Qcontrole de HuebraR'
NEo pode ser usados coB colunas do tipo de teIto e iBaGeB'
select type, sum(price*, sum(advance*
from titles
$roup by type
select type, price, advance
from titles
order by type
compute sum(price*, sum(advance* by type
Dad$ C$rrela%i$nad$
Koins
JunNes liGaB linOas eB duas ou Bais tabelas pela coBparaEo de valores eB colunas especJficas
JunEo seB restriEo L eHuivalente ao coBandoD SELE"T eIpressEo F+(M BVltiplas7tabelas seB a
clPusula W1E+E
SaJda de uBa FunEo seB restriEo h todas as possJveis coBbinaNes de linOas nas tabelas QuB produto
cartesianoR
#?&?;F pub_name, title EIeBplo de FunEo seB restriEo
%JOM titles, publishers
#?&?;F pub_name, title EIeBplo de FunEo coB restriEo
%JOM titles, publishers
:9?J? titles+pub_id = publishers+pub_id
____________________________________________________________________________________
SEINFS!TE"S#$#S
&,
%uter Koins
JunNes eIteriores eIibeB todas as linOas na tabela de controle- inclusive aHuelas Hue nEo correspondeB Xs
linOas na tabela relacionada
# tabela relacionada nEo pode ser usada eB HualHuer outra FunEo na seleEo
"uidados
! (s resultados inclueB todas as colunas da tabela de controle independente das condiNes de FunEo
tereB correspondido
! Nulos QN!LLR sEo Gerados para os resultados da tabela Hue nEo a de controle Huando nEo ocorre
correspondCncia' Estes nulos nEo podeB ser referenciados na clPusula W1E+E
(peradores de JunEo
fh Inclui todas as linOas da priBeira tabela Hue satisfaKeB as restriNes do coBando
hf Inclui todas as linOas da seGunda tabela Hue satisfaKeB as restriNes do coBando
!B caBinOo siGnificativo para criar FunNes eIternas L pela FunEo da tabela da cOave estranGeira coB sua
tabela da cOave priBPria Qp_table'Foin_col fh f_table'Foin_colR
( eIeBplo seGuinte lista todas as vendas de todos os tJtulos- BesBo Hue aHuele tJtulo nEo tenOa vendasD
#?&?;F title, stor_id, ord_num, Cty, date
%JOM sales, titles
:9?J? titles+title_id *= sales+title_id
,elf Koins
JunEo refleIiva relaciona linOas de uBa tabela coB outras linOas da BesBa tabela
!Ba veK Hue envolve uBa FunEo de uBa tabela coB ela BesBa- deve ser providenciado dois alias para as
tabelas
# utiliKaEo de alias para tabelas perBite a identificaEo das BesBas atravLs de prefiIos
( eIeBplo seGuinte lista todos os tJtulos Hue possueB co7autor coB seus autoresD
#?&?;F t<+title_id, t<+au_id, t@+au_id
%JOM titleauthor t<, titleauthor t@
:9?J? t<+title_id = t@+title_id
64" t<+au_id S t@+au_id
&0
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Koins coB Bais de duas tabelas
#?&?;F stor_name, Cty, title
%JOM sales, titles, stores
:9?J? titles+title_id = sales+title_id
64" stores+stor_id = sales+stor_id
"oBbinando Koins coB funNes de aGreGaEo
3erBite a FunEo de dados Hue estEo sendo aGreGados eB uBa tabela- coB inforBaEo descritiva sobre
aHuele dado eB outra tabela
3ara atinGir os resultados deseFados eB *+(!3 $UD
Toda coluna de dado na lista de *+(!3 $U deve ser Bencionada na lista de SELE"T-
ou
"olunas nEo aGreGadas na lista de SELE"T deveB ser soBente de uBa tabelaY deve7se aGrupar a
cOave priBPria desta tabela' Se for aGrupado por uBa coluna da BesBa tabela Hue a coluna a ser
aGreGada os resultados serEo inesperados
#?&?;F titles+title_id, #AM(Cty*, title
%JOM sales, titles O
:9?J? titles+title_id = sales+title_id K
!JOAE 5T titles+title_id
#?&?;F sales+title_id, #AM(Cty*, title
%JOM sales, titles
:9?J? titles+title_id = sales+title_id
Imprevisto
!JOAE 5T sales+title_id
____________________________________________________________________________________
SEINFS!TE"S#$#S
&2
O.erad$r UNION
3erBite a BanipulaEo dos resultados de duas ou Bais seleNes pela coBbinaEo de cada ;uerD eB uB
Vnico conFunto de resultados'
Todas as listas de seleEo no coBando !NI(N deveB ter o BesBo nVBero de eIpressNes
#s colunas correspondentes eB cada lista de seleEo individualD ou deveB ter o BesBo tipo de dado- ou
uBa conversEo de tipos de dados ser possJvel- ou uBa conversEo eIplJcita ser fornecida'
#s colunas correspondentes deveB ter a BesBa ordeB eB cada seleEo'
"oBbinaEo de colunas de tipos de dados diferentes sEo convertidas para o tipo de dado de Baior
precisEo'
(s noBes das colunas da tabela resultado sEo os utiliKados na lista da priBeira seleEo'
&5
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Manuteno de Dados e &Metadados'
"+E#TE )+(3 T#$LE
"+E#TE T#$LE ``base de dados'bproprietPrio'bnoBe7tabela
QnoBe7da7coluna tipo7de7dados `N(T N!LL a N!LLb
Q-noBe7da7coluna tipo7de7dados `N(T N!LL a N!LLbb '''R
`(N noBe7do7seGBentob
3ode7se ter atL & bilONes de tabelas por base de dados e &2= colunas por tabelas'
NVBero BPIiBo de 1Dtes por linOa L %:5&'
3ara verificar a definiEo de uBa tabela- coB suas colunas- utiliKe a procedure arBaKenada .B/el.'
3ara renoBear uBa tabela- utiliKe .Brena&e'
3ara verificar a Huantidade de espao alocado e usado por uBa tabela- use .B.a%e,ed'
create table titles<
(title_id tid,
title varchar(70*,
type char(<@*,
pub_id char(B*,
price money null,
advance money null,
royalty float null,
ytd_sales money null,
notes varchar(@00*,
pubdate datetime*
)+(3 T#$LE ``base de dados'bproprietPrio'bnoBe7tabela
`-``base de dados'bproprietPrio'bnoBe7tabela'''b
Quando se eliBina uBa tabela- HuaisHuer reGras e default associados perdeB sua liGaEo- e HuaisHuer
GatilOos associados sEo autoBaticaBente eliBinados'
drop table titles<
____________________________________________________________________________________
SEINFS!TE"S#$#S
&8
"+E#TE )+(3 IN)E6
"+E#TE `!NIQ!Eb `"L!STE+E) a N(N"L!STE+E)b IN)E6 noBe7do7Jndice
(N ``base7de7dados'bproprietPrio'bnoBe7da7tabela QnoBe7da7coluna`- noBe7da7colunab '''R
`WIT1 cFILLF#"T(+ h I- I*N(+E_)!3_ZEU- S(+TE)_)#T#-
`I*N(+E_)!3_+(W a #LL(W_)!3_+(Wbdb
`(N noBe7do7seGBentob
create uniCue clustered inde, au_id_ind
on authors (au_id*
)+(3 IN)E6 noBe7da7tabela'noBe7do7Jndice`-noBe7da7tabela'noBe7do7Jndice '''b
drop inde, authors+au_id_ind
+E*+#S E (ECA&L!s
"+E#TE +!LE `proprietPrio'bnoBe7da7reGra
#S eIpressEo7de7condiEo Qprecedido de ]R
create rule limit
as Uadvance S L<000
create rule pubid_rule
as Upub_id in (V<27=Q, V0123Q, V0711Q*
__________________________________________________________
"+E#TE )EF#!LT `proprietPrio'bnoBe7default
#S constante
create default phonedflt as VunknownQ
sp_bindefault phonedflt, Vauthors+phoneQ
&9
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
INSERT
INSE+T `INT(b
``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEod `Qlista de colunasRb
c<#L!ES QeIpressNes7de7constantes `-eIpressNes7de7constantesb'''R a
coBando7selectd
insert newpublishers (pub_id, pub_name*
select pub_id, pub_name
from publishers
where pub_name=V4ew Moon 5ooksQ
insert titles
values (V5A@@@Q, V%asterRQ, VbusinessQ, V<27=Q,
null, null, null, null, VokQ, V03H<1H71Q*
U1DATE
!3)#TE ``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEod
SET ```base7de7dados' 'bproprietPrio'bcnoBe7da7tabela. a noBe7da7visEo.d
noBe7coluna% h ceIpressEo% a N!LL a QcoBando7selectRd
`-noBe7coluna& h ceIpressEo& a N!LL a QcoBando7selectRd
`F+(M ``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEod
`-``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEodb'''b
`W1E+E condiNes7de7pesHuisab
update authors
set au_lname =VMac5addenQ
where au_lname = VMc5addenQ
DELETE
)ELETE ``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEod
`F+(M ``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEod
`-``base7de7dados'bproprietPrio'bcnoBe7da7tabela a noBe7da7visEodb'''b
`W1E+E condiNes7de7pesHuisab
delete from authors
where au_lname=VMac5addenQ
____________________________________________________________________________________
SEINFS!TE"S#$#S
&:
I&.$rtand$ e E9.$rtand$ Dad$
$"3 7 $ul_ "op^ !tilit^ 3roGraB
(pNes do $"3