You are on page 1of 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

SQL Server 2005 Parte 2 Introduo e Origem, Diferenas entre verses, Tutoria de insta ao e !omandos "#si$os
Ol pessoal, comeamos definitivamente nossa srie de artigos sobre SQL Server 2005. Nesta parte iremos falar contar a ist!ria do SQL, s"a origem, falarmos das diferenas entre as vers#es 2000, 2005 e 200$ %e s"as respectivas edi#es&, mostrar "m t"torial passo a passo de instala'o da vers'o 2005, "m lin( de "m t"torial para instala'o da vers'o 200$ e descrever os comandos bsicos. )nt'o, vamos l* Introduo e origem do SQL Server O SQL Server "m S%&D + Sistema ,erenciador de -anco de .ados criado pela 'i$rosoft. /m banco m"ito rob"sto "sado por sistemas corporativos de diversos segmentos. 0 sigla SQL significa Stru$tured Quer( Language %Ling"agem )str"t"rada de 1ons"lta& e "m padr'o )*SI desde 23$4 e ISO desde 23$5. /sada principalmente para alterar, cons"ltar, incl"ir e e6cl"ir registros, com "m le7"e m"ito variado de op#es para manip"lar dados. 8o9e em dia conta com tr:s vers#es; o T+SQL %<ransacted Str"ct"red Q"er= Lang"age + padr'o >icrosoft&, PL,SQL %?roced"ral Lang"age@Str"ct"red Q"er= Lang"age + padr'o Oracle& e SQL PL %SQL ?roced"ral Lang"age + padr'o A->&. 0 ling"agem foi desenvolvida em meados da dcada de 50, com base nos trabal os sobre bancos de dados relacionais de )dgar Brancis 1odd. 0pesar de 7"e, em 2343, "ma vers'o CbetaD 9 circ"lava nos corredores da A->. Na dcada de 50, "m gr"po de A-> desenvolve" o sistema de banco de dados S=stem E, tendo como base os trabal os de )dgar B. 1odd, como dito acima. 0 ling"agem desenvolvida para manip"lar os dados deste modelo se c amo" S-Q.-L %Str"ct"red )nglis Q"er= Lang"age&, mais alg"m tempo depois m"do" para SQL, pois "ma marca da Anglaterra 9 "sava o nome S)Q/)L. No fim da dcada de 50, I&' e Ora$ e %na poca com o nome de Eelational SoftFare Anc.& desenvolveram sistemas baseados nos conceitos do SQL. )m 2353, tr:s empresas se 9"ntaram %S("ase, 'i$rosoft e )s/ton+Tate& com o int"ito de desenvolver "m prod"to para concorrer com os bancos de dados da A-> e Oracle. 0ssim nasce o SQL Server 010 para OS@2. Somente em 2332, a >icrosoft lana se" pr!prio banco de dados, c amado de 'i$rosoft SQL Server 212. 0p!s isso foram lanadas diversas vers#es; G.22 para HindoFs N<, 4.0, 5.0 %com interface grfica& e 2000 %o primeiro 7"e teve "ma vers'o para a plataforma de 4G bits da Antel&. 0s vers#es mais recentes tiveram diversas altera#es. )m Novembro de 2005 lanado o SQL Server 2005 com a"mento de performance e altera#es na A.), nos comandos, integra'o com a 1LE, entre o"tras. 0 Iltima vers'o teve mais altera#es como novos tipos de dados, seg"rana e performance mel orados, etc. Bontes de pes7"isa;
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 1 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

3i4i5edia + ttp;@@pt.Fi(ipedia.org@Fi(i@S7lJserver & og 50 'inutos Server.asp6 + ttp;@@FFF.50min"tos.com.br@blog@post@0lgoJsobreJoJSQLJ

Diferenas entre verses + *o SQL Server 2000, temos 6 ti5os de verses 7ue 5odem ser insta adas, ve8am a seguir um "reve des$ritivo de todas e as9 0 -nter5rise -dition )sta vers'o s"porta todas as f"ncionalidades do SQL Server 2000 e pode ser "tiliKada tanto em "m ambiente OL<? como em OL0?. 2 Standard -dition )sta vers'o s"porta 7"ase todas as f"ncionalidades da vers'o )nterprise, com alg"mas limita#es e restri#es ao servio 0nal=sis Services. : Persona -dition )sta vers'o poss"i 7"ase t"do o 7"e a vers'o Standard poss"i, com a e6ce'o de 7"e n'o podemos criar "m ?"blicador@.istrib"idor em "ma replica'o transacional. 8 tambm "ma limita'o de performance 7"ando mais de 5 "s"rios enviam instr"#es SQL ao mesmo tempo. 2 3indo;s !- -dition Lers'o para dispositivos portteis 7"e armaKena temporariamente "ma pe7"ena 7"antidade de dados para depois transferir para o"tro SQL Server 2000. ?oss"i diversas limita#es. 5 Deve o5er -dition ?oss"i todas as f"ncionalidades da vers'o )nterprise. 0 Inica limita'o 7"e, como o pr!prio nome diK, esta vers'o e6cl"siva para o desenvolvimento de aplica#es em ambiente de desenvolvimento e n'o em "m ambiente de prod"'o. 6 Des4to5 -ngine )ste somente o engine do SQL Server, sem ferramentas grficas. N'o podemos criar "m banco com mais de 2,- e poss"i a mesma limita'o 7"e a vers'o ?ersonal. )sta vers'o tambm c amada de >S.) e pode ser distrib"Mda livremente sem a necessidade de licena. + *o SQL Server 2005, temos tam"<m 6 verses9 0 -=5ress -dition )sta vers'o pode ser bai6ada grat"itamente e a mais "tiliKada por desenvolvedores e est"dantes da rea. 1onta com "ma limita'o de G,- para os ar7"ivos de dados 2 3or4grou5 -dition Lers'o para empresas, 7"e precisam "tiliKar bancos de dados sem limites 7"anto ao taman o e N 7"antidade de "s"rios. : Deve o5er -dition Lers'o para o desenvolvedor, permite desenvolver 7"al7"er tipo de aplica'o. 2 Standard -dition Oferece "ma sol"'o para pe7"enas e mdias empresas 7"e b"scam "ma sol"'o fcil de "tiliKar e 7"e se9a capaK de s"portar atividades comerciais. 5 -nter5rise -dition Op'o mais indicada para os "s"rios 7"e b"scam a vers'o com maior escalabilidade e disponibilidade.

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 2 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

6 'o"i e -dition 1om esta edi'o, o desenvolvimento de aplica#es relacionadas N -"siness Anteligence e ao gerenciamento de dados pode ser implementado em dispositivos m!veis. J *o SQL Server 200>, temos 5 verses9 0 -nter5rise -dition /sada por grandes empresas 7"e precisam de "m fl"6o maior de dados. 8 o"tras d"as vers#es, Deve o5er e -va uation, 7"e tem as mesmas f"ncionalidades da )nterprise com alg"mas restri#es em se" licenciamento. 0s diferenas entre as vers#es Standard e )nterprise s'o maiores no SQL 200$ do 7"e na vers'o 2005. 2 Standard -dition Lers'o para pe7"enas e mdias empresas, tem "m maior poder em anlise de dados e Eeporting Services. : 3or4grou5 -dition Ancl"i os rec"rsos bsicos dos bancos de dados relacionais, m"ito "sado para f"n#es de replica'o de dados. >ais apropriada para empresas 7"e precisam de performance em sincroniKa'o remota o" para servidores geograficamente distantes. 2 -=5ress -dition Lers'o grat"ita do SQL Server, essencial para 7"em 7"er aprender a constr"ir aplica#es pe7"enas. /sada em larga escala por est"dantes. 5 !om5a$t -dition >ais "ma vers'o grat"ita do SQL Server, "sada principalmente em aplicativos m!veis, mais tambm em des(tops e clientes.

SQL Server 2005 Parte : O"8etos do SQL Server, Data"ases, Ti5os de Dados, Ta"e as do Sistema e !riao de Ta"e as
Ol pessoal, voltamos com nosso c"rso bsico de SQL Server. Nesta parte, iremos descrever os Ob9etos do SQL Server, mostrar a defini'o e cria'o de "m .atabase, mostrarmos os tipos de dados, as tabelas do sistema e comear a cria'o das tabelas. 0compan em; O"8etos do SQL Server 0 vers'o 2005 do SQL Server nos oferece diferentes tipos de ob9etos, como descrevemos abai6o; + Data"ase Os ob9etos do sistema s'o criados dentro de "ma estr"t"ra l!gica 7"e corresponde ao ob9eto .atabase, iremos falar dele mais adiante. + Ta" e Os dados do sistema s'o incl"sos neste ob9eto de d"as dimens#es, 7"e formado por lin as e col"nas. + !onstraint, Defau t e ?u e 1onsistem em regras "sadas para implementar a consist:ncia e a integridade dos dados. >ais sobre elas em artigos f"t"ros. + Data T(5e e .ser Defined Data T(5e Os dados s'o armaKenados no disco sob "m formato representado pelo datat=pe. /m datat=pe dever ser atrib"Mdo a cada col"na de "ma tabela.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 3 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

+ @ie; )ste ob9eto nos oferece "ma vis"aliKa'o l!gica dos dados de "ma tabela, de modo 7"e diversas aplica#es possam compartil Jla. + Inde= S'o ob9etos responsveis pela otimiKa'o de acesso aos dados de "ma tabela, com o ob9etivo de agiliKar determinadas pes7"isas de dados. + Pro$edure Neste ob9eto, encontramos "m bloco de comandos Transa$t+SQL, responsvel por "ma determinada tarefa. S"a l!gica pode ser compartil ada por vrias aplica#es. >"ito "tiliKado at"almente em praticamente todo tipo de empresa. + Trigger 1omo a ?roced"re, este ob9eto tambm poss"i "m bloco de comandos <ransactJSQL. O criado sobre "ma tabela e ativado no momento da e6ec"'o dos comandos .PD)T-, I*S-?T e@o" D-L-T-. + Aun$tion Neste ob9eto, temos "m bloco de comandos <ransactJSQL responsvel por "ma determinada tarefa. 1omo a ?roced"re, s"a l!gica pode ser compartil ada por N aplica#es. Amportante diKer 7"e "ma f"n'o S)>?E) retornar "m valor. Obs; Os ob9etos Pro$edure, Trigger e Aun$tion s'o processados rapidamente, pois se" c!digo tende a ficar compilado na mem!ria. Asso acontece por7"e estes ob9etos s'o e6ec"tados no servidor de dados. Data"ases 1omo dito anteriormente, dentro do ob9eto .atabase s'o 7"e faKem parte do sistema, o" se9a, "ma estr"t"ra l!gica formada ar7"ivo, "m responsvel pelo armaKenamento dos dados e o"tro transa#es feitas. O(, mais como e" crio "m .atabaseP Simples* ?or !?-)T- D)T)&)S-. criados os ob9etos por dois tipos de 7"e armaKena as meio da instr"'o

