Vous êtes sur la page 1sur 47

Superior Tribunal de Justia Microsoft SQL Server for Windows NT

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

"onsideraNes sobre indeIaEo e loGs

(pNes do $"3

ForBato do #rHuivo $"3


,=
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
(ndices
SEo criados sobre colunas para acelerar a recuperaEo de dados- os Huais refleteB consideravelBente no
teBpo de resposta
$aseiaB7se na seH[Cncia de coBparaEo na instalaEo do sisteBa- e sEo seBpre criados eB ordeB
ascendente
( otiBiKador de seleNes depende de colunas indeIadas para funcionar' 3ouca otiBiKaEo pode ser feita
seB a utiliKaEo de Jndices
Q,al a ne%eidade da ,tili:a)*$ de ;ndi%eC
Fora restriNes de unicidade
#celera FunNes QcOecaGeB de inteGridade referencialR
#celera recuperaEo de dados
#celera (+)E+ $U e *+(!3 $U
1$r @,e n*$ inde9ar t$da a %$l,naC
Leva7se teBpo para criaEo de Jndices
Espao eB disco L reHuerido para cada Jndice criado
Torna Bais lento as BodificaNes- inserNes e eIclusNes de dados
Q,and$ e $ @,e inde9arC
"rie uB Jndice sobre HualHuer coisa Hue se busHue freH[enteBente
"Oaves priBPrias deveB seBpre ser indeIadas coB uB Jndice clustered Vnico' Q"ada tabela sW pode ter uB
Jndice clusterR
"Oaves estranGeiras deveB taBbLB ser indeIadas para aFudar na busca da inforBaEo Hue elas apontaB-
para Baior eficPcia
!Ba coluna Hue L freH[enteBente acessada eB ordeB de classificaEo deve receber uB Jndice cluster- de
Bodo Hue o SQL Server possa tirar vantaGeB da ordeB indeIada
"olunas Hue sEo reGularBente usadas eB FunNes deveB seBpre ser indeIadas porHue o sisteBa pode
eIecutar a FunEo Buito Bais rPpido se as colunas estivereB indeIadas
IndeIar QclusteredR uBa coluna Hue L freH[enteBente pesHuisada por faiIa de valores
Dndi%e n*$ *$ Etei @,and$=
"oluna raraBente referenciada eB uBa busca
"oluna Hue contLB poucos valores Vnicos
"oluna contLB teIto ou iBaGeB
( deseBpenOo de uBa at,ali:a)*$ L Bais iBportante Hue o de uBa ele)*$
____________________________________________________________________________________
SEINFS!TE"S#$#S
,%
Cria)*$ de Dndi%e
"+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
)eve ser o proprietPrio da tabela para criar ou eIcluir uB Jndice
3ode7se criar independente de dados na tabela
# clPusula ON n$&e-d$-e4&ent$ perBite colocar o Jndice eB uB outro seGBento
@ndices aceleraB a busca de dado- Bas podeB tornar Bais lenta as atualiKaNes
M BelOor criar os Jndices clustered priBeiro e depois os nonclustered' Se foreB feitos na ordeB inversa-
todos os Jndices nonclustered serEo recriados Huando o Jndice cluster for construJdo
Cara%ter;ti%a de Dndi%e Clustered
LinOas classificadas eB ordeB seHuencial
(rdeB fJsica h ordeB de indeIaEo
NJvel folOa h pPGina de dados real da tabela
#penas % QuBR por tabela
+eHuer duas veKes Bais espao para construir
)eve ser o priBeiro Jndice a ser criado
# cOave priBPria L uBa WtiBa candidata para uB Jndice clustered- Bas nEo obriGatoriaBente
<antaFoso eB busca de linOas coB valores contJGuos QeI'D faiIa de valoresR
( Bais iBportante fator a ser considerado sEo os reHueriBentos de processaBento do usuPrio
"oBo ele faK o seu neGWcioD
Que inforBaEo ele necessita freH[enteBentel
Ele deseFa os resultados na BesBa ordeB todas as veKesl
Se nEo for especificado- uB Jndice nonclustered L criado
,&
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Cara%ter;ti%a de Dndi%e Nonclustered
(rdeB fJsica nEo L a BesBa ordeB da indeIaEo
( nJvel folOa contLB ponteiros para as linOas nas pPGinas de dados
(s ponteiros adicionaB uB nJvel entre o Jndice e o dado
Dndi%e Fni%$
!sado para Garantir inteGridade de entidade desde Hue a cada coluna seFa atribuJdo uB Vnico valor' 3or
eIeBploD criando uB Jndice Vnico eB uBa coluna Hue contLB o nVBero do "3F- Garante7se Hue cada
entidade pode ser identificada unicaBente pelo "3F- i'e'- nEo eIistirEo duas linOas coB o BesBo "3F
NEo use Jndices Vnicos sobre colunas onde a inteGridade de entidade nEo deverP ser Garantida'
____________________________________________________________________________________
SEINFS!TE"S#$#S
,,
)ises
!B Bodo alternativo de visualiKar dados derivados de uBa ou Bais tabelas na base de dados
3erBite ao usuPrio ver soBente uB pedao da inforBaEo selecionada na base de dados Qpor eIeBploD
visualiKar noBe- lotaEo e carGo- Bas nEo salPrio e nJvel7classe7padrEo'
# )rocedure arBaKenada .Bde.end lista todos os obFetos Hue uBa visEo referencia- e todos os obFetos
Hue faKeB referCncia a uBa visEo' 3ode ser eIecutada sobre uBa tabela- visEo- stored )rocedure- ou
trigger'
<antaGens no uso de visNes
Filtro 3erBite usuPrios visualiKar soBente os
dados de seu interesse
ManipulaEo de dados Bais siBples Koins- )rocedures e seleNes freH[enteBente
usadas podeB ser definidas coBo visNes- de
forBa Hue o usuPrio nEo necessita
especificar todas as condiNes e
HualificaNes toda a veK Hue uBa operaEo
naHuele dado L realiKada
Facilidade de #deHuaEo )iferentes usuPrios podeB visualiKar a base
de dados da forBa Hue se lOe apresentar
BelOor
SeGurana !suPrios podeB selecionar e Bodificar
soBente o dado Hue eles podeB ver' (
restante do banco de dados nEo L neB
visJvel neB acessJvel' 3ara prover
seGurana- o acesso do usuPrio deverP estar
confinado XD
 !B subconFunto de linOa de uBa tabela
 !B subconFunto de colunas de uBa
tabela
 !B subconFunto de linOas e colunas de
uBa tabela
 #s linOas Oabilitadas para uBa FunEo de
Bais de uBa tabela
 !B resuBo estatJstico de uBa tabela
 !B subconFunto de outra visEo ou
alGuBa coBbinaEo de visNes e
tabelas'
,0
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
+estriNes
)eve7se ter perBissEo para selecionar os obFetos referenciados na visEo Hue estP sendo criada Huando
se usa o coBando SELE"T coB "+E#TE <IEW
( coBando SELE"T INT( nEo pode ser usado- porHue ele cria uBa tabela teBporPria- e estas nEo
podeB ser referenciadas eB uBa visEo
NEo L aconselOPvel o uso de FunNes eIternas Qouter LoinsR na definiEo de visNes
3ode7se eIecutar atualiKaEo ou eIclusEo de dados por uBa visEo- desde Hue soBente uBa tabela seFa
Bodificada
NEo pode7se usarD SELE"T )ISTIN"T- (+)E+ $U- "(M3!TE- "(M3!TE $U
Tipos de <isNes
3roFeNes
;J?6F? O>?: cpf_servidor
6#
#?&?;F cod_matricula, num_cpf
%JOM servidor++servidor
JunNes
;J?6F? O>?: car$o_servidor (Matricula, ;ar$o*
6#
#?&?;F servidor+cod_matricula,
nome_car$o
%JOM servidor, car$os
:9?J? car$os+cod_car$o = servidor+cod_car$o
"olunas calculadas
;J?6F? O>?: servidor_old
6#
#?&?;F cod_matricula, nome_servidor, dt_nascimento
%JOM servidor
:9?J? datediff(year, dt_nascimento,$etdate(* * K )B
#GreGaEo
;J?6F? O>?: 4um_servidores_car$o (4umero_#ervidores*
6#
#?&?;F distinct nome_car$o, count(num_matricula*
%JOM servidor, car$os
!JOAE 5T servidor+cod_car$o
96O>4! car$os+cod_car$o = servidor+cod_car$o
____________________________________________________________________________________
SEINFS!TE"S#$#S
,2
*ro+ramabilidade e lin+ua+em de controle de flu"o
BATC5ES 'L$te(
!B ou Bais coBandos terBinados por uB sinal de fiB de 1atc. Hue instrui o Microsoft SQL Server
prosseGuir e eIecutar os coBandos Q*(R
3odeB ser eIecutados interativaBente ou de uB arHuivo
!B lote L analisado- otiBiKado- coBpilado e eIecutado coBo uBa unidade
Se ocorrer uB erro de sintaIe no lote o BesBo nEo serP processado
create table test
(column< char(<0*, column@ int*
insert test
values (VhelloQ, )=7*
select * from test
$o
Re4ra .G %$ntr,)*$ de L$te
(s coBandosD "+E#TE 3+("E)!+E- "+E#TE +!LE- "+E#TE )EF#!LT- "+E#TE T+I**E+
e "+E#TE <IEW deveB ser subBetidos isoladaBente
+eGras e defaults nEo podeB ser associadas X colunas e usadas no BesBo lote
# Budana de base de dados coB o coBando !SE nEo toBa efeito atL Hue o lote terBine' )eve7se
Budar a base eB uB lote anterior ao lote Hue referencia esta base de dados
NEo se pode eliBinar e recriar uB obFeto no BesBo lote
(pNes Budadas coB o coBando SET sEo efetivadas soBente ao tLrBino do lote
SCRI1TS
M uB Grupo de lotes
"ontLB uBa sLrie de lotes- se uB lote dentro do scri)t falOar- o scri)t continuarP a eIecutar- soBente o
lote Hue teve erro nEo serP processado
Aeren%ia&ent$ de Trana)-e
TransaEo L a unidade bPsica de trabalOo do SQL Server
"riado pelo corpo de coBandos definidos pelos coBandos $E*IN T+#Nsaction e "(MMIT
T+#Nsaction
M aplicado para coBandos de BodificaEo de dados
!Ba transaEo L coBpletada HuandoD ou todos os resultados das Budanas sEo refletidos no banco de
dados- ou a transaEo retorna seus passos para uB sa0e)oint predeterBinado- ou para o coBeo da
transaEo onde- entEo- nenOuBa Budana ocorre no banco de dados
,5
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
C$nit>n%ia de Dad$
MecanisBos de bloHueioD "oBpartilOados e eIclusivos
(s bloHueios previneB a interferCncia de uBa busca na outra
!Ba transaEo nEo pode ler as pPGinas Bodificadas por outra transaEo
Bl$@,ei$ C$&.artil/ad$
SoBente para leitura' NenOuB dado pode ser Bodificado
Se uB bloHueio coBpartilOado tiver sido aplicado eB uBa ou Bais pPGinas de dados- uBa seGunda
transaEo pode taBbLB obter uB bloHueio coBpartilOado- desde Hue a priBeira transaEo nEo tenOa
coBpletado
SEo liberados assiB Hue aQsR pPGinaQsR de dados nEo for Bais necessPria
Bl$@,ei$ E9%l,i0$
!sado para operaNes de escrita Qu)date- insert- deleteR
Se uB bloHueio coBpartilOado tiver sido aplicado eB uBa ou Bais pPGinas de dados- uBa seGunda
transaEo pode taBbLB obter uB bloHueio coBpartilOado- desde Hue a priBeira transaEo nEo tenOa
coBpletado
SEo liberados assiB Hue aQsR pPGinaQsR de dados nEo for Bais necessPria
Re%,.era+ilidade de Dad$
# cOave para o processaBento de uBa transaEo L o log de transaNes do tipo Jrite-a.ead
SeBpre Hue uB pedido para Bodificar a base de dados L recebido- uBa cWpia de aBbos velOo e novo
estados da porEo da base de dados afetada L arBaKenada no log de transaNes' Estas Budanas sEo
Gravada antes de sereB feitas na base de dados propriaBente dita QJrite-a.eadR
)urante a recuperaEo de uBa falOa no sisteBa- o SQL Server utiliKa o log de transaEo para recuperar a
base de dados para uB estado consistente desfaKendo todas as transaNes Hue nEo foraB coBpletadas' (
SQL Server taBbLB usa o log para Garantir Hue todas as Budanas associadas coB as transaNes
efetivadas estEo coBpletaBente refletidas na base de dados
C$ntr$le de Fl,9$
IF''ELSE
$E*IN''EN)
W1ILE e $+E#Z'''"(NTIN!E
)E"L#+E e <ariPveis Locais
)E"L#+E e <ariPveis *lobais
*(T(
+ET!+N
W#ITF(+
3+INT
____________________________________________________________________________________
SEINFS!TE"S#$#S
,8
*rocedures ,rma-enadas
SEo subrotinas fornecidas pelo usuPrio- Hue eIecuta no servidor de banco de dados'
EB veK de enviar vPrios coBandos SQL separados Qe receber seus resultados interBediPriosR- o cliente envia
uBa Vnica BensaGeB para ativar uBa procedure arBaKenada'
# fiGura abaiIo ilustra coBo as procedures arBaKenadas podeB ser usadas para reduKir o trPfeGo da rede' #s
procedures arBaKenadas sEo norBalBente usadas para reforar a inteGridade dos dados ou reGras coBerciais
Qtriggers sEo procedures arBaKenadasR'
C$n,lta Arande e& 1r$%ed,re Ar&a:enada
<alida $iGTable Seleciona toda a $iG Table #nalisa a QuestEo
(tiBiKa a 3esHuisa
EIecuta a "onsulta
<erifica a linOa %=='=== linOas
3rocessa resultado
______________________________________________________________________________
C$n,lta Arande %$& 1r$%ed,re Ar&a:enada
<alida $iGTable EIec' 3rocedure #rBaKenada 3rocedure #rBaKenada
Seleciona Tudo da $iG Table
3rocessa resultado mnica LinOa EIecuta a "onsulta "oBpilada
<erifica LinOa
%=='===
linOas
(utra "onsulta Seleciona alGo de $iG Table #nalisa a QuestEo
(tiBiKa a 3esHuisa
EIecuta a "onsulta
3rocessa cada %== linOas
LinOa
!Ba procedure arBaKenada eIecuta Buito Bais rapidaBente Hue uBa transaEo SQL- nEo7coBpilada'
#s transaNes freH[enteBente ativadas sEo candidatas eB potencial para procedures arBaKenadas'
( uso de disparadores QtriggersR e procedures arBaKenadas deve ser eHuilibrado coB o o0er.ead eItra Hue
eles introduKeB no servidor' (s recursos de processaBento de uB servidor sEo coBpartilOados por todos os
seus clientes' Se uBa operaEo for coBputacionalBente dispendiosa- norBalBente L BelOor Hue ela use o
poder de processaBento dedicado na estaEo' Se for I( intensivo- L candidata potencial a uBa procedure
arBaKenada para evitar o I( atravLs da rede'
,9
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Caractersticas Gerais
3ode conter atL &22 par\Betros'
"riado pelo coBando "+E#TE 3+("E)!+E
#tL %5 procedures aninOadas' <ariPvel Global ]]NESTLE<EL arBaKena nJvel corrente'
#pWs sua criaEo- pode ser eIecutada coB o coBando E6E"!TE sobre o noBe da procedure e seus
par\Betros'
)entro de uBa procedure- vocC nEo pode criar uB obFeto QBesBo Hue teBporPrioR- eliBinar uB obFeto e
criar uB outro obFeto coB o BesBo noBe'
3ara verificar o teIto de uBa procedure utiliKe a procedure do sisteBa .B/el.te9t coB o noBe da
procedure deseFada coBo par\Betro
EIeBplosD
create procedure showind Utabname varchar(20*
as
select sysobects+name, sysinde,es+name, indid
from sysinde,es, sysobects
where sysobects+name = Utabname and
sysobects+id = sysinde,es+id
# procedure showind eIibe o noBe da tabela e os noBes e nVBero de identificaEo de HuaisHuer
Jndices eB HuaisHuer de suas colunas' 3ara eIecutP7la D
e,ecute showind titles
ou se L o priBeiro coBando eB uB arHuivo ou 1atc.2
showind titles
____________________________________________________________________________________
SEINFS!TE"S#$#S
,:
.unes !mbutidas
3odeB ser dividas nas seGuintes cateGoriasD
FunNes do sisteBa QinforBaNes sobre tabelas do sisteBaR
ManipulaEo de cadeia de caracteres
ManipulaEo de teItos e iBaGens
MateBPticas
)atas
"onversEo de tipos de dados
F,n)-e d$ ite&a 'in8$r&a)-e $+re ta+ela d$ ite&a(
select , = col_len$ht(VtitlesQ, VtitleQ*
TaBanOo da coluna title da tabela titles
Mani.,la)*$ de %adeia de %ara%tere
select VO preWo X V Y convert(varchar(<@*, price*
from titles
where price K <0+00
select au_lname, substrin$(au_fname, <, <* QeIpr'- pos- taBR
from authors
select charinde,(VworderfulQ, notes*
from titles
where title_id = VF;2@<7Q
select name
from sysobects
where patinde,(VsyscIQ, name* K 0
select str(<@2+B), ), <*
select stuff(VabcQ, @, 2, V,yPQ*
select sounde,(VsmithQ*, sounde,(VsmytheQ*
select ri$ht(VabcdeQ, 2*
select reverse(VabcQ, 3*
select upper(VcursoQ*
select ascii(V6Q*
select char(3)*
0=
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
Mani.,la)*$ de te9t$ e i&a4en
F,n)*$ 1arH&etr$ Re,ltad$
3#TIN)E6 Q>padrEo?- eIpressEoR a posiEo inicial da priBeira
ocorrCncia do )adr4o na
eIpressEo especificada
QnorBalBente o noBe de uBa
colunaR' 3odeB ser usados
ScurinGasT'
SET TE6TSIAE cn a (d o liBite eB b^tes do dado de
teIto ou iBaGeB a ser
retornado eB uB coBando
SELE"T' (efault L 0=:5'
TE6T3T+ QnoBe7da7colunaR o valor do ponteiro de teIto no
forBato 0ar1inarD' ( ponteiro
do teIto L cOecado para
Garantir Hue aponta para a
priBeira pPGina de teIto'
TE6T<#LI) Q>noBe7da7tabela'noBe7da7
coluna?- ponteiro7de7teItoR
"Oeca se uB dado ponteiro de
teIto L vPlido retornando % se o
for' "aso contrPrio- retorna ='
Mate&2ti%a
select floor(<@2+B)*
select floor(-<@2+B)*
select ceilin$(<@2+B)*
select ceilin$(-<@2+B)*
select round(<@2+B)B), @*
select round(<@2+B), -@*
____________________________________________________________________________________
SEINFS!TE"S#$#S
0%
Data
select 9oracerta = $etdate( *
select datepart(month, $etdate( **
select datename(month, $etdate( **
select intervalo = dateadd(day, @<, pubdate*
from titles
select decorrido = datediff(day, pubdate, $etdate( **
from titles
C$n0er*$ de ti.$ de dad$
select convert(char()0*, title*, ytd_sales
from titles
where type = Vtrad_cookQ
select convert(char(<@(*, $etdate( *, 2*
0&
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
/onstruindo &Sub0ueries'
Encontre todos os livros Hue tCB o BesBo preo do livro n ,traig.t !alI A1out #om)utersn'
# seleEo abaiIo- encontra os noBes das editoras Hue publicaraB livros sobre neGWciosD
select pub_name
from publishers
where pub_id in
(select pub_id
from titles
where type = VbusinessQ*
# seleEo anterior pode ser alternativaBente forBulada coBo uBa seleEo de FunEoD
select pub_name
from publishers, titles
where publishers+pub_id = titles+pub_id
and type = VbusinessQ
EIaBine a seleEo abaiIo Hue encontra os noBes de todos os co7autores Hue BoraB na n"alifornian e Hue
recebeB Benos de ,= porcento de roDalties por uB livroD
select au_lname, au_fname
from authors
where state = V;6Q
and au_id in
(select au_id
from titleauthor
where royaltyper S 20
and au_ord = @*
!sando uBa FunEoD
select au_lname, au_fname
from authors, titleauthor
where state = V;6Q
and authors+au_id = titleauthor+au_id
and royaltyper S 20
and au_ord = @
____________________________________________________________________________________
SEINFS!TE"S#$#S
0,
MVltiplos nJveis de aninOaBento
select au_lname, au_fname
from authors
where au_id in
(select au_id
from titleauthor
where title_id in
(select title_id
from titles
where type = Vpopular_compQ**
Encontra os noBes dos autores Hue participaraB eB escrever pelo Benos uB livro popular de
coBputadores'
select au_lname, au_fname
from authors, titles, titleauthor
where authors+ au_id = titleauthor+ au_id
and titles+title_id = titleauthor+title_id
and type = Vpopular_compQ
3ode7se usar su1;ueries eB coBandos de BanutenEo de dadosD
update titles
set price = price * @
where pub_id in
(select pub_id
from publishers
where pub_name = V4ew Moon 5ooksQ*
ou
update titles
set price = price * @
from titles, publishers
where titles+pub_id = publishers+pub_id
and pub_name = V4ew Moon 5ooksQ
)obra o preo de todos os livros publicados pela editora 9eJ Moon =ooIs'
00
Superior Tribunal de Justia Microsoft SQL Server for Windows NT
delete sales
where title_id in
(select title_id
from titles
where type = VbusinessQ*
ou
delete sales
from sales, titles
where sales+title_id = titles+title_id
and type = VbusinessQ
+eBove todos os reGistros de vendas de livro de neGWcios'
3ara acOar autores Hue BoraB na BesBa cidade de Li0ia Marsen- podeBos usar o Hue se cOaBa de self-
LoinD
select au<+au_lname, au<+au_fname, au<+city
from authors au<, authors au@
where au<+city = au@+city
and au@+au_lname = V'arsenQ
and au@+au_fname = V&iviaQ
Efetue a seleEo aciBa utiliKando su1;ueries'
#baiIo- duas seleNes Hue encontraB tJtulos de livros publicados por HualHuer editora localiKada eB uBa
cidade Hue coBea coB B'
select title
from titles
where pub_id in
(select pub_id
from publishers
where city like V5IQ*
____________________________________________________________________________________
SEINFS!TE"S#$#S
02
select title
from titles
where e,ists
(select *
from publishers
where pub_id = titles+pub_id
and city like V5IQ*
InterseEo e )iferena
select distinct city
from authors
where e,ists
(select *
from publishers
where authors+city = publishers+city*
select distinct city
from authors
where not e,ists
(select *
from publishers
where authors+city = publishers+city*
# priBeira seleEo Bostra a interseEo de autores de editoras sobre a coluna cidade- ou seFa- uB
conFunto de cidades nas Huais aBbos autor e editora estEo localiKados' # seGunda- a diferena entre
autores e editoras sobre a coluna cidade- isto L- uB conFunto de cidades onde uB autor Bora- Bas
nenOuBa editora estP localiKada'
05
Superior Tribunal de Justia Microsoft SQL Server for Windows NT

____________________________________________________________________________________
SEINFS!TE"S#$#S
08