?or e6emplo, vamos diKer 7"e 7"ero criar "m database c amado 1lientes. ?ara isso, abro o SQL Server, crio "ma nova 7"er=, digito a instr"'o !?-)T- D)T)&)S- 1lientes e aperto A5 o" clico em -=e$ute. Le9a abai6o;

1omo de se esperar, assim 7"e criamos "m database, n'o tabelas no mesmo, m"ito menos registros. >ais, antes 7"e pensemos em inserir tabelas %e registros&, precisamos informar ao SQL Server 7"al database iremos "tiliKar. ?ara isso, "samos a instr"'o .Snomedodata"ase. 1onfira abai6o;
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 4 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Logo abai6o da min a instr"'o "sei a palavra %O, 7"e nada mais 7"e "ma simples maneira de diKer ao SQL para seg"ir na respectiva instr"'o. )sse comando n'o obrigat!rio. .a mesma forma, se dese9armos e6cl"ir o database recm criado, devemos "sar a instr"'o D?OP D)T)&)S-. 0penas ressaltando 7"e, se estivermos dentro do database 7"e iremos e6cl"ir, o SQL nos impede de faKermos isso. ?ara resolver isso, simplesmente saia do database e v para o master por e6emplo, como mostra a imagem a seg"ir;

?odemos notar 7"e o database foi mesmo e6cl"Mdo, pois vemos acima no .rop.oFnList )va ia" e Data"ases. Ti5os de Dados Os tipos de dados s'o classificados em diferentes categorias e permitem N formatos. 0bai6o "ma descri'o de cada categoria e de cada tipo de dado do SQL Server 2005; + &aseados em !ara$teres9 + !/arBnC <rataJse de "m datat=pe 7"e aceita como valor 7"al7"er dMgito, sendo 7"e o espao oc"pado no disco de "m dMgito por caractere. O possMvel "tiliKar at $ mil dMgitos.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 5 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

+ @ar$/arBnC <ambm aceita como valor 7"al7"er dMgito e o espao oc"pado em disco de "m dMgito por caractere. ?ermite "sar tambm no m6imo $ mil dMgitos. 0 diferena pro 1 ar, 7"e o Larc ar geralmente "sado 7"ando n'o sei o taman o fi6o de "m campo. + Te=t Q"al7"er dMgito pode ser "sado neste datat=pe, sendo oc"pado 2 b=te por caractere, o e7"ivalente a 2102D12>:162D b=tes. + &aseados em !ara$teres .ni$ode9 + *$/arBnC Neste datat=pe, pode "sar 7"al7"er dMgito, sendo oc"pados 2 b=tes a cada caractere. O possMvel "sar at $ mil b=tes. + *var$/arBnC Ag"al ao tipo anterior, com a Inica diferena 7"e "so esse tipo 7"ando n'o sei o taman o fi6o de "m campo. 2 b=tes s'o oc"pados a cada caractere. O possMvel "sar at > mi b=tes. + *te=t <ambm aceita 7"al7"er digito, 2 b=tes s'o oc"pados a cada caractere. ?odem ser "sados at 010D:1D201>2: b=tes. + &aseados em *um<ri$os Inteiros9 + &igint 0ceita valores entre J2Q4R e 2Q4RJ2, sendo 7"e esse datat=pe oc"pa $ b=tes. + Int Os valores aceitos a7"i variam entre J2QR2 a 2QR2J2. Oc"pa G b=tes. + Sma int 0ceita valores entre JR254$ at R2545 e oc"pa 2 b=tes. + Tin(int Os valores aceitos a7"i variam entre 0 e 255, oc"pa apenas 2 b=te. + &it O "m tipo de dado inteiro %con ecido tambm como booleano&, c"9o valor pode corresponder a *.LL, 0 o" 2. ?odemos converter valores de string T?.- e A)LS- em valores de bit, sendo 7"e <E/) corresponde a 0 e B0LS) a 0. + &aseados em *um<ri$os -=atos9 + De$ima BP,SC Os valores aceitos variam entre J20QR$J2 e 20QR$J2, sendo 7"e o espao oc"pado varia de acordo com a precis'o. Se a precis'o for de 2 a 3, o espao oc"pado de 5 b=tes. Se a precis'o de 20 a 23, o espao oc"pado de 3 b=tes, 9 se a precis'o for de 20 a 2$, o espao oc"pado de 2R b=tes, e se a precis'o for de 23 a R$, o espao oc"pado de 25 b=tes. + *um<ri$oBP,SC 1onsiderado "m sinSnimo do datat=pe decimal, o n"mrico tambm permite valores entre J20QR$J2 e 20QR$J2 e o espao oc"pado o mesmo do anterior. + &aseados em *um<ri$os )5ro=imados9 + A oatEBnCF O mesmo 7"e dou" e 5re$ision 7"ando o valor de n 5R, este datat=pe aceita valores entre J2.53) T R0$ e 2.53) T R0$. O espao oc"pado varia de acordo com o valor de n. Se esse valor estiver entre 2 e 2G, a precis'o ser de 5 dMgitos, sendo 7"e o espao oc"pado ser de G b=tes. Se o valor de n estiver entre 25 e 5R, s"a precis'o ser de 25 dMgitos, assim sendo o espao oc"pado ser de $ b=tes.

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 6 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

+ ?ea )ste datat=pe similar ao f oatBnC 7"ando o valor de n 2G. Os valores aceitos variam entre JR.G0) T R$ e R.G0) T R$. )sse datat=pe oc"pa G b=tes. + &aseados em @a ores *um<ri$os 'onet#rios9 + 'one( )ste datat=pe aceita valores entre J2Q4R e 2Q4RJ2, sendo 7"e $ b=tes s'o oc"pados. + Sma mone( O possMvel "sar valores entre J2QR2 e 2QR2J2, sendo 7"e G b=tes s'o oc"pados. + &aseados em Data e Gora9 + Datetime ?ermite o "so de valores entre 0,0,0D5: e :0,02,HHHH. )ste datat=pe oc"pa $ b=tes e s"a precis'o atinge :1:: miliseg"ndos. + Sma datetime 0ceita o "so de valores entre 2@2@2300 e 04@04@2053, sendo 7"e s"a precis'o de 2 min"to e oc"pa G b=tes em disco. + &aseados em &in#rios9 + &inar(EBnCF )ste datat=pe representa os dados 7"e ser'o "sados no formato binrio. O espao oc"pado de nTG b=tes, sendo 7"e n pode variar entre 2 e $000 b=tes. + @ar"inar(EBnCF 07"i tambm "sado o formato binrio, o espao oc"pado e a varia'o de n ig"al ao anterior. + Image O formato binrio tambm "sado a7"i, sendo 7"e o espao oc"pado de 2QR2J 2 b=tes o" 2102D12>:162D. + &aseados em Ti5os de Dados -s5e$iais9 + .ni7ueidentifier O formato e6adecimal "sado para o armaKenamento de dados binrios, sendo 7"e este datat=pe oc"pa 24 b=tes. + Timestam5 /m valor binrio gerado pelo SQL Server, sendo 7"e esse datat=pe oc"pa $ b=tes. + &it )ste datat=pe pode apresentar 0, 0 o" *.LL, como valor, sendo oc"pado 2 b=te. <ambm "tiliKado como "m tipo de dado int. + S7 I@ariant Os valores a7"i podem ser de 7"al7"er datat=pe, sendo 7"e possMvel armaKenar at $024 b=tes. + !ursor .atat=pe "sado somente 7"ando trabal amos com variveis. + Ta" e .atat=pe "sado somente 7"ando trabal amos com variveis de mem!ria. + Jm ?or este datat=pe, podemos armaKenar fragmentos de doc"mentos U>L em "m banco de dados SQL. )stes fragmentos correspondem N instVncias U>L 7"e n'o poss"em "m determinado elemento de nMvel s"perior. )ssas instVncias s'o armaKenadas 7"ando

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 7 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

criamos variveis e col"nas com datat=pe U>L. O espao m6imo oc"pado deve ser de 2,-. Ta"e as do Sistema 0p!s instalarmos o SQL Server, s'o criados alg"ns bancos de dados 7"e permitem ao softFare gerenciar os sistemas de "s"rios, faKendo assim com 7"e a integridade e a seg"rana dos dados se9am mantidas. )sses bancos de dados s'o c amados de bancos de dados gerenciais. .entro deles, s'o criadas tabelas por meio da instala'o do SQL Server, 7"e recebem o nome de s(stem ta" es. 0bai6o descrevo estes bancos de dados; + ?esour$e )ste banco poss"i todos os ob9etos de sistema do SQL Server, os 7"ais s'o vis"aliKados de forma l!gica no es7"ema s(s de todos os bancos de dados. O Eeso"rce, 7"e "m banco de dados somente leit"ra, n'o poss"i metadados o" dados dos "s"rios. )le permite a rpida at"aliKa'o de vers#es e o fcil rollbac( dos pacotes de servios. Im5ortante sa ientar 7ue, em /i5Ktese a guma, devemos mover ou renomear o ar7uivo do "an$o de dados ?esour$e, 5ois, se isso a$onte$er, o SQL Server no ser# ini$iado. + 'aster O banco >aster o responsvel por efet"ar os registros de todas as informa#es do nMvel do sistema. )le registra as informa#es para iniciar o SQL Server, contas de login, config"ra#es referentes ao sistema e a e6ist:ncia de o"tros bancos de dados e se"s ar7"ivos. Se este banco estiver indisponMvel, tornaJse invivel iniciar o SQL Server. + T-'PD& )ste o banco responsvel por manter todo o tipo de armaKenamento temporrio, incl"sive o de tabelas de carter temporrio. )le considerado "m rec"rso global, visto 7"e armaKena tabelas e stored proced"res temporrias 7"e podem ser acessadas por todos os "s"rios 7"e estiverem conectados. <odas as veKes 7"e o SQL Server iniciado, este banco recriado, o 7"e significa 7"e sempre "ma c!pia limpa do banco de dados 7"ando o sistema iniciado. .essa forma, 7"ando o SQL encerrado, n'o e6istem cone6#es ativas, sendo 7"e entre "ma sess'o e o"tra n'o itens a serem salvos em "m banco de dados tem5d". Lale ressaltar 7"e n'o podemos faKer o bac("p o" resta"rar esse banco de dados. + 'OD-L )ste banco "sado como modelo para criar todos os o"tros bancos de dados. .essa forma, 7"ando solicitamos a cria'o de "m novo banco de dados ao SQL Server, este copia todos os ob9etos armaKenados no >O.)L para o novo banco de dados. 1aso se9am feitas altera#es sobre este banco de dados, todos a7"eles criados posteriormente tambm refletir'o tais modifica#es. + 'SD& )ste banco "sado pelo SQL Server 0gent com a finalidade de registrar operadores e programar a e6ec"'o de 9obs e de alerts. O msd" "tiliKado para realiKar o armaKenamento de dados n'o apenas pelo SQL Server 0gent, mais tambm pelo SQL Server >anagement St"dio. /m ist!rico completo de bac("p e resta"ra'o online mantido pelo SQL Server no banco de dados msd". )sses dados s'o "sados pelo SQL Server a fim de criar "m plane9amento de resta"ra'o do banco de dados e aplicar bac("ps de log de transa'o. EecomendaJse realiKar "m bac("p do msd" com fre7":ncia caso esse banco sofra constantes altera#es. 1aso esse banco se9a danificado, as informa#es referentes ao bac("p e N resta"ra'o s'o perdidas, bem como as informa#es "tiliKadas pelo SQL Server 0gent.

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 8 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

@isua iLando os "an$os de dados do sistema 1aso voc: dese9e vis"aliKar os bancos de dados do sistema, faa o seg"inte; abra o SQL Server, v a 9anela Ob9ect )6plorer %B$&, e6panda a op'o .atabases e e6panda a op'o S=stem .atabases, como mostra a imagem a seg"ir.

Se voc: 7"iser ver os databases via instr"'o SQL, crie "ma nova 7"er= e digite S-L-!T M A?O' SNSD)T)&)S-S. Le9a o res"ltado abai6o;

!riao de Ta"e as Os dados de "m sistema s'o armaKenados em ob9etos denominados tabelas. 1ada "ma das col"nas de "ma tabela refereJse a "m atrib"to associado a "ma determinada entidade. Os datat=pes, o" se9a, os formatos "sados para a grava'o dos dados
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 9 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

no disco %descritos "m a "m anteriormente& dever'o ser especificados para cada col"na da tabela. O(, ap!s descrever de forma res"mida a parte te!rica, vamos a prtica. ?ara criarmos "ma tabela, devemos "sar a instr"'o !?-)T- T)&L-, desde 7"e criemos esta tabela em "m banco de dados e6istente. No e6emplo abai6o, crio e me conecto ao database 1lientes e crio "ma tabela simples de 1liente;

.e forma simplificada assim 7"e criamos nossas tabelas, lembrando sempre de "sar esta estr"t"ra !?-)T- T)&L- *omeDaTa"e a B C, dentro dos par:nteses vai toda a estr"t"ra da min a tabela, como os nomes das col"nas e os tipos de dados referentes as col"nas. ?ara e6ibir min a tabela criada "so a instr"'o S-L-!T, 7"e ser abordada no pr!6imo artigo. .esta forma, terminamos a7"i mais "ma parte de nossa srie de artigos, o" mel or, diKendo, de nosso miniJc"rso bsico de SQL Server. Na pr!6ima parte, comearemos a falar dos comandos D'L, como o I*S-?T e S-L-!T. 0g"ardem*

SQL Server 2005 Parte 2 !omandos D'L Insert e Se e$t


Ol pessoal, voltamos com nosso c"rso bsico de SQL Server. Nesta parte, iremos aprender o 7"e s'o os 1omandos .>L, e falaremos sobre dois deles, o Insert e o Se e$t, seg"idos de alg"ns e6emplos 7"e il"stram o "so dos comandos. 0compan em;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 10 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

!omandos D'L Os comandos .ata >anip"lation Lang"age, o" apenas .>L s'o "tiliKados para realiKar incl"s#es, cons"ltas, e6cl"s#es e altera#es de dados presentes em registros. ?or estes comandos, estas tarefas podem ser e6ec"tadas em vrios registros de diversas tabelas ao mesmo tempo. Os .>L responsveis pelas f"n#es citadas acima s'o I*S-?T, S-L-!T, .PD)T- e D-L-T-, respectivamente. 1omo dito anteriormente, neste artigo irei falar sobre os dois primeiros mostrando os conceitos e alg"ns e6emplos prticos no SQL Server. Insert /samos o comando Ansert para incl"ir dados em "ma o" mais col"nas de "ma tabela. )ste comando tem a seg"inte sinta6e; I*S-?T EI*TOF *omedaTa"e a EBnomesdas$o unasCF @)L.-S B@a oresC Os valores entre colc etes, s'o opcionais, o" se9a, voc: pode "sar somente I*S-?T *omedaTa"e a @)L.-S B@a oresC Os valores descritos 9"nto ao comando ANS)E< s'o transformados em "ma o" mais lin as da tabela. Os nomes das col"nas nas 7"ais os dados ser'o inseridos devem ser separados por vMrg"las. 0s col"nas 7"e n'o foram declaradas no comando I*S-?T podem apresentar "m valor padr'o, caso essa defini'o se9a config"rada pelo "s"rio, o" o valor *.LL. Lamos tomar como e6emplo a tabela de clientes abai6o;

?ara faK:Jla, precisamos faKer o "so da instr"'o ANS)E<, como mostra a imagem a seg"ir;

Se voc: perceber, na imagem da tabela G registros e na imagem acima, do Ansert, tem apenas R. W e6plico o por7"e disso. )6istem dois tipos de ANS)E<, o 5osi$iona e o de$ arativo. O posicional deve ser "sado 7"ando precisamos incl"ir dados de acordo com a ordem fMsica das col"nas. O Ansert da imagem acima "m e6emplo disso. W o Ansert declarativo deve ser "sado 7"ando dese9amos incl"ir dados na tabela de modo 7"e possamos escol er a ordem dos valores a
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 11 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

serem incl"sos. Neste tipo de Ansert, 7"e nosso GX 7"e est faltando, nossa instr"'o fica como a imagem abai6o;

Neste e6emplo, o res"ltado ser o mesmo, 9 7"e "sei a mesma ordem do Ansert posicional, mais fica a dica se voc: 7"iser alterar a ordem e ver o res"ltado. ?ara ver os res"ltados, voc: ter 7"e "sar a instr"'o S-L-!T, instr"'o essa 7"e abordarei a partir de agora. Se e$t O Select o principal comando "sado em SQL para realiKar cons"ltas a dados pertencentes a "ma tabela. ?or meio desse simples comando, podemos retornar dados para o"tros comandos SQL e tambm para o"tras aplica#es. ?ara e6ibir todas as col"nas da tabela 1lientes, "so S-L-!T M A?O' !LI-*T-S, 9 para e6ibir alg"mas col"nas, devemos s"bstit"ir o "so do asterisco pelos respectivos nomes das col"nas, como por e6emplo S-L-!T *ome! iente, -ndere$o! iente A?O' !LI-*T-S. .sando ) ias o nome de "ma col"na pode ser s"bstit"Mdo por "ma espcie de apelido, criado para facilitar s"a vis"aliKa'o ao "s"rio. )sse apelido c amado de ) ias. Lamos tomar como e6emplo novamente nossa tabela de clientes abai6o;

Os nomes das col"nas s'o, na ordem 7"e aparece acima, !OD!LI-*T-, *O'-!LI-*T-, -*D-?-!O!LI-*T-, AO*-!LI-*T-, -')IL!LI-*T-, S)L)?IO!LI-*T- e D)T)!LI-*T-. ?ara 7"e elas fi7"em com "m nome mel or apresentvel ao "s"rio, como na imagem acima, faa a seg"inte instr"'o;

N'o necessrio "sar a cl"s"la )S para obter o res"ltado dese9ado. )ntretanto, como boas prticas, diversos "s"rios preferem manter essa cl"s"la para facilitar a identifica'o do alias. ?odemos omitir o )S o" trocJlo por "m sinal de ig"al. 1omo voc: pode perceber na imagem, 7"ando 7"eremos dar "m nome composto ao 0lias, temos 7"e colocJlos entre colc etes. !o una @irtua ?odemos tambm criar "ma col"na virt"al "sando o Select, o" se9a, podemos e6ibir "ma col"na n'o disponMvel fisicamente na tabela. No e6emplo abai6o, a
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 12 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

col"na <ipo de 1liente n'o faK parte do banco de dados, mais por meio do Select, podemos definiJla como e6istente;

-=i"indo um $# $u o Nem sempre necessrio gravar o res"ltado de "m clc"lo para 7"e esse valor se9a e6ibido na tabela. ?or e6emplo, imaginemos 7"e o salrio dos clientes poss"i "m a"mento de 20Y. .ese9amos vis"aliKar esse a"mento, mais n'o inseriJlos no banco. ?ara isso, faa o seg"inte;

.essa forma, obtemos "ma rpida vis"aliKa'o de 7"anto seria o a"mento aos clientes, sem precisar gravar esses dados no banco. .so da ! #usu a Distin$t ?or meio dessa cl"s"la, e6ibido apenas "ma veK os dados repetidos de determinada tabela. 1omo voc: pode perceber na imagem acima, 9 ten o "ma col"na d"plicada propositalmente, 7"e a cliente 0ndressa. No e6emplo abai6o, ten o na tabela 1lientes as col"nas d"plicadas, me gerando assim o dobro dos dados de 7"e preciso vis"aliKar;

No e6emplo, s'o apenas $, mais imagine o cenrio em "ma grande empresa com mil ares %at< mi /es& de dados repetidos. Seria "m grande desperdMcio de tempo e prod"tividade
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 13 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

vis"aliKarmos vrios dados repetidos. ?ara isso, "samos a cl"s"la .istinct, por meio da seg"inte instr"'o;

Q"e ir me retornar apenas R res"ltados;

!o5iando dados de uma ta"e a a outra 1aso as estr"t"ras de d"as tabelas se9am similares o" diferentes, podemos copiar os dados de "ma para o"tra por meio dos seg"intes comandos. Insert $om Se e$t 7uando as ta"e as so iguais ?ara faKer este e6emplo, vamos criar "ma o"tra tabela, com a mesma estr"t"ra de col"nas da tabela de 1lientes. 1rie a tabela a seg"ir;

Logicamente esta tabela est sem dados, pois acabo" de ser criada. ?ara 7"e copiemos os dados da tabela 1lientes, mais simples do 7"e voc: imagina;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 14 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

1om apenas d"as lin as de instr"#es SQL, consigo copiar os dados de "ma tabela em o"tra vaKia. Insert $om Se e$t 7uando as ta"e as so diferentes Lamos s"por 7"e temos d"as tabelas distintas, 1lientes e B"ncionarios, com nImeros de col"nas diferentes;

)mbora a tabela 1lientes conten a dados, nem todas as col"nas de B"ncionario podem ser encontradas na 1liente. ?ara 7"e se9a possMvel copiar dados de 1lientes para B"ncionario, devemos "sar o comando S)L)1< de col"nas virt"ais, como mostra a imagem abai6o;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 15 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

.esta forma, "sando col"nas virt"ais, consigo copiar os dados e6istentes da tabela 1lientes para a tabela B"ncionrio. 1aso as col"nas da tabela B"ncionario aceitem valores n"los %N/LL&, podemos escrever a instr"'o de o"tra forma, como mostra a imagem;

0gora vamos s"por o contrrio, o" se9a, agora a tabela B"ncionario 7"e ter menos dados 7"e a tabela 1lientes;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 16 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Neste caso devemos faKer como mostra a imagem a seg"ir;

.esta forma, terminamos a7"i mais "ma parte de nossa srie de artigos. Na pr!6ima parte, contin"aremos falando dos comandos D'L, abordando o .PD)T- e o D-L-T-. 0g"ardem*

SQL Server 2005 Parte 5 !omandos D'L .5date e De ete


Ol pessoal, voltamos com nosso c"rso bsico de SQL Server. Nesta parte, iremos ver os comandos .>L /pdate e .elete e veremos a cl"s"la H ere. .a mesma forma como fiKemos na parte anterior, iremos faKer nessa alg"ns e6emplos para mel or entendimento desses comandos. 1onfiram;
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 17 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

.5date Os dados pertencentes a mIltiplas lin as de "ma tabela podem ser alterados por meio do comando /?.0<). Q"ando "sarmos o .PD)T-, devemos especificar alg"mas informa#es, como o nome da tabela 7"e ser at"aliKada e os filtros 7"e ser'o "sados na at"aliKa'o. Sinta6e bsica; .PD)T- nomedatabela S-T col"na2 Z valor2, col"na2 Z valor2, col"naR Z valorR, 3G-?- critrio. Amportante; .evemos passar sempre o 3/ere, 7"e "ma espcie de filtro em nossa tabela, por7"e sen'o ao passarmos at"aliKaremos TODOS os dados da tabela e isso pode acarretar em diversos problemas, dependendo do taman o e da comple6idade da s"a tabela. Falarei mais a respeito do Where daqui a pouco. ) terando os dados de uma $o una ?ara simplificar o "so do /?.0<), vamos "sar as tabelas do artigo anterior, ! ientes e Aun$ionarios, conforme voc: v: abai6o;

Lamos alterar os salrios dos f"ncionrios, da tabela B"ncionario. ?ara isso, faa o seg"inte comando;

Nessa instr"'o SQL, do "m a"mento de 20Y no salrio dos f"ncionrios 7"e estiverem com o salrio menor 7"e 2300,00, 7"e nesse e6emplo s'o os 2 primeiros, 9 7"e o RX e o GX s'o o mesmo. O res"ltado ser esse;

) terando os dados de v#rias $o unas ?odemos alterar os dados de vrias col"nas. Lamos "sar desta veK a tabela 1lientes, como e6emplo. Lamos a"mentar em 5Y o salrio dos clientes 7"e gan arem mais do 7"e 2400.00. 0"mentaremos tambm em 2 dias o campo .ata1liente. 0 instr"'o de /pdate ficar assim;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 18 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

) o res"ltado ser esse;

?odemos "sar a cl"s"la /pdate de o"tras maneiras tambm, para at"aliKar "ma o" mais col"nas, como vimos nestes e6emplos. Sempre bom lembrar 7"e deve se tomar "m c"idado ao "sar o comando /pdate, principalmente em tabelas comple6as, 7"e conten am "m nImero grande de dados, por7"e o /pdate n'o tem volta, feK t feito* ?or isso tambm a importVncia de "sar a cl"s"la H ere 9"nto ao /pdate. .ei6o para 7"e voc:s "sem a criatividade e criem e6emplos bsicos de "so do /pdate. Q"al7"er dIvida com rela'o ao "so dele mande "m email para o endereo 7"e est no fim deste artigo. De ete O comando .)L)<) deve ser "sado 7"ando dese9amos e6cl"ir os dados de "ma tabela. Sinta6e bsica; .)L)<) BEO> nomedatabela. ?or e6emplo, se 7"isermos remover os dados da tabela B"ncionario, devemos e6ec"tar a seg"inte instr"'o SQL;

Q"e nos res"ltar na limpeKa completa dos dados da tabela B"ncionario;

Simples nP Lembrando 7"e este comando, assim como o .PD)T-, pode ser perigoso em alg"mas sit"a#es, 9 7"e, "ma veK e6ec"tado esses comandos, n'o ser possMvel desfaKer a a'o realiKada. ?ortanto, devemos ficar atentos ao "sar esses comandos em tabelas comple6as. ! #usu a 3/ere 1omo dito anteriormente, a "tilidade da cl"s"la 3G-?- a de ser "m filtro, 7"e determina 7"ais os dados 7"e ser'o afetados, podendo ser "sada 9"ntamente com S-L-!T, .PD)T- e D-L-T-. ?odemos diKer ent'o 7"e essa cl"s"la determina o escopo de "ma cons"lta a alg"mas lin as, realiKando a filtragem dos dados 7"e este9am de acordo com as condi#es definidas. 0bai6o vamos criar "ma nova tabela, a de Produtos, e "tiliKaremos a cl"s"la 3/ere 9"ntamente com as instr"#es S)L)1<, /?.0<) e .)L)<); .e inMcio vamos criar a tabela ?rod"tos[

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 19 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

[e inserir alg"ns dados;

Nossa tabela ficar com os seg"intes dados;

0gora vamos faKer "m S-L-!T, 7"e ir me retornar somente os prod"tos de Anformtica. ?ara isso, "so a cl"s"la 3G-?-, como na imagem a seg"ir;

O res"ltado ser esse;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 20 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

O(, a cons"lta s! me retorno" os prod"tos do tipo Anformtica, por meio da cl"s"la H8)E). 0gora 7"ero a"mentar em 5Y o valor dos prod"tos do tipo Anformtica. 1omo e" faoP /sando .PD)T- com 3G-?-;

) o me" res"ltado ser;

?ronto, a"mentei em 5Y o valor dos prod"tos de Anformtica. 0gora 7"ero apagar todos os prod"tos 7"e tiverem "m valor menor 7"e 200.00. 1omo faKerP /sando D-L-T- com 3G-?-;

1omo s! tMn amos 2 prod"tos com valor abai6o de 200.00, min a tabela ter agora $ prod"tos;

1om o H ere, podemos faKer mil ares de filtros especMficos para col"nas diversas. )ssa foi apenas "ma breve introd"'o a cl"s"la H ere. Na pr!6ima parte, veremos o "so do H ere com vrios operadores especMficos, como o )*D, O?, I*, &-T3--*, LIO-, entre o"tros. 0g"ardem*

SQL Server 200> Parte 6 ! #usu a 3/ere e seus O5eradores


til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 21 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Nesta parte, iremos ver o "so da cl"s"la 3G-?- em con9"nto com os operadores )*D, O?, I*, *OT I*, &-T3--* e *OT &-T3--*. .ei6aremos a e6plica'o e os e6emplos do "so dos operadores LIO- e *OT LIO- para a pr!6ima parte de nosso c"rso. 1omo feito em partes anteriores, faremos nessa alg"ns e6emplos para mel or entendimento do "so do H ere com esses operadores. 1omo foi e6plicado os conceitos e mostrados e6emplos do H ere na parte anterior, nessa iremos direto ao "so dele com os operadores. 0compan em os conceitos e e6emplos; 3G-?- $om )*D e O? /samos os operadores )*D e O? 9"nto com H ere 7"ando necessrio "sar mais de "ma condi'o de compara'o. 1omo e6emplo, iremos "sar a tabela de Produtos ao longo de todo este artigo, criada na parte anterior %ao final do artigo, irei disponibiliKar o script dos e6emplos&. Lamos ao e6emplo; iremos "tiliKar o operador )*D para determinar "m acrscimo de 00P nos prod"tos de Inform#ti$a c"9o valor se9a ig"al o" inferior a :50100. ?ara isso, faa a seg"inte instr"'o %antes d: "m Select \ Brom ?rod"tos e note o valor dos prod"tos Pro$essador e 'onitor&;

Nossa tabela ficar assim;

?ercebe" a diferenaP 0s col"nas Pro$essador e 'onitor sofreram "m acrscimo de 20Y em se" valor. O operador O? "sado especificamente 7"ando dese9amos atender a d"as condi#es distintas. 1onsiderando a tabela ?rod"to, o OE deve ser "tiliKado 7"ando dese9amos, por e6emplo, atrib"ir "m acrscimo de 20Y sobre o valor dos prod"tos do tipo )letrSnicos o" sobre o valor da7"eles c"9o preo maior o" ig"al a R50.00. Neste caso, "ma das condi#es deve ser atendida. ?ara isso, precisamos e6ec"tar a seg"inte instr"'o %sempre lembrando 7"e, como .PD)T- no tem vo ta, feK t feito, "se o Select \ Brom ?rod"tos para notar a diferena antes e depois do /?.0<)&;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 22 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Q"e nos res"ltar nesta tabela;

Neste e6emplo observamos 7"e o "so do operador O? m"ito mais abrangente do 7"e o operador )*D, 9 7"e podemos perceber 7"e "ma 7"antidade maior de lin as foi atingida ap!s o "so do .PD)T-. .ito isto, podemos concl"ir 7"e o operador )*D permite realiKar a avalia'o de d"as e6press#es con9"ntamente, sendo 7"e o res"ltado obtido apenas ser verdadeiro se ambas as e6press#es forem verdadeiras. 0o contrrio, o operador O? permite 7"e realiKemos a avalia'o de d"as e6press#es de forma se5arada. 0ssim, o res"ltado ser verdadeiro se somente "ma e6press'o for verdadeira ou se ambas forem verdadeiras. 3G-?- $om I* ?odemos "sar o operador I* no l"gar do operador O? em determinadas situaes. O I* permite verificar se o valor de "ma col"na est presente em "ma lista de elementos. 1onsiderando a tabela ?rod"tos, podemos "tiliKar o AN o" o OE para selecionar os prod"tos do tipo - etrQni$os o" do tipo Inform#ti$a. 1onfira a seg"ir como faKer esta cons"lta com ambos os operadores; + O5erador O?

+ O5erador I*

0mbas as cons"ltas nos trar'o o mesmo res"ltado;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 23 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

3G-?- $om *OT I* )ste operador, ao contrrio do AN, permite obter como res"ltado o valor de "ma col"na 7"e n'o pertence a "ma determinada lista de elementos, como podemos perceber pela seg"inte instr"'o;

O res"ltado ser o seg"inte;

?odemos perceber acima 7"e foram e6ibidos apenas os prod"tos 7"e n'o s'o do tipo - etrQni$os o" Inform#ti$a. ?odemos "sar tambm o operador )*D em con9"nto com o sinal de compara'o diferente %]^& para obter o mesmo res"ltado, como a instr"'o a seg"irJnos mostra;

3G-?- $om &-T3--* O operador &-T3--* tem a finalidade de permitir a cons"lta entre "ma determinada fai6a de valores. .essa forma, podemos "sar este operador para selecionar todos os prod"tos c"9os valores este9am entre :00100 e 500100 na tabela Produtos. ?ara isso devemos faKer essa instr"'o;

Q"e ter como res"ltado essa cons"lta;

O"tra forma de obter o mesmo res"ltado por meio do seg"inte comando;

?or meio do operador )*D e dos operadores relacionais R, S e T tambm possMvel cons"ltar "ma determinada fai6a de valores. No entanto, por meio do &-T3--* esta cons"lta tornaJse ainda mais simples. )ste operador permite c ecar se o valor de "ma col"na encontraJse em "m determinado intervalo. )le pode ser "tiliKado para verificar intervalos de data, caracteres, entre o"tros.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 24 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

3G-?- $om *OT &-T3--* O operador *OT &-T3--*, ao contrrio do anteriormente descrito, permite cons"ltar os valores 7"e n'o se encontram em "ma determinada fai6a. 1onsiderando nossa tabela, podemos cons"ltar os prod"tos c"9os valores n'o est'o entre :00100 e 500100. ?ara isso, preciso e6ec"tar o comando descrito a seg"ir;

1om a e6ec"'o desta instr"'o, o res"ltado obtido o seg"inte;

O"tra forma de se obter o mesmo res"ltado o seg"inte;

1om a e6ec"'o deste comando, o res"ltado obtido com a tabela Produtos o mesmo apresentado com a e6ec"'o do operador *OT &-T3--*. 0ssim finaliKamos mais esta parte de nosso c"rso bsico de SQL Server. Na pr!6ima parte, iremos ver o "so do 3/ere em con9"nto com os operadores LIO- e *OT LIO-. Leremos tambm os conceitos e e6emplos das cl"s"las O?D-? &N, TOP, e TOP 3ITG TI-S. 0g"ardem*

SQL Server 2005 Parte D O5eradores Li4e e *ot Li4e e ! #usu a Order &(
Nesta parte, veremos o "so da cl"s"la 3G-?- em con9"nto com os operadores LIO- e *OT LIO-. Leremos tambm as cl"s"las O?D-? &N, TOP e TOP 3ITG TI-S separadas e em con9"nto. 0compan em; 3G-?- $om LIO- O operador LIO- empregado nas sit"a#es em 7"e "samos como base para realiKar pes7"isas %o" filtros& as col"nas 7"e est'o no formato caractere, como as col"nas *O'-P?OD.TO e TIPOP?OD.TO, de nossa tabela de ?rod"tos. ?or e6emplo, podemos "sar esse operador para obter como res"ltado todos os prod"tos c"9a primeira letra se9a !. ?ara 7"e isso acontea, devemos e6ec"tar a seg"inte instr"'o;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 25 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Q"e nos res"ltar nisso;

1omo dese9amos determinar apenas a letra inicial da palavra a fim de obter o res"ltado, devemos "tiliKar o caractere Y para representar 7"e 7"ais7"er o"tros caracteres podem estar contidos na palavra, desde 7"e ela se inicie com a letra !. Sendo assim, o Y representa "m caractere coringa. Lale destacar 7"e n'o apenas o primeiro caractere 7"e pode ser determinado para "ma cons"lta. Le9a o comando descrito a seg"ir, no 7"al dese9amos obter como res"ltado todos os nomes de prod"tos c"9o caractere inicial se9a ! e 7"e conten a o caractere D em 7"al7"er posi'o na palavra;

O res"ltado ser esse;

<ambm podemos obter como res"ltado as palavras 7"e conten am "m determinado caractere em 7"al7"er posi'o. O comando descrito a seg"ir retornar como res"ltado todos os prod"tos conten am o caractere ! em 7"al7"er posi'o. Le9a;

O res"ltado ser o seg"inte;

0lm destes tipos de cons"lta descritos, o operador LIO- tambm permite cons"ltar nomes de prod"tos 7"e conten am "ma determinada sMlaba. ?or e6emplo, para realiKar "ma cons"lta obtendo como res"ltado os nomes dos prod"tos 7"e conten am a sMlaba UorV, basta e6ec"tarem a seg"inte instr"'o;

1om essa instr"'o, teremos os seg"intes res"ltados;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 26 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

?odemos restringir ainda mais esta cons"lta determinando n'o apenas "ma sMlaba 7"e deve estar presente nos nomes dos prod"tos, mas tambm o"tra 7"e deve estar presente no tipo de prod"to. Le9amos o comando descrito a seg"ir, no 7"al dese9amos obter como res"ltado da cons"lta os prod"tos c"9os nomes poss"am a sMlaba UorV e os tipos 7"e poss"am a sMlaba UtiV;

O res"ltado obtido ser este;

1om isso, podemos concl"ir 7"e o operador LIO- em con9"nto da cl"s"la 3G-?- m"ito Itil 7"ando 7"eremos realiKar filtros diversos em cons"ltas. 3G-?- $om *OT LIO- Os operadores *OT LIO- s'o "sados de forma oposta ao operador LIO-. 1om eles obtemos o res"ltado de "ma cons"lta os nomes e tipos de prod"tos 7"e n'o poss"em tais caracteres o" sMlabas determinadas neste filtro. ?ara ficar clara a diferena entre os operadores, "saremos os mesmos e6emplos 7"e "samos acima, mais agora a fim de e6plicar a finalidade dos operadores *OT LIO-. Le9a;

O res"ltado ser esse;

0ssim como o operador LIO-, o *OT LIO- tambm permite 7"e mais de "m caractere se9a "sado para "ma cons"lta. Le9a o comando descrito a seg"ir, no 7"al dese9amos obter como res"ltado todos os nomes de prod"tos c"9o caractere inicial n'o se9a ! e 7"e n'o conten a o caractere D em 7"al7"er o"tra posi'o da palavra;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 27 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

O res"ltado ser esse;

<ambm podemos obter como res"ltado as palavras 7"e n'o conten am "m determinado caractere em 7"al7"er posi'o. O comando descrito a seg"ir retornar como res"ltado todos os prod"tos c"9os nomes n'o conten am o caractere - em 7"al7"er posi'o. Le9a;

O res"ltado ser esse;

1omo feito anteriormente, com o operador *OT LIO- podemos restringir ainda mais nossa cons"lta, determinando "ma sMlaba 7"e n'o deve estar presente no nome dos prod"tos e tambm "ma sMlaba 7"e n'o deve estar presente no tipo do prod"to. O comando a seg"ir nos permite obter como res"ltado os prod"tos c"9os nomes n'o poss"em a sMlaba UorV e os tipos 7"e n'o poss"em a sMlaba UtiV;

O res"ltado ser esse;

0ssim terminamos nossos e6emplos com o "so dos operadores LIO- e *OT LIO-. Bica a dica para 7"e treinem o"tros e6emplos com o "so destes operadores em con9"nto com a cl"s"la 3G-?-. !LW.S.L) O?D-? &N Q"ando precisamos 7"e o res"ltado de nossa cons"lta a "ma tabela se9a fornecido em "ma ordem especMfica, de acordo com "m determinado critrio, devemos "sar a cl"s"la OE.)E -_ 7"e, como o pr!prio nome diK, considera "ma certa ordem para retornar os dados de "ma cons"lta. 0 sinta6e padr'o a seg"inte; S-L-!T $o una0, $o una2 A?O' nomedata"e a O?D-? &N $o una0 . /saremos os e6emplos a seg"ir "sando a tabela ?rod"tos.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 28 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Ordenando 5or uma $o una ?ara 7"e os dados se9am retornados e e6ibidos de acordo com o nome da col"na, "samos o seg"inte comando;

O comando acima determina 7"e as col"nas *O'-P?OD.TO e @)LO?P?OD.TO se9am selecionadas. 0lm disso, a e6ibi'o dos valores da col"na *O'-P?OD.TO retornada em ordem alfabtica, como podemos ver;

Ordenando 5or v#rias $o unas O possMvel "sar a cl"s"la O?D-? &N para ordenar os dados por vrias col"nas, com base nos nomes das col"nas e nas posi#es das mesmas no S-L-!T. 1om o comando a seg"ir conseg"imos isso;

O res"ltado ser esse;

O?D-? &N )S! e D-S! 0 cl"s"la O?D-? &N pode ser "tiliKada com as op#es )S! e D-S!, descritas abai6o; + )S! Q"ando "tiliKada, esta op'o faK com 7"e as lin as se9am retornadas em ordem ascendente. + D-S! Q"ando "tiliKada, esta op'o faK com 7"e as lin as se9am retornadas em ordem descendente. 1aso n'o especifi7"emos )S! o" D-S!, os dados da tabela ser'o retornados em ordem ascendente, 7"e o valor padr'o.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 29 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

Le9a abai6o o "so das op#es; )S! )6ec"temos a seg"inte instr"'o;

) veremos o seg"inte res"ltado;

0 op'o )S! tambm pode ser "sada para ordenar os dados de "ma tabela conforme d"as col"nas diferentes. ?ara isso, devemos "sar a seg"inte instr"'o;

Aremos obter o seg"inte res"ltado;

D-S! 0 instr"'o a seg"ir demonstra o "so da op'o D-S! 9"nto ao O?D-? &N;

O res"ltado ser esse;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 30 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

0ssim como o )S!, a op'o D-S! tambm pode ser adotada para ordenar os dados de "ma tabela conforme d"as o" mais col"nas diferentes. ?ara isso, podemos "sar o seg"inte comando;

O res"ltado ser esse;

+ )S! e D-S! S"pon amos 7"e precisamos retornar o res"ltado de d"as col"nas de "ma tabela, mas ser necessrio 7"e os itens de "ma col"na se9am e6ibidos em ordem crescente e a da o"tra em ordem decrescente. Neste caso, podemos "sar as op#es )S! e D-S! 9"ntas, como mostra o e6emplo a seg"ir;

O res"ltado ser esse;

?ercebam 7"e podemos faKer diversas combina#es de cons"ltas com )S! e D-S!.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 31 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

!LW.S.L) TOP 1omo res"ltado de "ma cons"lta a "ma tabela de banco dados, temos a op'o de retornar a 7"antidade de lin as dese9ada, a partir da primeira lin a selecionada. ?ara isso, "samos a cl"s"la TOP. /sando a tabela Produtos como e6emplo, "samos a seg"inte instr"'o para retornar as cinco primeiras lin as desta tabela;

O res"ltado ser esse;

O "so da cl"s"la TOP merece as seg"intes considera#es; J )m Partitioned @ie;s, TOP n'o pode ser aplicada 9"nto Ns instr"#es .PD)T- e I*S-?T. J N'o ordem das lin as referenciadas na e6press'o TOP "tiliKada com as instr"#es I*S-?T, D-L-T- o" .PD)T-, sendo 7"e TOP n retornam lin as aleat!rias n como resposta. !LW.S.L) TOP !O' O?D-? &N 0s cl"s"las TOP e O?D-? &N podem e devem ser "tiliKadas de forma con9"nta. /sando novamente a tabela Produtos como e6emplo, vamos e6ibir os tr:s primeiros prod"tos de menor preo, dentre a rela'o de prod"tos da lista. /samos a seg"inte instr"'o;

Q"e nos res"ltar nisso;

.a mesma forma, se dese9ar retornarmos os dois prod"tos mais caros da tabela, por e6emplo, "saremos a seg"inte instr"'o;

Q"e nos res"ltar nesses valores;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 32 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

!LW.S.L) TOP 3ITG TI-S !O' O?D-? &N ?ermitida apenas em instr"#es S)L)1< e 7"ando "ma cl"s"la OE.)E -_ especificada, a cl"s"la TOP 3ITG TI-S determina 7"e lin as adicionais se9am retornadas a partir do con9"nto de res"ltados base com o mesmo valor apresentado nas col"nas O?D-? &N, sendo e6ibidas como as Iltimas das lin as TOP n BP-?!-*TC1 1onsiderando nossa tabela de Produtos, vamos e6ibir se"s dados em ordem crescente conforme a col"na QTD-P?OD.TO. Asso feito pela seg"inte instr"'o;

O res"ltado esse;

Lamos s"por agora 7"e precisamos obter como res"ltado o prod"to com a menor 7"antidade de "nidades. ?orm, preciso considerar a e6ist:ncia de prod"tos com a mesma 7"antidade de "nidades. Neste caso, e6ec"tamos a seg"inte instr"'o para retornar os prod"tos com o menor nImero de "nidades;

O res"ltado ser esse;

?odemos observar na imagem acima 7"e e6istem tr:s prod"tos com a mesma 7"antidade de "nidades, o" se9a, todos eles representam a menor 7"antidade de "nidades da tabela. Neste e6emplo, alm das cl"s"las O?D-? &N e TOP, 9 descritas anteriormente, a cl"s"la 3ITG TI-S retorna a primeira lin a da tabela, alm de todas as lin as 7"e apresentam 7"antidade id:ntica N 7"antidade do prod"to 7"e a cl"s"la TOP 0 seleciono".

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 33 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

.a mesma forma, por e6emplo, se 7"isermos retornar "m res"ltado com os dois prod"tos 7"e poss"em maior 7"antidade de "nidades, seg"ido dos prod"tos 7"e apresentam a mesma 7"antidade do seg"ndo prod"to, "samos a seg"inte instr"'o;

Q"e nos res"ltar nisso;

) a7"i finaliKamos nosso artigo. Bico" "m po"co e6tenso, mais ac o 7"e vale" a pena pelo conteIdo apresentado. )sto" disponibiliKando a 7"em se interessar o script de todo este artigo, com os ass"ntos abordados a7"i. O script est comentado para mel or entendimento. Q"em 7"iser bai6ar, s! clicar a7"i. N'o percam a pr!6ima parte de nosso miniJc"rso. Aremos ver as regras de integridade e consist:ncia dos dados e os tipos de constraints, como as c aves primrias e as c aves estrangeiras. 0g"ardem*

SQL Server 2005 Parte > ?egras de Integridade e !onsistXn$ia de Dados e !onstraints
Nesta parte, veremos os conceitos sobre integridade e consist:ncia de dados e os conceitos e e6emplos prticos com as constraints. 0compan em; Integridade e !onsistXn$ia de Dados ?ara 7"e "m sistema de banco de dados sempre possa fornecer informa#es confiveis aos "s"rios, o administrador deve filtrar alg"mas a#es realiKadas a fim de evitar a ocorr:ncia de possMveis erros relacionados Ns mesmas. 0lm disso, esse sistema deve ser capaK de receber informa#es de forma constante sem ter 7"e sofrer altera#es com a mesma fre7`:ncia. O banco de dados deve possibilitar a inser'o de "ma grande 7"antidade de dados sem 7"e o mesmo precise ser alterado em s"a estr"t"ra. .iferentes tipos de integridade podem ser estabelecidos 7"ando definida "ma rela'o entre tabelas por meio das c aves primrias e estrangeiras %e o"tros tipos de c aves 7"e irei descrever mais adiante&. *.LL , *OT *.LL *.LL %o mesmo 7"e n"lo& determina 7"e "ma col"na n'o deva receber nen "m valor, en7"anto *OT *.LL %n'o n"lo& indica 7"e "ma col"na dever sempre receber "m valor no momento em 7"e "ma lin a acrescentada. Le9a o e6emplo a seg"ir;
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 34 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

No e6emplo acima, temos tr:s valores 7"e n'o permitem valores n"los e dois 7"e permitem n"los, 7"e s'o os campos pra !5f,!n58 do cliente e pra Te efone. 1rie a tabela @endas e insira os registros abai6o, pois iremos "sJla mais a frente;

!onstraints 1onstraints s'o ob9etos "sados com a finalidade de estabelecer regras referentes N integridade e N consist:ncia nas col"nas das tabelas pertencentes a "m sistema de banco de dados. Asso importante por7"e para plane9ar e criar tabelas devemos garantir a integridade dos dados presentes nas col"nas e identificar os valores vlidos para tais dados. 1om o ob9etivo de asseg"rar a integridade dos dados de "ma tabela, o SQL Server nos oferece cinco tipos diferentes de constraints, os 7"ais est'o relacionados a cinco tipos de integridades. Le9a na tabela abai6o os cinco tipos de constraints e os respectivos tipos de integridade; Ti5os de integridade !/ave Prim#ria !/ave -strangeira !/ave Prim#ria Se$und#ria ou !/ave Yni$as ?egras de @a idao @a or Padro Ti5os de $onstraint !onstraint Primar( Oe( !onstraint Aoreign !onstraint ?eferen$es !onstraint .ni7ue !onstraint !/e$4 !onstraint Defau t

Oe(

Le9a agora a e6plica'o de cada "ma das constraints e o "so prtico em e6emplos; !/aves Prim#rias ,eralmente, as tabelas poss"em "ma col"na contendo valores capaKes de identificar "ma lin a de forma e6cl"siva. )ssa col"na recebe o nome de c ave primria, tambm con ecida como Primar( Oe(, c"9a finalidade asseg"rar a integridade dos dados da tabela. 0 c ave primria pode ser gerada no momento da cria'o o" da altera'o da tabela, bastando para isso definir "ma constraint Primar( Oe(. O importante ter em mente 7"e cada tabela pode conter apenas "ma constraint Primar( Oe(, sendo 7"e a col"na 7"e a representa n'o pode aceitar valores n"los. )ste tipo de constraint capaK de asseg"rar 7"e os dados se9am Inicos e e6cl"sivos, portanto, com"m 7"e a col"na 7"e a representa se9a c amada de col"na de identidade.

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 35 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

O .atabase )ngine o responsvel por asseg"rar a e6cl"sividade dos dados 7"ando "samos a constraint Primar( Oe(1 ?ara tanto, ele cria "m Mndice Inico para as col"nas relacionadas N c ave primria, o 7"al possibilita acessar os dados de forma rpida nas sit"a#es em 7"e s'o realiKadas cons"ltas por meio dessas c aves. 8 sit"a#es em 7"e a constraint Primar( Oe( definida em vrias col"nas. Q"ando isso ocorre, possMvel 7"e a9a valores d"plicados em "ma col"na, porm, a combina'o de valores da col"na 7"e representa a constraint Primar( Oe( deve ser Inica. PS: Como j dito em artigos anteriores, partes dos conceitos descritos ao longo deste artigo e de outros foram retirados das minhas apostilas de SQL Ser er, da !mpacta "ecnologia. )m nossos e6emplos vamos "sar a tabela @endas, 7"e criamos e inserimos registros anteriormente. Baa "m S-L-!T M A?O' na tabela @endas e ve9a o res"ltado;

Nela, podemos observar nos registros 7"e podemos ter d"as vendas com o mesmo tipo e mesmo valor, alm de ambas estarem com Te efone e !PA,!*PZ com valor n"lo. 1om esta sit"a'o, caso dese9amos alterar o tipo de venda de apenas "m registro, de W @IST) para !G-Q.-, por e6emplo, ser preciso identificJlos individ"almente. /ma das sol"#es para este caso acrescentar na tabela "ma col"na c"9os valores s'o Inicos para cada venda. Neste caso, precisamos acrescentar "ma col"na !od@enda, 7"e ser Inica para cada registro. ?ara incl"ir esta col"na, e6ec"te a seg"inte instr"'o;

Na instr"'o acima, inseri a col"na !OD@-*D), 7"e A.)N<A<_, o" se9a, ela a"toJ incremento, sendo contada de 0 em 0 %definido pelos parVmetros passados entre os par:nteses& e 7"e P?I')?N O-N. 0gora d: "m S-L-!T M A?O' na tabela @-*D)S e ve9a o res"ltado;

Q"ando trabal amos com o SQL Server, a nova col"na inserida sempre no final da tabela.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 36 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

1om a incl"s'o de "ma col"na referente a c!digo da venda, possMvel identificar cada f"ncionrio individ"almente e, dessa forma, aplicar as altera#es necessrias, sabendo 7"e estamos tratando da venda certa. 0 c ave primria deve faKer parte da integridade referencial 7"e se estabelece entre d"as tabelas relacionadas. >ais sobre isso logo abai6o. !/aves Prim#rias Se$und#rias ou !/aves Yni$as 0lm das constraints Primar( Oe(, tambm podemos "tiliKar constraints .ni7ue, as 7"ais asseg"ram 7"e dados d"plicados n'o se9am inseridos em col"nas 7"e n'o faKem parte das c aves primrias. 0 .ni7ue "ma constraint 7"e tambm capaK de asseg"rar a e6cl"sividade dos dados. )m "ma tabela, vrias col"nas podem ser definidas com constraints .ni7ue. 0s col"nas nas 7"ais s'o definidas constraints /ni7"e permitem a incl"s'o de valores n"los, desde 7"e se9a apenas "m por col"na. 0s constraints do tipo .ni7ue podem ser "tiliKadas para referenciar "ma c ave estrangeira. 0 c ave primria "sada na col"na !OD@-*D) n'o impediria 7"e "ma venda para o mesmo cliente fosse d"plicada. /m e6emplo disso 9 tem em nossa tabela, nos registros 0 e 2, onde d"as vendas e6atamente ig"ais.

Neste caso, mesmo com a c ave primria na col"na !OD@-*D), essa inser'o de "ma mesma venda mais do 7"e "ma veK n'o seria evitada. 0o mesmo tempo, n'o seria vivel e6igir 7"e os "s"rios cons"ltassem a tabela inteira antes de inserir nela alg"ma informa'o %imagine "ma tabela comple6a, com mil ares de registros&. ?ara resolver este problema, podemos inserir "ma col"na ?%!LI-*T- como mostra a instr"'o a seg"ir;

<endo em vista 7"e n'o d"as pessoas com o mesmo ?%, poderMamos colocar a c ave primria nesta col"na a fim de evitar a incl"s'o de "ma mesma venda d"as o" mais veKes na tabela. 1omo 9 temos a c ave primria na col"na !OD@-*D) e a mesma n'o pode se repetir devemos "sar as c aves primrias sec"ndrias, tambm c amadas de c aves Inicas. .esta forma, podemos colocar a c ave primria na col"na !OD@-*D) para 7"e cada lin a se9a identificada como Inica, e a c ave Inica na col"na ?%!LI-*T- para evitar 7"e valores 9 e6istentes na tabela se9am registrados novamente.

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 37 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

!/aves -strangeiras 1ol"nas 7"e representam c aves estrangeiras s'o "tiliKadas com a finalidade de estabelecer "m vMnc"lo entre os dados de tabelas distintas. 0 cria'o deste tipo de c ave re7"er a "tiliKa'o da constraint Aoreign Oe(. ?ara compreendermos este ass"nto de forma mais ade7"ada, destacamos 7"e para criarmos "ma c ave estrangeira preciso 7"e a col"na da primeira tabela, na 7"al se encontra a c ave primria, se9a referenciada pela col"na 7"e se encontra na seg"nda tabela. 0ssim, a col"na da seg"nda tabela tornaJse a c ave estrangeira. Lale destacar 7"e n'o necessrio 7"e "ma constraint Aoreign Oe( em "ma tabela este9a vinc"lada apenas a "ma constraint Primar( Oe( em o"tra tabela. 0lm disso, embora a Aoreign Oe( possa conter valores n"los, possMvel 7"e, nesta sit"a'o, a verifica'o dos valores 7"e formam esta constraint n'o ocorra. ?odemos asseg"rar 7"e a verifica'o dos valores de Aoreign Oe( ocorra por meio da especifica'o do valor *OT *.LL em todas as col"nas 7"e faKem parte deste tipo de constraint. ?ara entendermos mel or os conceitos de c aves estrangeiras, vamos "sar a tabela de Produtos, m"ito "sada nos artigos anteriores. 0ntes vamos e6cl"ir a col"na !ODP?OD.TO, 7"e permite valores n"los, para criJla novamente mais a frente;

0gora na tabela Produtos, faa a seg"inte instr"'o pra criarmos "ma col"na 7"e ser a c ave primria desta tabela, 9 7"e a mesma n'o contm c aves primrias;

0gora na tabela @endas, iremos criar a c ave estrangeira 7"e ir referenciar a c ave primria criada anteriormente na tabela Produtos. ?ara isso, "se a seg"inte instr"'o;

Na sinta6e acima criei a col"na !ODP?OD.TO, do tipo I*T na tabela @-*D)S, e 9 adicionei a constraint AO?-I%* O-N, passando o nome a ela dentro dos par:nteses e "sando a cl"s"la ?-A-?-*!-S, apontando a 7"e tabela ser feita o relacionamento dessa c ave, 7"e no caso a P?OD.TOS. Os par:nteses finais s'o para passar a c ave primria 7"e ser relacionada com a c ave estrangeira 7"e acabamos de criar. 0ssim, est criada nossa c ave estrangeira, relacionando "ma venda a "m prod"to. Loc: ver 7"e nossa col"na est com o valor n"lo, pois as c aves estrangeiras realmente aceitam valores n"los. ?egras de @a idao 0lm de evitar 7"e os "s"rios insiram valores ine6istentes na tabela, as regras de valida'o dos dados evitam sit"a#es como a il"strada a seg"ir;

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 38 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

1omo voc: pode ver, na tabela Produtos, na col"na QTD-P?OD.TO, temos "m valor negativo, 7"e o do 'onitor, 7"e est com +000. )sse "m valor errSneo e 7"e pode ca"sar problemas dependendo da comple6idade e das regras de neg!cios envolvidas em s"as tabelas. ?ara resolver este %e m"itos o"tros 7"e podem acontecer& problema, devemos "tiliKar as regras de valida'o nas col"nas a fim de evitar a incl"s'o de valores inade7"ados. Neste caso, a regra de valida'o n'o permitir valores negativos nas col"nas QTD-P?OD.TO e @)LO?P?OD.TO. ?ara isso, devemos criar a constraint !G-!O, da seg"inte forma;

Eeparem 7"e "sei 3ITG *O!G-!O. Asto indica 7"e a constraint 7"e adicionei n'o ser capaK de validar dados antigos, o" se9a, se e" der "m S-L-!T M A?O' na tabela P?OD.TOS, verei 7"e o valor negativo da col"na QTD-P?OD.TO contin"a l;

?ara alterarmos isso podemos faKer "m .PD)T- simples no banco.

Se 7"isermos faKer o"tro .PD)T- e tentarmos alterar os valores das col"nas QTD-P?OD.TO e @)LO?P?OD.TO para valores negativos, como a instr"'o abai6o nos s"gere, ocorrer o erro a seg"ir;

>sg 5G5, Level 24, State 0, Line 2 < e /?.0<) statement conflicted Fit t e 18)1a constraint C18abQ<.)?EO./<OD. < e conflict occ"rred in database C1lientesD, table Cdbo.?EO./<OSD, col"mn cQ<.)?EO./<Od.
til Consultoria e Tecnologia (3 ! " #"$830# 2%& &20 3 'gina 39 de 41

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

< e statement as been terminated. )ste erro nos diK 7"e o .PD)T- 7"e tentamos faKer entro" em conflito com "ma de nossas constraints !G-!O 7"e criamos anteriormente %ao conflitar com a primeira constraint ele nem tenta a seg"nda&. O"servao im5ortante9 a constraint AO?-I%* O-N tambm permite controlar os valores inseridos nas col"nas, porm ela baseiaJse em "ma lista de valores vlidos obtidos a partir de "ma tabela. 0 constraint !G-!O, por s"a veK, "tiliKa "ma e6press'o l!gica para definir os valores 7"e podem ser adicionados, sem tomar como base os dados de o"tra col"na o" tabela. 1om todos os procedimentos realiKados para evitar a incl"s'o de valores negativos, os dados estar'o Mntegros e consistentes. @a or Padro O valor padr'o o"tra regra 7"e pode ser aplicada Ns col"nas de "ma tabela. Q"ando "m valor padr'o estabelecido para "ma col"na, o sistema ass"me 7"e ele deve ser "tiliKado nas sit"a#es em 7"e o "s"rio dei6a de inserir o valor dese9ado. 1omo nem sempre recomendvel trabal ar com col"nas 7"e aceitem valores n"los, a recomenda'o 7"e "semos "m valor padr'o para a col"na por meio da constraint D-A).LT. ?ara compreendermos mel or, voltemos N tabela @-*D)S. Lamos definir 7"e o tipo da venda, por padr'o, ter o valor W @IST) %lembrando 7"e esse "m e6emplo fictMcio&. ?ara inserirmos esta constraint a col"na TIPO@-*D), faa a seg"inte instr"'o;

LembreJse de colocar o AO? para indicar para 7"al col"na a constraint ser aplicada. 0ssim, se n'o especificarmos o tipo da venda, por defa"lt, ela ser W @IST). ?egras de !onstraints 1ada tipo de constraint poss"i s"as pr!prias regras. Le9a na tabela a seg"ir 7"ais s'o elas; Ti5os de $onstraints !onstraint Primar( Oe(B!/ave Prim#riaC Des$rio .ma $o una 7ue < definida $omo $/ave 5rim#ria no 5ode a$eitar va ores nu os1 -m $ada ta"e a, 5ode /aver somente uma $onstraint de $/ave 5rim#ria1 @#rias $o unas 5odem ser definidas $omo $/ave estrangeira1 *o entanto, 5ara 7ue uma $o una se8a definida desta forma, < 5re$iso 7ue e a 8# ten/a sido definida $omo $/ave 5rim#ria em outra ta"e a1 )s $o unas definidas $omo $/ave estrangeira 5odem a$eitar va ores
2%& &20 3 'gina 40 de 41

!onstraint Aoreign Oe(B!/ave -strangeiraC

til Consultoria e Tecnologia (3 ! " #"$830#

Sql Server 2008 Curso Bsico

Marcos Antnio de Souza

!onstraint .ni7ueB!/ave Yni$aC

!onstraint !/e$4

!onstraint Defau t

nu os, e os datat(5es das $o unas re a$ionadas devem ser iguais Bint $om int, 5or e=em5 oC1 @#rias $o unas de uma ta"e a 5odem ser definidas $omo $/ave [ni$a e, ainda, a$eitar va ores nu os1 Diversas $o unas de uma ta"e a 5odem ser definidas $omo $onstraint $/e$41 -ssas $o unas 5odem a$eitar va ores nu os, mais isso de5ende das regras 7ue so determinadas 5ara e as1 @#rias $o unas de uma ta"e a 5odem ser definidas $omo $onstraint defau t1 -ssas $o unas 5odem a$eitar va ores nu os1

) a7"i finaliKamos nosso artigo. )sto" disponibiliKando a 7"em se interessar o script de todo este artigo, com os ass"ntos abordados a7"i. O script est comentado para mel or entendimento. Q"em 7"iser bai6ar, s! clicar a7"i. N'o percam a pr!6ima parte de nosso miniJc"rso. Aremos ver os conceitos do '-? e do D-?, os tipos e regras de re a$ionamentos. 0g"ardem*

til Consultoria e Tecnologia (3 ! " #"$830#

2%&

&20 3 'gina 41 de 41

You might also like