<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SQL Server 2008 Database Developer</title>
	<atom:link href="http://estudandopara70433.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://estudandopara70433.wordpress.com</link>
	<description>&#124; Exame 70-433 &#124;</description>
	<lastBuildDate>Wed, 19 Oct 2011 12:32:22 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='estudandopara70433.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>SQL Server 2008 Database Developer</title>
		<link>http://estudandopara70433.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://estudandopara70433.wordpress.com/osd.xml" title="SQL Server 2008 Database Developer" />
	<atom:link rel='hub' href='http://estudandopara70433.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Li&#231;&#227;o 3: Aplicando fun&#231;&#245;es de rank</title>
		<link>http://estudandopara70433.wordpress.com/2011/07/02/lio-3-aplicando-funes-de-rank/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/07/02/lio-3-aplicando-funes-de-rank/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 14:28:45 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 4]]></category>
		<category><![CDATA[Lição 3]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/07/02/lio-3-aplicando-funes-de-rank/</guid>
		<description><![CDATA[&#160; As funções de rank são utilizadas para prover uma simples visão analítica como também uma ordenação estatística ou segmentação. Classificando dados Há quatro funções de rank disponíveis no SQL Server, são elas: ROW_NUMBER, RANK, DENSE_RANK E NTILE. ROW_NUMBER retorna um número de 1 a n baseado na ordenação definida pelo usuário. Caso haja valores [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=288&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;
<p>As funções de rank são utilizadas para prover uma simples visão analítica como também uma ordenação estatística ou segmentação.
<p><strong><font size="2">Classificando dados</font></strong>
<p>Há quatro funções de rank disponíveis no SQL Server, são elas: ROW_NUMBER, RANK, DENSE_RANK E NTILE.
<p><strong>ROW_NUMBER</strong> retorna um número de 1 a n baseado na ordenação definida pelo usuário. Caso haja valores duplicados o ROW_NUMBER irá atribuir uma nova numeração, ignorando a repetição.
<p><font color="#0000ff">SELECT</font> P.FirstName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,P.LastName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<font color="#ff0080">ROW_NUMBER</font><font color="#666666">()</font><font color="#0000ff"> OVER(ORDER BY</font> S.SalesYTD <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font> <font color="#ff0000">&#8216;RowNumber&#8217;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,S.SalesYTD, A.PostalCode<br /><font color="#0000ff">FROM</font>&nbsp; Sales.SalesPerson S <font color="#666666">INNER JOIN</font> Person.Person P <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff"> ON</font> S.BusinessEntityID = P.BusinessEntityID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666666"> INNER JOIN</font> Person.BusinessEntityAddress BA <font color="#0000ff">ON </font>P.BusinessEntityID = BA.BusinessEntityID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666666">INNER JOIN</font> Person.Address A <font color="#0000ff">ON</font> A.AddressID = BA.AddressID<br /><font color="#0000ff">WHERE</font> S.TerritoryID<font color="#666666"> IS NOT NULL</font></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb.png?w=373&#038;h=232" width="373" height="232"></a><font color="#666666"></p>
<p></font>
<p>Você pode utilizar o ROW_NUMBER com um agrupamento para que a numeração seja feita de acordo com os grupos. Para conseguir esse resultado você precisará utilizar a cláusula opcional PARTITION BY.
<p><font color="#0000ff">SELECT</font> P.FirstName<br />,P.LastName<br /><font color="#333333">,S.TerritoryID</font>,<font color="#ff0080">ROW_NUMBER</font><font color="#666666">()</font><font color="#0000ff"> OVER(PARTITION BY <font color="#333333">S.TerritoryID</font> ORDER BY</font> S.SalesYTD <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font> <font color="#ff0000">&#8216;RowNumber&#8217;<br /></font>,S.SalesYTD, A.PostalCode<br /><font color="#0000ff">FROM</font> Sales.SalesPerson S <font color="#666666">INNER JOIN</font> Person.Person P <br /><font color="#0000ff">ON</font> S.BusinessEntityID = P.BusinessEntityID<br /><font color="#666666">INNER JOIN</font> Person.BusinessEntityAddress BA <font color="#0000ff">ON </font>P.BusinessEntityID = BA.BusinessEntityID<br /><font color="#666666">INNER JOIN</font> Person.Address A <font color="#0000ff">ON</font> A.AddressID = BA.AddressID<br /><font color="#0000ff">WHERE</font> S.TerritoryID<font color="#666666"> IS NOT NULL</font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb1.png?w=413&#038;h=222" width="413" height="222"></a></p>
<p>Se você quiser numerar o resultado em camadas você precisará utilizar o <strong>RANK</strong>, caso não haja camadas o RANK produzirá o mesmo resultado do ROW_NUMBER.
<p>Caso haja camadas o RANK irá repetir a mesma numeração para cada linha, deixando uma lacuna na sequência numérica correspondente ao número de linhas da camada.
<p><font color="#0000ff">SELECT</font> A.ProductID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,B.Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,A.LocationID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,A.Quantity<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<font color="#ff0080">RANK</font>() <font color="#0000ff">OVER</font>(<font color="#0000ff">PARTITION</font> <font color="#0000ff">BY</font> A.LocationID <font color="#0000ff">ORDER</font> <font color="#0000ff">BY</font> a.Quantity <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font> <font color="#ff0000">&#8216;Rank&#8217;</font><br /><font color="#0000ff">FROM</font> Production.ProductInventory A<font color="#666666"> INNER JOIN</font>&nbsp; Production.Product B<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff">ON</font> A.ProductID = B.ProductID<br /><font color="#0000ff">ORDER BY</font> B.Name</p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image2.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb2.png?w=386&#038;h=268" width="386" height="268"></a></p>
<p><font color="#0000ff">SELECT</font> A.ProductID<br />,B.Name<br />,A.LocationID<br />,A.Quantity<br />,<font color="#ff0080">RANK</font>() <font color="#0000ff">OVER</font>(<font color="#0000ff">PARTITION</font> <font color="#0000ff">BY</font> A.LocationID <font color="#0000ff">ORDER</font> <font color="#0000ff">BY</font> a.Quantity <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font><font color="#ff0000"> &#8216;Rank&#8217;</font><br /><font color="#0000ff">FROM</font> Production.ProductInventory A<font color="#666666"> INNER JOIN</font> Production.Product B<br /><font color="#0000ff">ON</font> A.ProductID = B.ProductID<br /><font color="#0000ff">ORDER BY</font><font color="#333333"> A.LocationID</font><font color="#666666">,</font><font color="#ff0000">&#8216;Rank&#8217;</font><br /> 
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image3.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb3.png?w=421&#038;h=291" width="421" height="291"></a></p>
<p>Caso não queira lacunas na numeração você pode utilizar a função <strong>DENSE_RANK</strong>. DENSE_RANK atribui o mesmo valor para cada valor duplicado mas não deixa lacuna na sequência numérica.
<p><font color="#0000ff">SELECT</font> A.ProductID<br />,B.Name<br />,A.LocationID<br />,A.Quantity<br />,<font color="#ff0080">DENSE_RANK</font>() <font color="#0000ff">OVER</font>(<font color="#0000ff">PARTITION</font> <font color="#0000ff">BY</font> A.LocationID <font color="#0000ff">ORDER</font> <font color="#0000ff">BY</font> a.Quantity <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font><font color="#ff0000"> &#8216;DenseRank&#8217;</font><br /><font color="#0000ff">FROM</font> Production.ProductInventory A<font color="#666666"> INNER JOIN</font> Production.Product B<br /><font color="#0000ff">ON</font> A.ProductID = B.ProductID<br /><font color="#0000ff">ORDER BY</font><font color="#333333"> A.LocationID</font><font color="#666666">,</font><font color="#ff0000">&#8216;DenseRank&#8217;</font></p>
<p><font color="#ff0000"></font>&nbsp;</p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image4.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb4.png?w=436&#038;h=285" width="436" height="285"></a></p>
<p><strong>NTILE</strong> divide o resultado da consulta em grupo, por exemplo , se você quiser&nbsp; dividir um resultado&nbsp; em quatro grupos com o aproximadamente o mesmo número de linhas em cada grupo, você pode utilizar o NTILE(4).
<p><font color="#0000ff">SELECT</font> P.FirstName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,P.LastName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<font color="#ff0080">NTILE</font>(4) <font color="#0000ff">OVER</font>(<font color="#0000ff">ORDER BY</font> S.SalesYTD <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font> <font color="#ff0000">&#8216;Grupo&#8217;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,S.SalesYTD, S.TerritoryID<br /><font color="#0000ff">FROM</font>&nbsp; Sales.SalesPerson S <font color="#666666">INNER JOIN</font> Person.Person P <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff">ON</font> S.BusinessEntityID = P.BusinessEntityID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666666">INNER JOIN</font> Person.BusinessEntityAddress BA <font color="#0000ff">ON</font> P.BusinessEntityID = BA.BusinessEntityID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666666"> INNER JOIN</font> Person.Address A <font color="#0000ff">ON</font> A.AddressID = BA.AddressID<br /><font color="#0000ff">WHERE</font> S.TerritoryID <font color="#666666">IS NOT NULL<br /></font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image5.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb5.png?w=436&#038;h=270" width="436" height="270"></a></p>
<p>&nbsp;</p>
<p><font color="#0000ff">SELECT</font> P.FirstName<br />,P.LastName<br />,<font color="#ff0080">NTILE</font>(2) <font color="#0000ff">OVER</font>(<font color="#0000ff">PARTITION BY</font> S.TerritoryID <font color="#0000ff">ORDER BY</font> S.SalesYTD <font color="#0000ff">DESC</font>) <font color="#0000ff">AS</font> <font color="#ff0000">&#8216;Grupo&#8217;<br /></font>,S.SalesYTD, S.TerritoryID<br /><font color="#0000ff">FROM</font> Sales.SalesPerson S <font color="#666666">INNER JOIN</font> Person.Person P <br /><font color="#0000ff">ON</font> S.BusinessEntityID = P.BusinessEntityID<br /><font color="#666666">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INNER JOIN</font> Person.BusinessEntityAddress BA<font color="#0000ff">&nbsp; ON</font>&nbsp;&nbsp; P.BusinessEntityID = BA.BusinessEntityID<br /><font color="#666666">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INNER JOIN</font> Person.Address A <font color="#0000ff">ON</font> A.AddressID = BA.AddressID<br /><font color="#0000ff">WHERE</font> S.TerritoryID <font color="#666666">IS NOT NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff">ORDER BY</font> S.TerritoryID,</font><font color="#ff0000"> &#8216;Grupo&#8217;</font></p>
<p><font color="#666666"></font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/07/image6.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb6.png?w=472&#038;h=294" width="472" height="294"></a></p>
<p>&nbsp;</p>
<h3><font face="Verdana">Dica para o exame</font></h3>
<p>Você precisa entender a diferença entre os quatro funções de rank e quando produzem o mesmo resultado.</p>
<p>&nbsp;</p>
<p><font size="2"><strong>Quick Check</strong></font></p>
<p>1 – Qual a diferença entre RANK e DENSE_RANK?</p>
<p>2 – Quando o ROW_NUMBER, RANK e DENSE_RANK produzem o mesmo resultado?</p>
<p>Respostas:</p>
<p>1 – RANK atribui o mesmo valor para as camadas porém deixa lacunas na sequência numérica. DENSE_RANK atribui o mesmo valor para as camadas e não deixa lacunas na sequência.</p>
<p>2-ROW_NUMBER, RANK e DENSE_RANK produzem o mesmo resultado quando as colunas ordenadas não possuem valores duplicados.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=288&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/07/02/lio-3-aplicando-funes-de-rank/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/07/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 2: Implementando SubConsultas</title>
		<link>http://estudandopara70433.wordpress.com/2011/06/26/lio-2-implementando-subconsultas/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/06/26/lio-2-implementando-subconsultas/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 02:21:32 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 4]]></category>
		<category><![CDATA[Lição 2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/06/26/lio-2-implementando-subconsultas/</guid>
		<description><![CDATA[&#160; As subconsultas são úteis para construir consultas complexas e para obter resultados que antes pareciam impossíveis. Existem dois tipos de subconsultas: Correlacionada:&#160; é uma consulta que depende e faz referência às colunas da consulta externa a qual está contida. Não correlacionada: é uma consulta independente da consulta externa na qual está contida. Ambos os [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=265&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>As subconsultas são úteis para construir consultas complexas e para obter resultados que antes pareciam impossíveis.
<p>Existem dois tipos de subconsultas:
<p><b>Correlacionada</b>:&nbsp; é uma consulta que depende e faz referência às colunas da consulta externa a qual está contida.
<p><b>Não correlacionada:</b> é uma consulta independente da consulta externa na qual está contida.
<p>Ambos os tipos de subconsultas podem retornar uma ou mais linhas. Quando o retorno é escalar, somente um valor,&nbsp; pode ser definido em qualquer lugar de dentro do <i>SELECT</i> onde um ou zero valores são esperados, quando o retorno é múltiplo a subconsulta pode ser utilizada em onde o <em>resultset </em>é esperado.
<p><b></b>&nbsp;
<p><b>Consultas não correlacionadas</b>
<p>O principal objetivo de consultas não correlacionadas é permitir a escrita de códigos mais dinâmicos. Por exemplo, você precisa listar os produtos onde o nome da categoria inicia com a letra C, porém você desconhece todas as subcategorias necessárias para especificar na cláusula <em>where</em>, veja o exemplo abaixo:
<p><font face="Courier New"><span class="kwrd"><font color="#0000ff">SELECT</font></span> P.Name, P.Color <br /><span class="kwrd"><font color="#0000ff">FROM</font></span> Production.Product P<br /><font color="#666666"><span class="kwrd">&nbsp;&nbsp;&nbsp;&nbsp; INNER</span> <span class="kwrd">JOIN</span></font> Production.ProductSubcategory S<br /><span class="kwrd"><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font></span> P.ProductSubcategoryID = S.ProductSubcategoryID <br /><font color="#0000ff"><span class="kwrd"><span class="kwrd">WHERE</span></span></font> S.ProductCategoryID <span class="kwrd">IN( <span class="kwrd"><font color="#0000ff">SELECT</font></span> C.ProductCategoryID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff">FROM</font> Production.ProductCategory C <br /><span class="kwrd"><font color="#0000ff">WHERE</font></span> Name <span class="kwrd">LIKE</span> <span class="str"><font color="#ff0000">&#8216;C%&#8217;</font></span>)</span></font>
<div id="codeSnippetWrapper">
<div id="codeSnippetWrapper">
<p>Outro exemplo, supondo que você gostaria de retornar todos os produtos onde o preço de lista está acima da média geral, ao invés de obter o valor e armazenar em uma variável, você pode fazer como no exemplo abaixo:
<div><font face="Courier New"><span class="kwrd"><font color="#0000ff"></font></span></font>&nbsp;</div>
<div><font face="Courier New"><span class="kwrd"><font color="#0000ff">SELECT</font></span> A.ProductID, A.Name, A.ListPrice<br /><span class="kwrd"><font color="#0000ff">FROM</font></span> Production.Product A<br /><font color="#0000ff"><span class="kwrd"><span class="kwrd">WHERE</span></span></font> A.ListPrice&gt; (</font><font face="Courier New"><span class="kwrd"><font color="#0000ff">SELECT</font></span> <span class="kwrd"><font color="#eb2c95">AVG</font></span>(B.ListPrice) <br /><span class="kwrd"><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM</font></span> Production.Product B</font><font face="Courier New">)</font><font face="Verdana"> </font></div>
<div>&nbsp;</div>
<div>
<pre class="csharpcode"><font face="Verdana"><b>Tabelas derivadas</b> </font></pre>
</div>
<p>Ao invés de armazenar dados em tabelas temporárias para fazer joins e retornar um determinado conjunto de resultados, você pode utilizar as tabelas derivadas. </p>
<p>Tabelas derivadas são consultas realizadas dentro da clausula <i>from</i> de uma consulta externa, é necessário que todos os campos calculados sejam nomeados, a consulta deve estar contida entre parênteses e possuir um apelido. </p>
<p>Veja o exemplo abaixo:</p>
<div><font face="Courier New"><span class="kwrd"><font color="#0000ff"></font></span></font>&nbsp;</div>
<div><font face="Courier New"><span class="kwrd"><font color="#0000ff">SELECT</font></span> B.BusinessEntityID, B.JobTitle, A.QtdeLinhas<br /><span class="kwrd"><font color="#0000ff">FROM</font></span> (<span class="kwrd"><font color="#0000ff">SELECT</font></span> E.JobTitle, <span class="kwrd"><font color="#ff0080">COUNT</font></span>(*) QtdeLinhas<br /><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM</font> HumanResources.Employee E</div>
<p><font color="#0000ff"><span class="kwrd">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP</span> <span class="kwrd">BY</span></font> JobTitle) A</p>
<div><font color="#666666">INNER <span class="kwrd">JOIN</span></font> HumanResources.Employee B <span class="kwrd"><font color="#0000ff">on</font></span> A.JobTitle=B.JobTitle</font></div>
<p>O príncipal benefício de uma tabela derivada é o fato de que o resultado está armazenado inteiramente na memória, resultando em um ganho de desempenho. </p>
<p><b>Agrupamentos</b> </p>
<p>Você pode realizar agrupamentos dentro de tabelas derivadas e combiná-los externamente. </p>
<p>Como no exemplo abaixo:</p>
<p><font face="Courier New"><span class="kwrd"><font color="#0000ff">SELECT</font></span> SH3.SalesPersonID,SH3.OrderDate, SH3.DailyTotal, <span class="kwrd"><font color="#eb2c95">SUM</font></span>(SH4.DailyTotal) RunningTotal<br /><span class="kwrd"><font color="#0000ff">FROM</font></span>&nbsp;&nbsp;&nbsp; (<span class="kwrd"><font color="#0000ff">SELECT</font></span> SH1.SalesPersonID, SH1.OrderDate, <span class="kwrd"><font color="#eb2c95">SUM</font></span>(SH1.TotalDue) DailyTotal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#0000ff">FROM</font></span> Sales.SalesOrderHeader SH1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#0000ff">WHERE</font></span> SH1.SalesPersonID&nbsp; <font color="#666666"><span class="kwrd">IS</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#0000ff">GROUP</font></span> <span class="kwrd"><font color="#0000ff">BY</font></span> SH1.SalesPersonID, SH1.OrderDate) SH3<br /><font color="#666666"><span class="kwrd">INNER</span> <span class="kwrd">JOIN</span></font>&nbsp; (<span class="kwrd"><font color="#0000ff">SELECT</font></span> SH2.SalesPersonID, SH2.OrderDate, <span class="kwrd"><font color="#eb2c95">SUM</font></span>(SH2.TotalDue) DailyTotal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#0000ff">FROM</font></span> Sales.SalesOrderHeader SH2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#0000ff">WHERE</font></span> SH2.SalesPersonID&nbsp; <font color="#666666"><span class="kwrd">IS</span> <span class="kwrd">NOT</span> <span class="kwrd">NULL</span></font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff"><span class="kwrd">GROUP</span> <span class="kwrd">BY</span></font> SH2.SalesPersonID, SH2.OrderDate)SH4<br /><span class="kwrd"><font color="#0000ff">ON</font></span> SH3.SalesPersonID = SH4.SalesPersonID<br />&nbsp;&nbsp;&nbsp; <span class="kwrd"><font color="#666666">AND</font></span> SH3.OrderDate&gt;SH4.OrderDate<br /><font color="#0000ff"><span class="kwrd">GROUP</span> <span class="kwrd">BY</span></font> SH3.SalesPersonID, SH3.OrderDate, SH3.DailyTotal<br /><font color="#0000ff"><span class="kwrd">ORDER</span> <span class="kwrd">BY</span></font> SH3.SalesPersonID, SH3.OrderDate<br /></font></p>
</div>
</div>
<p>As tabelas derivadas foram combinadas para retornar todos os pedidos de um vendedor que possuir mais de um pedido por dia. O <em>join</em> por <i>SalesPersonID </i>(vendedor) assegura que você esta acumulando linhas do mesmo vendedor. O <em>join</em> sem igualdade determina que somente os pedidos do vendedor onde data do pedido é anterior à data do pedido dentro do <i>resultset</i> serão retornados. </p>
<p>&nbsp;</p>
<p><b>Consultas correlacionadas</b> </p>
<p>As consultas correlacionadas dependem de valores da consulta externa. No exemplo abaixo será listado o Id do Produto e o preço de lista, porém será retornado apenas os produtos que já foram vendidos anteriormente. </p>
<div id="codeSnippetWrapper">
<pre class="csharpcode"><span class="kwrd"><font color="#0000ff">SELECT</font></span> a.ProductID, a.ListPrice <span class="kwrd"><font color="#0000ff">FROM</font></span> Production.Product A <span class="kwrd"><font color="#0000ff">WHERE</font></span> <span class="kwrd"><font color="#666666">EXISTS</font></span> (<span class="kwrd"><font color="#0000ff">SELECT</font></span> 1 <span class="kwrd"><font color="#0000ff">FROM</font></span> Sales.SalesOrderDetail B                         <span class="kwrd"><font color="#0000ff">WHERE</font></span> B.ProductID=A.ProductID)</pre>
</div>
<p>Usando um <em>Join</em> ou uma cláusula <em>where</em> será retornado o produto para cada vez que ele foi vendido, já o comando EXISTS provém melhor desempenho, pois procura será por uma única ocorrência na tabela. </p>
<div id="codeSnippetWrapper">&nbsp;</div>
<p>[]’s </p>
<p><strong>Andressa Alves Martins</strong> </p>
<p><strong>Twitter</strong>: Dre_Martins <strong>Skype</strong>: Dre.alvesm </p>
<p><strong>Blog</strong>: <a href="http://sqlgo.wordpress.com">http://sqlgo.wordpress.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=265&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/06/26/lio-2-implementando-subconsultas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 1: Construindo consultas recursivas com CTE</title>
		<link>http://estudandopara70433.wordpress.com/2011/06/01/lio-1-construindo-consultas-recursivas-com-cte/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/06/01/lio-1-construindo-consultas-recursivas-com-cte/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 02:21:09 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 4]]></category>
		<category><![CDATA[Lição 1]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/06/01/lio-1-construindo-consultas-recursivas-com-cte/</guid>
		<description><![CDATA[&#160; O conceito de CTE é muito similar a tabelas derivadas, porém com CTEs você pode cruzar com outros resultados para resolver um ou mais problemas, executando consultas recursivas. &#160; Expressão de Tabela Comum (Common Table Expressions) &#160; Sintaxe: WITH – Cláusula onde contém o comando válido de select. Select – Consulta que será realizada [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=263&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>O conceito de CTE é muito similar a tabelas derivadas, porém com CTEs você pode cruzar com outros resultados para resolver um ou mais problemas, executando consultas recursivas.</p>
<p>&nbsp;</p>
<p><strong><font size="2">Expressão de Tabela Comum (<em>Common Table Expressions</em>)</font></strong></p>
<p><font size="2"></font>&nbsp;</p>
<p><font size="2">Sintaxe:</font></p>
<p><font size="2">WITH – Cláusula onde contém o comando válido de <em>select.</em></font></p>
<p><font size="2"><em>Select</em> – Consulta que será realizada utilizando a CTE.</font></p>
<p><font size="2"></font>&nbsp;</p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">WITH</font><font color="#000000" size="2" face="Tahoma"> EmpTitle </font><font color="#0000ff" size="2" face="Tahoma">AS
<p align="left"></font><font color="#808080" size="2" face="Tahoma">(</font><font color="#0000ff" size="2" face="Tahoma">SELECT</font><font color="#000000" size="2" face="Tahoma"> JobTitle</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#ff00ff" size="2" face="Tahoma">COUNT</font><font color="#808080" size="2" face="Tahoma">(*)</font><font color="#000000" size="2" face="Tahoma"> NumTitles
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">FROM</font><font color="#000000" size="2" face="Tahoma"> HumanResources</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employee
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">GROUP</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">BY</font><font color="#000000" size="2" face="Tahoma"> JobTitle</font><font color="#808080" size="2" face="Tahoma">)</font>
<p align="left"><font color="#808080" size="2" face="Tahoma">&nbsp;
<p align="left"></font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">SELECT</font><font color="#000000" size="2" face="Tahoma"> b</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> b</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">JobTitle</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> a</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">NumTitles
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">FROM</font><font color="#000000" size="2" face="Tahoma"> EmpTitle a </font><font color="#808080" size="2" face="Tahoma">INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> HumanResources</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employee b </font><font color="#0000ff" size="2" face="Tahoma">ON</font><font color="#000000" size="2" face="Tahoma"> b</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">JobTitle </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> a</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">JobTitle
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">GO</font>
<p align="left">&nbsp;
<p><font color="#333333">Uma CTE recursiva expande a definição de uma expressão de tabela e consiste em duas partes: </font></p>
<p><font color="#333333">- Uma consulta âncora, que é a fonte da recursividade, juntamente com a declaração &#8220;UNION ALL&#8221; e uma segunda consulta.</font></p>
<p><font color="#333333">- Uma consulta externa que referencia a rotina e especifica o numero de níveis de recursão. </font></p>
<p align="left"><font color="#333333" size="2" face="Tahoma"><font color="#000000"><font color="#333333">Por exemplo, a consulta abaixo permite que você especifique um <em>employee </em>e retorna&nbsp; os niveis</font> </font>da gerencia acima desse empregado na organização, com um limite de 25 niveis de organização.</font>
<p align="left"><font color="#333333" size="2" face="Tahoma"></font>&nbsp;</p>
<p><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">DECLARE</font><font color="#000000" size="2" face="Tahoma"> @EmployeeToGetOrgFor </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma">126</font><font color="#808080" size="2" face="Tahoma">;
<p align="left">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">WITH</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> OrganizationNode</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> FirstName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> LastName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> JobTitle</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> RecursionLevel</font><font color="#808080" size="2" face="Tahoma">)
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">AS </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#0000ff" size="2" face="Tahoma">SELECT</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">FirstName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">LastName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">JobTitle</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> 0
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM</font><font color="#000000" size="2" face="Tahoma"> HumanResources</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employee e </font><font color="#808080" size="2" face="Tahoma">INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> Person</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Person </font><font color="#0000ff" size="2" face="Tahoma">AS</font><font color="#000000" size="2" face="Tahoma"> p
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> @EmployeeToGetOrgFor
<p align="left">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp; UNION</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">ALL
<p align="left"></font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">FirstName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">LastName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp; E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">JobTitle</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> RecursionLevel</font><font color="#808080" size="2" face="Tahoma">+</font><font color="#000000" size="2" face="Tahoma">1
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp; FROM</font><font color="#000000" size="2" face="Tahoma"> HumanResources</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employee E </font><font color="#808080" size="2" face="Tahoma">INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> EMP_cte
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">GetAncestor</font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">1</font><font color="#808080" size="2" face="Tahoma">)
<p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#808080" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> Person</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Person P </font><font color="#0000ff" size="2" face="Tahoma">ON</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">)
<p align="left"></font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;</font>
<p align="left"><font color="#0000ff" size="2" face="Tahoma">SELECT</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">RecursionLevel</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">FirstName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">LastName</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma">&nbsp;&nbsp; EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">ToString</font><font color="#808080" size="2" face="Tahoma">()</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">AS</font><font color="#000000" size="2" face="Tahoma"> OrganizationNode</font><font color="#808080" size="2" face="Tahoma">,
<p align="left"></font><font color="#000000" size="2" face="Tahoma">P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">FirstName </font><font color="#0000ff" size="2" face="Tahoma">AS</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#ff0000" size="2" face="Tahoma">&#8216;ManagerFirstName&#8217;</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">LastName </font><font color="#0000ff" size="2" face="Tahoma">AS</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#ff0000" size="2" face="Tahoma">&#8216;ManagerLastName&#8217;
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">FROM</font><font color="#000000" size="2" face="Tahoma"> EMP_cte </font><font color="#808080" size="2" face="Tahoma">INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> HumanResources</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employee E
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">GetAncestor</font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">1</font><font color="#808080" size="2" face="Tahoma">)</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode
<p align="left"></font><font color="#808080" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> Person</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Person P </font><font color="#0000ff" size="2" face="Tahoma">ON</font><font color="#000000" size="2" face="Tahoma"> P</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID </font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma"> E</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">BusinessEntityID
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ORDER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">BY</font><font color="#000000" size="2" face="Tahoma"> RecursionLevel</font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000" size="2" face="Tahoma">EMP_cte</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">OrganizationNode</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">ToString</font><font color="#808080" size="2" face="Tahoma">()
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">OPTION </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">MAXRECURSION 25</font><font color="#808080" size="2" face="Tahoma">);</font>
<p>&nbsp;</p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/06/image.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/06/image_thumb.png?w=600&#038;h=123" width="600" height="123"></a></p>
<p>&nbsp;</p>
<p>A primeira consulta com a cláusula <em>WITH</em> define o resultado ancora. A segunda consulta executada recursivamente até o nível máximo de recursão contra a consulta âncora.
<p>A recursividade é realizada pelo <em>INNER JOIN </em>na CTE:</p>
<p><font color="#808080" size="2" face="Tahoma">
<p align="left">INNER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">JOIN</font><font color="#000000" size="2" face="Tahoma"> EMP_cte</font>
<p>A consulta externa é então utilizada para retornar o resultado da operação recursiva enquanto dados adicionais são necessários. A cláusula &#8220;<i>OPTION</i>&#8221; especifica o número máximo de níveis de recursão serão permitidos.
<p><strong>Dica para o exame:</strong></p>
<p><strong>Caso haver um bloco de comando antes da palavra chave “<i>WITH”</i> utilizar “;” para finalizar o bloco de comando anterior.</strong>
<p><font color="#333333" size="2" face="Tahoma"></font>&nbsp;</p>
<p>[]’s
<p><strong>Andressa Alves Martins</strong>
<p><strong>Twitter</strong>: Dre_Martins <strong>Skype</strong>: Dre.alvesm
<p><strong>Blog</strong>: <a href="http://sqlgo.wordpress.com">http://sqlgo.wordpress.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=263&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/06/01/lio-1-construindo-consultas-recursivas-com-cte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/06/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 2: Declarativa de Integridade de dados</title>
		<link>http://estudandopara70433.wordpress.com/2011/05/25/lio-2-declarao-de-integridade-de-dados/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/05/25/lio-2-declarao-de-integridade-de-dados/#comments</comments>
		<pubDate>Wed, 25 May 2011 02:59:51 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 3]]></category>
		<category><![CDATA[Lição 2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/05/25/lio-2-declarao-de-integridade-de-dados/</guid>
		<description><![CDATA[&#160; Validação de dados é uma das rotinas mais comum de um desenvolvedor. Validação de dados Há duas formas de validar a integridade dos dados, usando a integridade de dados declarativa ou integridade de dados procedural. Integridade de dados declarativa é um conjunto de regras que são aplicadas a uma tabela e suas colunas utilizando [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=254&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;
<p>Validação de dados é uma das rotinas mais comum de um desenvolvedor.
<p><b><font size="2">Validação de dados</font></b>
<p>Há duas formas de validar a integridade dos dados, usando a integridade de dados declarativa ou integridade de dados procedural.
<p>Integridade de dados declarativa é um conjunto de regras que são aplicadas a uma tabela e suas colunas utilizando o comando <i>ALTER TABLE</i> e <i>CREATE TABLE.</i> Essas regras são conhecidas como <i>constraints.</i>
<p>A integridade de dados procedural é implementada através de procedures com validações de dados ou de triggers que checam os dados.
<p><b><font size="2">Como implementar a Integridade de dados</font></b>
<p>Há cinco tipos de <i>constraints, PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE </i>e <i>DEFAULT.</i>
<p><b><i>PRIMARY KEY </i></b><b>e <i>UNIQUE constraints</i></b>
<p>Uma coluna ou uma combinação de colunas criam um identificador único para uma linha, que é reforçada pela criação de um índice único e não aceita duplicidade. Devido a isso <i>primary key </i>e <i>unique constraints </i>possuem a mesma limitação de tamanho como uma chave ou índice, ou seja, não pode haver mais de 16 colunas ou 900 <i>bytes </i>de dados.
<p>Quando nada é especificado o índice criado é <i>clustered</i> e o índice para um <i>unique </i>é do tipo <i>non-clustered.</i> Você pode alterar esse comportamento especificando o tipo de index, veja o exemplo:</p>
<p><font color="#008000" size="2" face="Tahoma">
<p align="left">&#8211;Primary key as clustered index
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> MyTable
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ADD</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">MyTableId</font><font color="#808080" size="2" face="Tahoma">)
<p align="left">
<p align="left"></font><font color="#008000" size="2" face="Tahoma">&#8211;Primary key as a nonclustered index
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> MyTable
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ADD</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">NONCLUSTERED </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">MyTableId</font><font color="#808080" size="2" face="Tahoma">)
<p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#0000ff" size="2" face="Tahoma">FOREIGN</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY</font><font color="#000000" size="2" face="Tahoma"> constraints</font>
<p><strong><em></em></strong>&nbsp;
<p><strong><em>FOREIGN KEY constraints</em></strong>
<p><i>Foreign key constraint </i>identifica uma coluna ou combinação de colunas que devem existir na mesma tabela ou em outra tabela. A <i>foreign key</i> <i>constraint </i>gerencia a integridade referencial entre duas tabelas ou apenas uma. Para implementar uma <i>foreign key</i> <i>constraint</i> você deve seguir essas regras:
<p>- As colunas referenciadas devem ter o mesmo tipo de dados nos dois locais. </p>
<p>- As colunas referenciadas devem possuir um índice único.</p>
<p>Devido ao índice único, as colunas da <i>foreign key</i> devem respeitar a mesma limitação da <i>primary key.</i>
<p>Quando ocorre uma violação de integridade referencial devido a um <i>delete</i> ou <i>update </i>a linha em questão retorna uma mensagem de erro e desfaz o comando que provocou o erro. Você pode definir qual ação o <i>SQL Server</i> deve realizar nesses casos, veja abaixo:
<p><i>- NO ACTION – </i>Comportamento padrão do <i>SQL Server</i>, desfaz a ação e retorna um erro. </p>
<p><i>- SET NULL – </i>Altera os valores referenciados para <i>NULL, </i>não retorna erro.<i></i> </p>
<p><i>- SET DEFAULT – </i>Altera os valores referenciados para o valor <i>default</i> da coluna, não retorna erro. </p>
<p><i>- CASCADE – </i>Exclui linhas referenciadas em um comando <i>delete</i> (<i>ON DELETE) </i>e atualiza linhas referenciadas em um comando <i>update </i>(<i>ON UPDATE), </i>não retorna erro.<i></i></p>
<p>Veja como implantar essas ações: </p>
<p>&nbsp;<font color="#0000ff" size="2" face="Tahoma">
<p align="left">CREATE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Customers </font><font color="#808080" size="2" face="Tahoma">(
<p align="left"></font><font color="#000000" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY </font><font color="#808080" size="2" face="Tahoma">);
<p align="left">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">CREATE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Orders </font><font color="#808080" size="2" face="Tahoma">(
<p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#000000" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OrderID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY
<p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#808080" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,</font><font color="#000000" size="2" face="Tahoma">CustomerID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">NULL<br />
<blockquote>
<p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCES</font><font color="#000000" size="2" face="Tahoma"> Customers </p>
</blockquote>
<blockquote><p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">DELETE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">SET</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">NULL </p>
</blockquote>
<blockquote><p align="left"></font><font color="#000000" size="2" face="Tahoma"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">UPDATE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CASCADE </font><font color="#808080" size="2" face="Tahoma">);</font> </p>
</blockquote>
<p align="left"><font color="#808080" size="2" face="Tahoma"></font>&nbsp;</p>
<p><strong><em>CHECK CONSTRAINTS</em></strong>
<p><i>Check constraints </i>são uma série de regras que validam o dado antes de incluir na coluna. Veja algumas vantagens:
<p>- São de fácil implementação. </p>
<p>- São verificadas automaticamente. </p>
<p>- Podem melhorar a performance.</p>
<p>Veja o <i>script </i>de uma simples <i>check constraint</i> que verifica se o preço do produto não é negativo:</p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Products
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ADD</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CHECK </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">Price</font><font color="#808080" size="2" face="Tahoma">&gt;=</font><font color="#000000" size="2" face="Tahoma">0.0</font><font color="#808080" size="2" face="Tahoma">);</font>
<p>Essa simplicidade é uma grande vantagem sobre as <i>triggers</i>, porém há algumas desvantagens:
<p>- As mensagens de erro são geradas automaticamente e não podem ser substituida. </p>
<p>- Uma <i>check constraint</i> não pode “enxergar” o valor anterior da coluna.</p>
<p>Você pode enriquecer a <i>check constraint </i>utilizando funções de usuário, utilizando <i>T-SQL</i> ou ainda utilizar funções CLR (tanto em C# quanto em VB)
<p><b><i>CHECK </i>E <i>FOREIGN KEY CONSTRAINTS</i> VS. <i>QUERY PERFORMANCE</i></b>
<p><i>Check </i>e <i>foreign key</i> podem melhorar a performance, pois ambos são regras que o <i>optimizer</i> pode usá-los para criar planos de execução mais eficientes, o código abaixo é um simples exemplo de como isso acontece: </p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">CREATE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Customers</font><font color="#0000ff" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">);</font><font color="#000000" size="2" face="Tahoma">
<p align="left">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">CREATE</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Orders</font><font color="#0000ff" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OrderID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">PRIMARY</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">KEY</font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#808080" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,</font><font color="#000000" size="2" face="Tahoma">CustomerID </font><font color="#0000ff" size="2" face="Tahoma">INT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">NOT</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">NULL</font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONSTRAINT</font><font color="#000000" size="2" face="Tahoma"> FK_OrdersCustomers
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCES</font><font color="#000000" size="2" face="Tahoma"> Customers</font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">CustomerID</font><font color="#808080" size="2" face="Tahoma">)</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#808080" size="2" face="Tahoma">);</font><font color="#000000" size="2" face="Tahoma"> </font>
<p>Para entedermos melhor o que o <i>SQL Server</i> faz quando executa a consulta selecione a opçao <i>Include Actual Execution Plan </i>ou pressione Ctrl+M. </p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">SELECT</font><font color="#000000" size="2" face="Tahoma"> o</font><font color="#808080" size="2" face="Tahoma">.*</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">FROM</font><font color="#000000" size="2" face="Tahoma"> Orders </font><font color="#0000ff" size="2" face="Tahoma">AS</font><font color="#000000" size="2" face="Tahoma"> o </font>
<p align="left"><font color="#0000ff" size="2" face="Tahoma">WHERE</font><font color="#000000" size="2" face="Tahoma"> </font>
<p align="left"><font face="Tahoma"><font size="2"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#808080">EXISTS</font><font color="#0000ff"> </font><font color="#808080">(</font><font color="#0000ff">SELECT</font><font color="#000000"> </font><font color="#808080">*</font><font color="#000000"> </font><font color="#0000ff">FROM</font><font color="#000000"> Customers </font><font color="#0000ff">AS</font></font></font><font color="#000000"><font size="2" face="Tahoma"> c </font><br />
<blockquote>
<p align="left"></font><font face="Tahoma"><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE</font><font color="#000000" size="2"> c</font><font color="#808080" size="2">.</font><font color="#000000" size="2">CustomerID </font><font color="#808080" size="2">=</font><font color="#000000" size="2"> o</font><font color="#808080" size="2">.</font><font color="#000000" size="2">CustomerID</font><font color="#808080" size="2">);</font><font color="#000000" size="2"> </font></font></p>
</blockquote>
<p>Perceba pelo plano de execução que a tabela <i>Customers</i> não foi acessada, apenas a tabela <i>Orders</i>, isto porque o <i>optimizer</i> sabe ela que não é necessaria para o operado <i>EXISTS </i>porque a <i>foreign key constraint</i> requer que todos os pedidos (<i>orders) </i>possuem referência com um cliente (<i>customer</i>), que é o que a cláusura where verifica.
<p>&nbsp;
<p><a href="http://estudandopara70433.files.wordpress.com/2011/05/clip_image0011.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="clip_image001" border="0" alt="clip_image001" src="http://estudandopara70433.files.wordpress.com/2011/05/clip_image001_thumb1.png?w=463&#038;h=124" width="463" height="124"></a>
<p>&nbsp;
<p>Agora desabiliete a <i>foreign key:</i> </p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Orders </font><font color="#0000ff" size="2" face="Tahoma">NOCHECK</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CONSTRAINT</font><font color="#000000" size="2" face="Tahoma"> FK_OrdersCustomers</font><font color="#808080" size="2" face="Tahoma">;</font><font color="#000000" size="2" face="Tahoma"> </font>
<p>Execute a mesma consulta novamente e perceba que nesse caso o <i>optimizer</i> executa o operador <i>EXISTS. </i>Devido a <i>foreign key constraint </i>estar desabilitada o <i>SQL Server </i>não pôde ter certeza que todos os pedidos possuem clientes válidos. Em tabelas grandes isso pode fazer uma grande diferença.
<p><i><a href="http://estudandopara70433.files.wordpress.com/2011/05/clip_image0021.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="clip_image002" border="0" alt="clip_image002" src="http://estudandopara70433.files.wordpress.com/2011/05/clip_image002_thumb1.png?w=466&#038;h=170" width="466" height="170"></a></i>
<p>Para habilitar novamente a utilize o seguinte código: </p>
<p><font color="#0000ff" size="2" face="Tahoma">
<p align="left">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Orders </font><font color="#0000ff" size="2" face="Tahoma">CHECK</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CONSTRAINT</font><font color="#000000" size="2" face="Tahoma"> FK_OrdersCustomers</font><font color="#808080" size="2" face="Tahoma">;</font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> Orders
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp; WITH</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CHECK</font><font color="#000000" size="2" face="Tahoma">
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHECK</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">CONSTRAINT</font><font color="#000000" size="2" face="Tahoma"> FK_OrdersCustomers </font>
<p>&nbsp;</p>
<p>[]’s
<p><strong>Andressa Alves Martins</strong>
<p><strong>Twitter</strong>: Dre_Martins <strong>Skype</strong>: Dre.alvesm
<p><strong>Blog</strong>: <a href="http://sqlgo.wordpress.com">http://sqlgo.wordpress.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=254&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/05/25/lio-2-declarao-de-integridade-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/clip_image001_thumb1.png" medium="image">
			<media:title type="html">clip_image001</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/clip_image002_thumb1.png" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 1: Trabalhando com Tabelas e Tipos de Dados</title>
		<link>http://estudandopara70433.wordpress.com/2011/05/17/lio-1-trabalhando-com-tabelas-e-tipos-de-dados/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/05/17/lio-1-trabalhando-com-tabelas-e-tipos-de-dados/#comments</comments>
		<pubDate>Tue, 17 May 2011 21:37:00 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 3]]></category>
		<category><![CDATA[Lição 1]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/?p=239</guid>
		<description><![CDATA[&#160; Modelar, criar e manter tabelas é uma das funções mais importantes de um desenvolvedor de banco de dados. Tipos de Dados Antes de criar uma tabela você precisa entender as diferenças entre os tipos de dados que você pode utilizar em uma coluna. Há dois tipos diferentes de tipos de dados no Sql Server: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=239&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><font size="2" face="Tahoma">Modelar, criar e manter tabelas é uma das funções mais importantes de um desenvolvedor de banco de dados. </font></p>
<p><font face="Tahoma"><font size="2"><b><font size="3">Tipos de Dados</font></b> </font></font></p>
<p><font size="2" face="Tahoma">Antes de criar uma tabela você precisa entender as diferenças entre os tipos de dados que você pode utilizar em uma coluna. Há dois tipos diferentes de tipos de dados no<i> Sql Server</i>: </font></p>
<ul>
<li><font size="2" face="Tahoma">Tipos de dados de sistema. </font>
<li><font face="Tahoma"><font size="2">Tipos de dados de usuários <i>(User-Defined types &#8211; UDTs)</i> ou<i> Sql Common Language Runtime (CLR).</i></font></font> </li>
</ul>
<p><font size="2" face="Tahoma"><strong>Cadeias de Caracteres</strong></font></p>
<p><font size="2" face="Tahoma">Existem alguns tipos de dados string no Sql Server, são eles: <i>char, varchar, nchar, nvarchar, text, ntext.</i> </font></p>
<p><font size="2" face="Tahoma">A diferença entre <i>char</i> e <i>varchar</i> (assim como <i>nchar</i> e <i>nvarchar</i>) é fato do <i>char</i> possuir tamanho fixo e <i>varchar</i> tamanho variável, ou seja <i>char</i> sempre aloca o espaço suficiente em disco para armazenar o tamanho declarado e <i>varchar</i> armazena apenas o tamanho do dado inserido. A vantagem de utilizar <i>char</i> é que as atualizações feitas na coluna nunca requer o deslocamento da linha pois os dados inseridos sempre utilizam o mesmo tamanho, em contra partida <i>varchar</i> aloca muito menos espaço do que <i>char</i>. </font></p>
<p><font size="2" face="Tahoma">Para os tipos de dados <i>char</i> e <i>varchar</i> a <em>collation</em> é utilizada para especificar o <em>code page</em> (conjunto de caracteres) do conteúdo da coluna. A <em>collation</em> também é utilizada para definir como ordenar e comparar os dados armazenados. A nomenclatura da collation especifica algumas características: </font></p>
<ul>
<li><font size="2" face="Tahoma">CI –<em> Case Insensitive</em> </font>
<li><font face="Tahoma"><font size="2">CS – <em>Case Sensitive </em></font></font>
<li><font face="Tahoma"><font size="2">AI – <em>Accent Insensitive </em></font></font>
<li><font face="Tahoma"><font size="2">AS – <em>Accent Sensitive </em></font></font></li>
</ul>
<p><font face="Tahoma"><font size="2"><i>Nchar </i>e <i>nvarchar</i> armazenam caracteres utilizando o Unicode universal code page (UCS-2).&nbsp; </font></font></p>
<p><font size="2" face="Tahoma"></font>&nbsp;</p>
<p><font face="Tahoma"><font size="2"><strong>Tipos numéricos exatos</strong> </font></font></p>
<p><font size="2" face="Tahoma">Os números numéricos exatos são inteiros ou decimais, produzem o mesmo resultados exceto pelo processamento ou pela magnetude (tamanho) dos números. </font></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/05/cbcpt5ok.jpg"><font size="2" face="Tahoma"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="cbcpt5ok" border="0" alt="cbcpt5ok" src="http://estudandopara70433.files.wordpress.com/2011/05/cbcpt5ok_thumb.jpg?w=446&#038;h=129" width="446" height="129"></font></a><font size="2" face="Tahoma"> </font></p>
<p>&nbsp;</p>
<p><font face="Tahoma"><font size="2"><strong>Tipos numéricos aproximados</strong> </font></font></p>
<p><font size="2" face="Tahoma">O sql server suporta dois tipos numéricos com pontos flutuantes o <em>real</em> e o <em>float</em>, assim como o <em>decimal</em>, ambos aceitam parâmetros. Os parâmetros definem o numero de bits que será utilizado para armazenar o dado. </font></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/05/image.png"><font size="2" face="Tahoma"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/05/image_thumb.png?w=446&#038;h=130" width="446" height="130"></font></a><font size="2" face="Tahoma"> </font></p>
<p><strong><font size="2" face="Tahoma"></font></strong>&nbsp;</p>
<p><strong><font size="2" face="Tahoma">Manipulando Data e Hora </font></strong></p>
<p><font size="2" face="Tahoma">A tabela abaixo possui um breve resumo sobre os tipos de dados de data e hora. </font></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/05/image1.png"><font size="2" face="Tahoma"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://estudandopara70433.files.wordpress.com/2011/05/image_thumb1.png?w=474&#038;h=164" width="474" height="164"></font></a><font size="2" face="Tahoma"> </font></p>
<p><font size="2" face="Tahoma">É necessário entender as diferenças entre <em>smalldatetime</em> e <em>datetime</em> pois há dois grandes problemas, um deles é que a hora e dia são armazenados juntos e isso precisa ser levado em consideração, veja o exemplo a seguir: </font></p>
<p><font face="Tahoma"><font size="2"><font color="#0000ff">SELECT</font> SalesOrderID </font></font></p>
<p><font size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,CustomerID </font></p>
<p><font size="2" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,OrderDate </font></p>
<p><font face="Tahoma"><font size="2"><font color="#0000ff">FROM</font> Sales.SalesOrderHeader </font></font></p>
<p><font face="Tahoma"><font size="2"><font color="#0000ff">WHERE</font> OrderDate=<font color="#ff0000">&#8217;20080818&#8242; </font></font></font></p>
<p><font size="2" face="Tahoma">A Consulta apenas retorna pedidos realizados no dia 18/08/2008 exatamente as 00:00:00. Para resolver esse problema você precisa especificar o horário na consulta, como nos exemplos abaixo: </font></p>
<p><font color="#008000"></p>
<p align="left"><font size="2" face="Tahoma">&#8211;Query #1 </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">SELECT</font><font color="#000000"> SalesOrderID </font></font></font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000"><font size="2" face="Tahoma">CustomerID </font></font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000"><font size="2" face="Tahoma">OrderDate </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">FROM</font><font color="#000000"> Sales</font><font color="#808080">.</font></font></font><font color="#000000"><font size="2" face="Tahoma">SalesOrderHeader </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">WHERE</font><font color="#000000"> OrderDate </font><font color="#808080">BETWEEN</font><font color="#000000"> </font><font color="#ff0000">&#8217;2008-08-18T00:00:00&#8242;</font><font color="#000000"> </font><font color="#808080">and</font><font color="#000000"> </font><font color="#ff0000">&#8217;2008-08-18T23:59:59.997&#8242;</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"><font size="2" face="Tahoma"></font>&nbsp;</p>
<p align="left"></font><font color="#008000"><font size="2" face="Tahoma">&#8211;Query #2 </font></p>
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">SELECT</font><font color="#000000"><font size="2" face="Tahoma"> SalesOrderID </font></font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000"><font size="2" face="Tahoma">CustomerID </font></font><font color="#808080" size="2" face="Tahoma">,</font><font color="#000000"><font size="2" face="Tahoma">OrderDate </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">FROM</font><font color="#000000"> Sales</font><font color="#808080">.</font></font></font><font color="#000000"><font size="2" face="Tahoma">SalesOrderHeader </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">WHERE</font><font color="#000000"> OrderDate</font><font color="#808080">&gt;=</font><font color="#ff0000">&#8217;20080818&#8242;</font><font color="#000000"> </font><font color="#808080">and</font><font color="#000000"> OrderDate </font><font color="#808080">&lt;</font><font color="#ff0000">&#8217;20080819&#8242;</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></font></p>
<p align="left"><font color="#000000"><font size="2" face="Tahoma"></font>&nbsp;</p>
<p align="left"><font size="2" face="Tahoma"></font></font></p>
<p><font size="2" face="Tahoma">Ambas consultas produzem o mesmo resultado, porém considere utilizar o segundo exemplo pois o mesmo atende tanto <em>datetime</em> quanto <em>datetime2</em>. </font></p>
<p><font size="2" face="Tahoma">O tipo de dados <em>time</em> aceita um parâmetro para especificar a precisão ou número de decimais por fração de segundo. Quando o parâmetro não é especificado a precisao é de 7 casas decimais. </font></p>
<p><font face="Tahoma"><font size="2"><b><font size="3"></font></b></font></font>&nbsp;</p>
<p><font face="Tahoma"><font size="2"><b><font size="3">Tabelas Básicas</font></b> </font></font></p>
<p><font face="Tahoma">No <i>Sql Server</i> há três tipos de variações de tabelas: permanentes, temporárias locais e temporárias globais, além dessa variações temos os tipos de tabelas e parâmetros da tabela.</font></p>
<p><font face="Tahoma"><font size="2"><strong></strong></font></font>&nbsp;</p>
<p><font face="Tahoma"><font size="2"><strong>Criando uma tabela</strong> </font></font></p>
<p><font size="2" face="Tahoma">Antes de criar uma tabela é necessario especificar o <em>schema</em>. <em>Schema</em> é similar a namespace em diversas linguagens de programação, o <i>Sql Server</i> possui os <em>schemas</em> sys para objetos de sistema e dbo para novos objetos. </font></p>
<p><font color="#0000ff"></p>
<p align="left"><font size="2" face="Tahoma">CREATE</font></font><font face="Tahoma"><font size="2"><font color="#000000"> </font><font color="#0000ff">SCHEMA</font><font color="#000000"> Sales</font><font color="#808080">;</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">GO</font><font color="#000000">&nbsp;</p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#0000ff">CREATE</font><font color="#000000"> </font><font color="#0000ff">TABLE</font><font color="#000000"> Sales</font><font color="#808080">.</font><font color="#000000">Customers</font><font color="#808080">(</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"><font size="2" face="Tahoma">CustomerId </font></font><font face="Tahoma"><font size="2"><font color="#0000ff">INT</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL,</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"><font size="2" face="Tahoma">Name </font></font><font face="Tahoma"><font size="2"><font color="#0000ff">NVARCHAR</font><font color="#808080">(</font><font color="#000000">50</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL);</font><font color="#000000"> </font></font></font></p>
<p><font size="2" face="Tahoma"></font></p>
<p><font size="2" face="Tahoma">Tabelas também podem ser criadas a partir de uma query utilizando o comando <i>select into:</i></font></p>
<p><i><font size="2" face="Tahoma"></font></i></p>
<p><font color="#0000ff"></p>
<p align="left"><font size="2" face="Tahoma">SELECT</font></font><font face="Tahoma"><font size="2"><font color="#000000"> </font><font color="#808080">*</font><font color="#000000"> </font><font color="#0000ff">INTO</font><font color="#000000"> Sales</font><font color="#808080">.</font><font color="#000000">Customers_Copy </font><font color="#0000ff">from</font><font color="#000000"> Sales</font><font color="#808080">.</font><font color="#000000">Customers</font> </font></font></p>
<p align="left"><font size="2" face="Tahoma"></font>&nbsp;</p>
<p><strong><font size="2" face="Tahoma">Nomenclatura de colunas e tabelas</font></strong></p>
<p><font size="2" face="Tahoma">Ambos, tabelas e colunas, são identificadores e precisam obedecer algumas regras de nomenclatura:</font></p>
<p><b><font face="Tahoma">Identificadores Padrão (Standard)</font></b></p>
<ul>
<li><font face="Tahoma">O primeiro caracteres deve ser letra ou underscore (_). </font>
<li><font face="Tahoma">Caracteres seguintes podem ser dígitos, @, $, # e _. </font>
<li><font face="Tahoma">Não deve ser uma palavra reservada do <i>T-SQL.</i></font>
<li><font face="Tahoma">Espaços em branco não são aceitos.</font> </li>
</ul>
<p><strong><font size="2" face="Tahoma"><b><font face="Tahoma"></font></b></font></strong>&nbsp;</p>
<p><strong><font size="2" face="Tahoma"><b><font face="Tahoma">Identificadores </font></b>Delimitados</font></strong></p>
<p><font size="2" face="Tahoma">As mesmas caracteristas do Standard, com exceto que voce pode criar nomes com espaço em banco utilizando as aspas (“”) ou colchetes ([]). Precisa estar setado como ON a propriedade </font><font face="Tahoma"><font size="2"><font color="#0000ff"><font color="#333333">QUOTED_IDENTIFIER</font>.</font></font></font></p>
<p><strong><font size="2" face="Tahoma"></font></strong>&nbsp;</p>
<p><strong><font size="2" face="Tahoma">Criando a tabela</font></strong></p>
<p><font size="2" face="Tahoma">Agora vamos criar uma tabela, veja o exemplo:</font></p>
<p><font color="#0000ff"></p>
<p align="left"><font size="2" face="Tahoma">CREATE</font></font><font face="Tahoma"><font size="2"><font color="#000000"> </font><font color="#0000ff">TABLE</font><font color="#000000"> HR</font><font color="#808080">.</font><font color="#000000">Employees</font><font color="#808080">(</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></font></p>
<p align="left"><font color="#000000"><font size="2" face="Tahoma">EmployeeID </font></font><font face="Tahoma"><font size="2"><font color="#0000ff">INT</font><font color="#000000"> </font><font color="#0000ff">IDENTITY</font><font color="#808080">(</font><font color="#000000">1000</font><font color="#808080">,</font><font color="#000000">2</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">FirstName </font><font color="#0000ff">NVARCHAR</font><font color="#808080">(</font><font color="#000000">50</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">LastName </font><font color="#0000ff">NVARCHAR</font><font color="#808080">(</font><font color="#000000">50</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">PhoneNumber </font><font color="#0000ff">VARCHAR</font><font color="#808080">(</font><font color="#000000">15</font><font color="#808080">)</font><font color="#000000"> </font></font></font><font color="#808080"><font size="2" face="Tahoma">NULL </font></p>
<p align="left"><font size="2" face="Tahoma">,</font></font><font face="Tahoma"><font size="2"><font color="#000000">BirthDate </font><font color="#0000ff">DATE</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font></font></font><font color="#808080"><font size="2" face="Tahoma">NULL </font><font size="2" face="Tahoma">);</font></font><font color="#000000" size="2" face="Tahoma"> </font></p>
<p><font color="#000000"></p>
<p align="left"></font><font color="#333333"><font size="2" face="Tahoma">Esse código cria a tabela Employees com cinco colunas. Podemos especificar o schema que será utilizado, nesse caso HR.</font><font size="2" face="Tahoma"> </font></font></p>
<p><font size="2" face="Tahoma"><font color="#333333">As colunas são definidas utilizando três propriedades</font> básicas: nome da </font></p>
<p><font size="2" face="Tahoma">coluna, tipo de dado e nullabilidade (se a coluna aceita null o ou não).</font></p>
<p><font size="2" face="Tahoma"></font>&nbsp;</p>
<p align="left"><b><font size="2" face="Tahoma">Nomenclatura</font></b></p>
<p><font size="2" face="Tahoma">Ao escolher a nomenclatura de tabelas e colunas é importante seguir o padrão da organização ou algumas diretrizes. São elas:</font></p>
<ul>
<li><font size="2" face="Tahoma">Utilize <em>PascalCasing</em> (também conhecido como <em>Camel Casing</em>).</font>
<li><font size="2" face="Tahoma">Evite abreviações.</font>
<li><font size="2" face="Tahoma">Longos nomes que usuários entendem são preferíveis a nomes curtos que podem não ser entendidos.</font> </li>
</ul>
<p><b><font size="2" face="Tahoma"></font></b>&nbsp;</p>
<p><b><font size="2" face="Tahoma">Escolhendo Tipos de dados</font></b></p>
<p><font size="2" face="Tahoma">A escolha do tipo de dado certo para cada coluna é muito importante, para ajudá-lo segue algumas diretrizes que você pode seguir:</font></p>
<ul>
<li><font size="2" face="Tahoma">Sempre utilize um tipo de dado que utilizar o mínimo de espaço em disco.</font>
<li><font size="2" face="Tahoma">Mudar o tipo de dados posterior à criação da tabela pode ser muito custoso, não utilize um tipo de dado se o mesmo não atende as necessidades da aplicação.</font>
<li><font size="2" face="Tahoma">Sempre que possível utilize tipos de dados com tamanho variável, como <em>nvarchar</em> e <em>varchar</em>.</font>
<li><font size="2" face="Tahoma">Um dos poucos casos em que o <em>char</em> e <em>nchar</em> são indicados é quando o valor da coluna requer alteração constante, nesse caso o custo de mover a linha com tamanho variável é maior do que a com tamanho fixo.</font>
<li><font size="2" face="Tahoma">Evite o uso dos tipos <em>datetime</em> e <em>smalldatetime</em>, pois ambos ocupam mais espaço em disco e provem menos precisão do que os tipos <em>datetime2</em>, <em>date</em> e <em>time</em>.</font>
<li><font size="2" face="Tahoma">Utilize<em> varchar (Max), nvarchar (Max) e varbinary</em> <em>(Max)</em> ao invés de <em>text, ntext e image</em>, pois poderão ser descontinuados em futuras versões.</font>
<li><font size="2" face="Tahoma">Use o tipo de dado <em>rowversion</em> ao invés de <em>timestamp</em>, pois poderá ser descontinuado em futuras versões.</font>
<li><font size="2" face="Tahoma">Somente Utilize<em> varchar (max), nvarchar(max) e varbinary(max) e xml,</em> quando não há como especificar a quantidade de caracteres a ser utilizada, pois esses campos não podem ser utilizados para índices.</font>
<li><font size="2" face="Tahoma">Use <em>float e real</em> apenas quando a precisão do <em>decimal</em> for insuficiente.</font> </li>
</ul>
<p><font size="2" face="Tahoma"></font>&nbsp;</p>
<p><b><font size="3" face="Tahoma">Nulo ou Não Nulo?</font></b></p>
<p><font size="2" face="Tahoma">Você nunca deve utilizar valores no lugar do nulo (ex –1 para inteiro), isso pode causar problemas futuramente. Nulo é um valor desconhecido e será diferente de –1, em uma função de agregação, por exemplo, <em>AVG</em>, o –1 é incluso no cálculo e o nulo não.</font></p>
<p>&nbsp;</p>
<p><font size="3" face="Tahoma"><strong>Identity</strong> </font></p>
<p><font size="2" face="Tahoma">Todas tabelas possuem uma coluna ou um conjunto de colunas que identificam a linha, a<i> primary key </i>. Não é fácil definir uma boa coluna para ser a <i>primary key </i>, pois esses dados podem variar com frequência. Para contornar essa situação você pode utilizar uma coluna que gere automaticamente uma chave. O comando <i>IDENTITY</i> é utilizado para determinar uma coluna por tabela onde o valor será acrescido ou decrescido automaticamente quando um valor novo é inserido, esse campo não aceita valores nulos. </font></p>
<p><font size="2" face="Tahoma">Sintaxe: </font></p>
<p><font color="#0000ff"></p>
<p align="left"><font size="2" face="Tahoma">CREATE</font></font><font face="Tahoma"><font size="2"><font color="#000000"> </font><font color="#0000ff">TABLE</font><font color="#000000"> HR</font><font color="#808080">.</font><font color="#000000">Employees</font><font color="#808080">(</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"><font size="2" face="Tahoma">EmployeeID </font></font><font face="Tahoma"><font size="2"><font color="#0000ff">INT</font><font color="#000000"> </font><font color="#0000ff">IDENTITY</font><font color="#808080">(</font><font color="#000000">1000</font><font color="#808080">,</font><font color="#000000">2</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">FirstName </font><font color="#0000ff">NVARCHAR</font><font color="#808080">(</font><font color="#000000">50</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">LastName </font><font color="#0000ff">NVARCHAR</font><font color="#808080">(</font><font color="#000000">50</font><font color="#808080">)</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"></p>
<p align="left"></font><font face="Tahoma"><font size="2"><font color="#808080">,</font><font color="#000000">BirthDate </font><font color="#0000ff">DATE</font><font color="#000000"> </font><font color="#808080">NOT</font><font color="#000000"> </font><font color="#808080">NULL</font></font></font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"></font><font color="#808080" size="2" face="Tahoma">);</font><font color="#000000"><font size="2" face="Tahoma"> </font></p>
<p align="left"><font size="2" face="Tahoma"></font></font></p>
<p><font size="2" face="Tahoma">A numeração irá iniciar do 1000 e será acrecido de 2 em 2,&nbsp; o ser valor negativo também. </font></p>
<p><font face="Tahoma"><font size="2"><em>A</em> propriedade <em>IDENTITY</em>&nbsp; não poderá ser utilizada em um campo já existente, somente em campos novos.</font></font></p>
<p><font size="2" face="Tahoma">Quando um <i>insert&nbsp; </i>falha a coluna dará sequencia para o próximo valor, veja no exemplo: </font></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/05/clip_image002.jpg"><font size="2" face="Tahoma"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image002" border="0" alt="clip_image002" src="http://estudandopara70433.files.wordpress.com/2011/05/clip_image002_thumb.jpg?w=475&#038;h=204" width="475" height="204"></font></a><font size="2" face="Tahoma"> </font></p>
<p><font size="2" face="Tahoma">&nbsp; </font></p>
<p><font size="3" face="Tahoma"><strong>Compressão </strong></font></p>
<p><font size="2" face="Tahoma">Na versão <em>SQL Server 2008 Enterprise</em>, você pode comprimir dados em tabelas e índices, essa compressão pode ser implementada em dois níveis: linha e página. </font></p>
<p><font size="2" face="Tahoma"></font></p>
<p><font color="#0000ff" size="2" face="Tahoma"></p>
<p align="left">ALTER</font><font color="#000000" size="2" face="Tahoma"> </font><font color="#0000ff" size="2" face="Tahoma">TABLE</font><font color="#000000" size="2" face="Tahoma"> HR</font><font color="#808080" size="2" face="Tahoma">.</font><font color="#000000" size="2" face="Tahoma">Employees</p>
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">REBUILD</font><font color="#000000" size="2" face="Tahoma"></p>
<p align="left"></font><font color="#0000ff" size="2" face="Tahoma">WITH </font><font color="#808080" size="2" face="Tahoma">(</font><font color="#000000" size="2" face="Tahoma">DATA_COMPRESSION</font><font color="#808080" size="2" face="Tahoma">=</font><font color="#000000" size="2" face="Tahoma">PAGE</font><font color="#808080" size="2" face="Tahoma">);</font><font color="#000000" size="2" face="Tahoma"> </font></p>
<p><font size="2" face="Tahoma">Quando a compressão de dados é ativada, o <i>SQL Server </i>irá converter todos os tipos de dados para <em>variable-length</em>. Quando há mais tipos de dados de tamanho fixo (como<i> Datetime2, int, decimal e char</i>), utilize o nível de compressão por linha. </font></p>
<p><font size="2" face="Tahoma">Compressão a nível de pagina inclui a compressão a nível de linha e utiliza um dicionário de paginas com os prefixos das colunas a fim de evitar redundância de dados. Considerando o exemplo abaixo: </font></p>
<p><font size="2" face="Tahoma">Linha 01 | Andressa Martins </font></p>
<p><font size="2" face="Tahoma">Linha 02 | Lucas Romão </font></p>
<p><font size="2" face="Tahoma">Linha 03 | Andressa Martins </font></p>
<p><font size="2" face="Tahoma"></font>&nbsp;</p>
<p><font size="2" face="Tahoma">Utilizando o dicionário de pagina os dados serão armazenados assim: </font></p>
<p><font size="2" face="Tahoma">Linha 01 | Andressa Martins </font></p>
<p><font size="2" face="Tahoma">Linha 02 | Lucas Romão </font></p>
<p><font size="2" face="Tahoma">Linha 03 | 01 </font></p>
<p>&nbsp;
<p>[]’s
<p><strong>Andressa Alves Martins</strong>
<p><strong>Twitter</strong>: Dre_Martins <strong>Skype</strong>: Dre.alvesm
<p><strong>Blog</strong>: <a href="http://sqlgo.wordpress.com">http://sqlgo.wordpress.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/239/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=239&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/05/17/lio-1-trabalhando-com-tabelas-e-tipos-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/cbcpt5ok_thumb.jpg" medium="image">
			<media:title type="html">cbcpt5ok</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/05/clip_image002_thumb.jpg" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 3: GerenciandoTransa&#231;&#245;es (Parte 2)</title>
		<link>http://estudandopara70433.wordpress.com/2011/04/28/lio-3-gerenciandotransaes-parte-2/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/04/28/lio-3-gerenciandotransaes-parte-2/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 19:39:05 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 2]]></category>
		<category><![CDATA[Lição 3]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/04/28/lio-3-gerenciandotransaes-parte-2/</guid>
		<description><![CDATA[&#160; Para evitar acessos múltiplos ao mesmo recurso o banco de dados utiliza um recurso chamando LOCK. O controle de concorrência do Sql Server é classificado como otimista ou pessimista. Pessimista – Permite acesso para leitura e atualização do mesmo dado em concorrência, bloqueios são utilizados para prevenir problemas devido aos múltiplos acessos ao dado. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=206&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong></strong></p>
<p><font size="2" face="Verdana"></font>&nbsp;
<p><font size="2" face="Tahoma">Para evitar acessos múltiplos ao mesmo recurso o banco de dados utiliza um recurso chamando <i>LOCK</i>. O controle de concorrência do<i> Sql Server</i> é classificado como otimista ou pessimista. </font>
<p><font size="2"><font face="Tahoma"><b>Pessimista</b> – Permite acesso para leitura e atualização do mesmo dado em concorrência, bloqueios são utilizados para prevenir problemas devido aos múltiplos acessos ao dado. </font></font>
<p><font face="Verdana"><font size="2"><font face="Tahoma"><b>Otimista</b> – Não há bloqueio de recurso durante a leitura, no caso de atualização, o sistema verifica o dado foi alterado antes de lido.</font> </font></font>
<p><font size="2" face="Verdana"></font>&nbsp;
<p><b><font face="Tahoma">Entendendo bloqueios (<i>locks</i>)</font></b>
<p><font size="2" face="Tahoma">O SQL Server pode bloquear diferentes tipos de recursos ou granularidades, esses tipos podem ser RID (<i>Row Identifier</i>), página, índices, objetos e banco de dados. </font>
<p><font size="2" face="Tahoma">Modos de bloqueios: </font>
<p><font size="2"><font face="Tahoma"><i>Shared</i> (S) – Bloqueio utilizado em consultas, compatível com outros bloqueios compartilhados. <u></u></font></font>
<p><font size="2"><font face="Tahoma"><i>Update</i> (U) – Bloqueio utilizado em recursos que podem ser atualizados, apenas uma transação por vez pode obter o <i>Update</i> <i>lock</i> no recurso. </font></font>
<p><font size="2"><font face="Tahoma"><i>Exclusive</i> (X) – Bloqueio utilizado para modificação de dados, ex: <i>INSERT, UPDATE,</i> ou <i>DELETE</i>, incompatível com outros bloqueios </font></font>
<p><font size="2"><font face="Tahoma"><i>Intent</i> (IS, IX, SIX) – Executa um bloqueio de objeto de alto nível (ex:<i>table</i>) antes de realizar um bloqueio <i>exclusive</i> (X) ou <i>shared</i> (S) no baixo nível (ex: página).</font></font>
<p><font size="2"><font face="Tahoma"><i>Schema</i> (<i>Sch-M, Sch-S</i>) – Bloqueio utilizado quando uma operação dependente do esquema de uma tabela está em execução. Há dois bloqueios, <i>o schema modification (Sch-M) </i>e o <i>schema stability (Sch-S)</i>, os dois são incompatíveis entre si.</font></font>
<p><font size="2"><font face="Tahoma"><i>Bulk Update (BU)</i> – Bloqueio utilizado ao copiar massa de dados dentro de uma tabela e quando <i>TABLOCK</i> é especificado.</font></font>
<p><font size="2"><font face="Tahoma"><i>Key-Range</i> – Bloqueio utilizado para evitar inserções/exclusões fantasmas ou exclusões em um conjunto de registros acessados ​​por uma transação. Esse bloqueio é utilizando transações que operam no nível de isolamento serializável.</font></font>
<p><font size="2" face="Verdana"></font>&nbsp;</p>
<p><strong></strong>
<p><strong><font size="2" face="Verdana"></font></strong></p>
<p><strong><font face="Tahoma">Entendendo cenários de <i>Deadlock </i>e <i>Blocking</i></font></strong>
<p><font size="2" face="Tahoma">As transações podem bloquear uma a outra, isso pode ocorrer de acordo com o nível de isolamento utilizado.</font>
<p><font size="2" face="Tahoma">Uma situação de <i>Deadlock</i> ocorre quando uma transação “A” aguarda a liberação de um recurso bloqueado pela transação “B” que por sua vez aguarda uma liberação de um recurso bloqueado pela transação “A”. Para resolver esse impasse <i>o Sql Server</i> baseado no custo estimado de <i>Rollback </i>“derruba” uma das transações, essa transação é chamada de vítima.</font>
<p><font size="2" face="Tahoma">Melhores práticas para evitar <i>Deadlock</i>:</font>
<p><font size="2" face="Tahoma">- Faça transações curtas</font>
<p><font size="2" face="Tahoma">- Obtenha e verifique os dados de entrada antes de iniciar uma transação.</font>
<p><font size="2"><font face="Tahoma">- Mantenha as transações em um único <i>batch</i></font></font>
<p><font size="2" face="Tahoma">- Acesse a quantidade mínima possível de dados em uma transação.</font>
<p><font size="2" face="Tahoma"></font>&nbsp;
<p><strong><font face="Tahoma">Entendendo relatórios sobre o estado do bloqueio</font></strong>
<p><font size="2"><font face="Tahoma">Há diversas opções para visualizar o status de um bloqueio em um servidor de<i> Sql Server. </i>São eles<i> Sql Profiler, System Monitor (perfom), Dmv’s e Activity Monitor.</i></font></font>
<p><em><font size="2" face="Tahoma"></font></em>&nbsp;
<p><i><font size="2" face="Tahoma"><strong>Sql Server Profiler</strong></font></i>
<p><font size="2" face="Verdana"><font face="Tahoma">Captura informações de <i>locks</i> e <i>blocks</i>. O Profiler disponibiliza um <i>template</i> já apropriado para detecção de bloqueios</font>.</font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image002.jpg"><font face="Tahoma"><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image0021.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image002" border="0" alt="clip_image002" src="http://estudandopara70433.files.wordpress.com/2011/04/clip_image002_thumb.jpg?w=449&#038;h=286" width="449" height="286"></a></font></a>
<p>&nbsp;
<p><i><font size="2" face="Tahoma"><strong>Activity Monitor</strong></font></i>
<p><font size="2" face="Tahoma">Utilize o <i>Activity Monitor</i> para visualizar dados de bloqueios, usuários, conexões e etc.</font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image004.jpg"><font face="Tahoma"><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image0041.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image004" border="0" alt="clip_image004" src="http://estudandopara70433.files.wordpress.com/2011/04/clip_image004_thumb.jpg?w=447&#038;h=335" width="447" height="335"></a></font></a>
<p><u><font face="Tahoma"></font></u>&nbsp;
<p><font size="2" face="Tahoma"><strong>DMV’s</strong></font>
<p><font size="2" face="Tahoma">As DMV’s provém informações detalhadas sobre todos os bloqueios ativos. </font>
<p><font size="2" face="Tahoma">Segue alguns exemplos.</font>
<p><font size="2" face="Tahoma"><u></u></font>&nbsp;
<p><font face="Courier New"><font size="2"><font color="#0000ff">SELECT</font> *</font></font>
<p><font face="Courier New"><font size="2"><font color="#0000ff">FROM</font> <font color="#008000">sys.dm_tran_active_transactions</font></font></font>
<p><font color="#008000" size="2" face="Courier New"></font>&nbsp;
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image006.jpg"><font face="Tahoma"><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image0061.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image006" border="0" alt="clip_image006" src="http://estudandopara70433.files.wordpress.com/2011/04/clip_image006_thumb.jpg?w=453&#038;h=139" width="453" height="139"></a></font></a>
<p>&nbsp;</p>
<p><font face="Courier New"><font size="2"><font color="#0000ff">SELECT</font> Resource_type,Request_mode, Request_status,request_owner_type</font></font>
<p><font face="Courier New"><font size="2"><font color="#0000ff">FROM</font><font color="#008000"> sys.dm_tran_locks</font></font></font>
<p><font color="#008000" size="2" face="Courier New"></font>&nbsp;
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image008.jpg"><font face="Tahoma"><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image0081.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image008" border="0" alt="clip_image008" src="http://estudandopara70433.files.wordpress.com/2011/04/clip_image008_thumb.jpg?w=459&#038;h=106" width="459" height="106"></a></font></a>
<p><font face="Tahoma"></font>&nbsp;
<p><font size="2" face="Tahoma"><strong>Tipos de recursos</strong></font>
<p><font face="Tahoma"></font>&nbsp;
<p><font size="2" face="Tahoma">RID (Row Identifier) – Linha física em um Heap.</font>
<p><font size="2" face="Tahoma">KEY – Linha em um índice.</font>
<p><font size="2" face="Tahoma">PAGE – Página em um arquivo de dados.</font>
<p><font size="2" face="Tahoma">EXTENT – Uma extensão de arquivo de dados. Uma extensão é um grupo de oito páginas contíguas.</font>
<p><font size="2" face="Tahoma"><font></font></font><font size="2" face="Tahoma">HoBT – Bloqueio em um Heap de uma página de dados ou na estrutura B-<em>tree </em>de um índice.</font><font size="2" face="Tahoma"><font></font></font>
<p><font size="2" face="Tahoma">TABLE – Uma tabela.</font>
<p><font size="2" face="Tahoma">FILE – Um arquivo de banco de dados. </font>
<p><font size="2" face="Tahoma">APPLICATION – Um recurso de aplicativo especificado.</font>
<p><font size="2" face="Tahoma">METADATA – Informações de metadados.</font>
<p><font size="2" face="Tahoma"><font></font></font><font size="2" face="Tahoma">ALLOCATION_UNIT </font><font size="2" face="Tahoma">– Uma unidade de alocação. </font>
<p><font size="2" face="Tahoma">DATABASE – Um banco de dados</font>
<p><font face="Tahoma"></font>&nbsp;
<p><font face="Tahoma"><strong>Utilizando <i>Sql Server Extended Events</i></strong></font>
<p><font face="Tahoma"><font size="2">Esse recurso está incluso no <i>Sql Server 2008</i>, assim como <i>FindBlocker </i>and <i>lock_count</i> que podem ser utilizados em conjunto com o <i>Windows Event Logs, Sql Profiler ou System Monitor.</i></font></font>
<p><font face="Tahoma"><strong></strong></font>&nbsp;
<p><font face="Tahoma"><strong>Usando DBCC LOG</strong></font>
<p><font size="2" face="Tahoma">Comando não documentado o qual retorna informações sobre o transaction log.</font>
<p><font size="2" face="Tahoma">Sintaxe:</font>
<p><font face="Courier New"><font size="2"><font color="#0000ff">DBCC</font> <font color="#ff00ff">LOG</font> (<i>&lt;databasename&gt;,&lt;output identifier&gt;</i>)</font></font>
<p><font size="2" face="Courier New"></font>&nbsp;
<p><font face="Tahoma"><font size="2">Níveis de <i>output identifier</i></font></font>
<p><font size="2" face="Tahoma">0: Retorno apenas o mínimo de informações para cada operação &#8211; incluindo operation, context, transactID, e log block generation.</font>
<p><font size="2" face="Tahoma">1: Retorna toda as informações do nível acima, incluindo flags e record length information</font>
<p><font size="2" face="Tahoma">2: Retorna toda as informações do nível acima, incluindo Object name, index name, page ID e slot ID.</font>
<p><font size="2" face="Tahoma">3: Retorna todas as informações sobre a operação.</font>
<p><font size="2" face="Tahoma">4: Retorna todas as informações sobre a operação, incluindo o hex dump da linha atual de log de transações.</font>
<p><font face="Tahoma"></font>&nbsp;
<p><font face="Courier New"><font size="2"><font color="#0000ff">DBCC</font> <font color="#ff00ff">LOG</font> (&#8217;70_433&#8242;,1)</font></font>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image010.jpg"><font face="Tahoma"><a href="http://estudandopara70433.files.wordpress.com/2011/04/clip_image0101.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="clip_image010" border="0" alt="clip_image010" src="http://estudandopara70433.files.wordpress.com/2011/04/clip_image010_thumb.jpg?w=458&#038;h=125" width="458" height="125"></a></font></a></p>
<p>&nbsp;</p>
<p><font face="Tahoma"><b>Definindo Níveis de Isolamento de Transações</b> </font></p>
<p><font size="2" face="Tahoma">Os seguintes níveis podem ser definidos através do comando <i>SET TRANSACTIONS ISOLATION LEVEL</i>: </font></p>
<p><font size="2" face="Tahoma"></font>&nbsp;</p>
<p><font face="Tahoma"><font size="2"><b><i>READ UNCOMMITTED </i></b><b>- </b>Nível mais baixo de isolamento, permite leitura de transações não confirmadas (leitura suja) </font></font></p>
<p><font face="Tahoma"><font size="2"><b><i>READ COMMITTED – </i></b>Nível de baixo de isolamento, porém só permite leitura de transações confirmadas. </font></font></p>
<p><font face="Tahoma"><font size="2"><b><i>REPEATABLE READ- </i></b>Não permite leitura de transações não confirmadas e realiza um bloqueio compartilhado em um recurso de dados. </font></font></p>
<p><font face="Tahoma"><font size="2"><b><i>SNAPSHOT &#8211; </i></b>Requer<b><i> </i></b><i>ALLOW_SNAPSHOT_ISOLATION</i> setada com <i>ON</i><b><i> </i></b>Não permite leitura de transações não confirmadas, quando a transação é iniciada o banco de dados obtém um <i>snapshot</i> dos dados confirmados. </font></font></p>
<p><font face="Tahoma"><font size="2"><b><i>SERIALIZABLE &#8211; </i></b>Esse é o mais restritivo dos níveis de isolamento, pois ele bloqueia intervalos de chaves inteiros até que a transação seja concluída.</font></font></p>
<p><font face="Tahoma"><font size="2"></font></font>&nbsp;</p>
<p><font face="Tahoma"><font size="2"></font></font>&nbsp;</p>
<p><font size="2" face="Tahoma">[]’s</font>
<p><strong><font size="2" face="Tahoma">Andressa Alves Martins</font></strong>
<p><font face="Tahoma"><font size="2"><strong>Twitter</strong>: Dre_Martins <strong>Skype</strong>: Dre.alvesm</font></font>
<p><font face="Tahoma"><font size="2"><strong>Blog</strong>: </font></font><a href="http://sqlgo.wordpress.com"><font size="2" face="Tahoma">http://sqlgo.wordpress.com</font></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=206&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/04/28/lio-3-gerenciandotransaes-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/clip_image002_thumb.jpg" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/clip_image004_thumb.jpg" medium="image">
			<media:title type="html">clip_image004</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/clip_image006_thumb.jpg" medium="image">
			<media:title type="html">clip_image006</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/clip_image008_thumb.jpg" medium="image">
			<media:title type="html">clip_image008</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/clip_image010_thumb.jpg" medium="image">
			<media:title type="html">clip_image010</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 3: GerenciandoTransa&#231;&#245;es (Parte 1)</title>
		<link>http://estudandopara70433.wordpress.com/2011/04/26/lio-3-gerenciandotransaes-parte-1/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/04/26/lio-3-gerenciandotransaes-parte-1/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 16:15:24 +0000</pubDate>
		<dc:creator>Andressa</dc:creator>
				<category><![CDATA[Capítulo 2]]></category>
		<category><![CDATA[Lição 3]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/?p=178</guid>
		<description><![CDATA[Transações podem ser definidas como um conjunto de ações e podem ser realizadas com sucesso ou não. São importantes para garantir a integridade e consistência dos dados em um banco de dados OLTP (Online Transaction Processing). Entendendo Transações As transações fornecem quanto principais funções (ACID): Atomicidade – Uma transação deve ser uma unidade atômica de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=178&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">Transações podem ser definidas como um conjunto de ações e podem ser realizadas com sucesso ou não. São importantes para garantir a integridade e consistência dos dados em um banco de dados <em>OLTP (Online Transaction Processing).</em> </font></span></p>
<p><strong><span style="font-family:tahoma;font-size:x-small;"><font size="2">Entendendo Transações</font></span></strong></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">As transações fornecem quanto principais funções (ACID): </font></span></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><strong>Atomicidade</strong> – Uma transação deve ser uma unidade atômica de trabalho ou todas as suas modificações de dados são executadas ou nenhuma delas é executada. </font></span></span></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><strong>Consistência</strong> – Quando concluída, uma transação deve deixar todos os dados em um estado consistente. </font></span></span></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><strong>Isolamento</strong> – Modificações feitas por transações simultâneas devem ser isoladas das modificações feitas por qualquer outra transação simultânea. </font></span></span></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><strong>Durabilidade</strong> &#8211; Depois que uma transação tiver sido concluída, seus efeitos ficam permanentemente no sistema. As modificações persistem até mesmo no caso de uma queda do sistema.</font></span></span></p>
<p><strong><span style="font-family:tahoma;font-size:x-small;"><font size="2">Definindo transações explicitas</font></span></strong></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2">Uma transação explicita inicia quando o comando <em>BEGIN TRANSACTION</em> é executado e finaliza quando o é executado um dos seguintes comandos <em>COMMIT TRANSACTION </em>ou <em>ROLLBACK TRANSACTION.</em></font></span></span></p>
<p><strong><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2">Entendendo cenários especiais de <em>ROLLBACK</em></font></span></span></strong></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">Quando há transações aninhadas na mesma sessão, um comando <em>ROLLBACK</em> desfaz a transação aninhada. Isso acontece quando um comando <em>COMMIT </em>é executado antes do comando <em>ROLLBACK. </em>No exemplo a os dados são revertidos a primeira linha.</font></span></p>
<p><span style="color:#0000ff;"><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2">BEGIN TRANSACTION<br />INSERT<br />INTO <span style="color:#000000;">TestTable</span><br />VALUES <span style="color:#000000;">(</span><span style="color:#000000;">1</span><span style="color:#ff0000;"><span style="color:#000000;">,</span>&#8216;a&#8217;</span>,<span style="color:#ff0000;">&#8216;b</span><span style="color:#ff0000;">&#8216;</span></font></span></span><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><span style="color:#000000;">);<br /></span><br />BEGIN TRANSACTION<br />UPDATE <span style="color:#000000;">TestTable</span><br />SET <span style="color:#000000;">Col2=</span><span style="color:#ff0000;">&#8216;c&#8217;</span><br />WHERE </font></span></span><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2"><span style="color:#000000;">Id = 1<br /></span>&nbsp;&nbsp;&nbsp; COMMIT TRANSACTION<br />ROLLBACK</font></span></span></span></p>
<p><span style="font-family:tahoma;"><span style="font-size:x-small;"><font size="2">Caso queira desfazer apenas uma parte da transação você pode definir <em>savepoints </em>usando o comando <em>SAVE TRANSACTION nome_do_SavePoint, </em>dessa forma a transação será desfeita até o último <em>savepoint. </em>Vale lembrar que você precisa definir o <em>COMMIT.</em></font></span></span></p>
<p><strong><span style="font-family:tahoma;font-size:x-small;"><font size="2">Obtendo informação sobre transações</font></span></strong></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">Quando trabalhamos com transações em <em>stored procedures, </em>tratamentos de erros devem ser realizados antes de fechar uma conexão. </font></span></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">Você pode utilizar o comando <span style="color:#ff00ff;">@@trancount</span> para verificar a quantidade de transações ativas na sessão.</font></span></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">Para obter mais detalhes consulte as DMV’s abaixo:</font></span></p>
<p><span style="font-family:tahoma;font-size:x-small;"><font size="2">sys.dm_tran_active_snapshot_database_transactions<br />sys.dm_tran_active_transactions<br />sys.dm_tran_current_snapshot<br />sys.dm_tran_current_transaction<br />sys.dm_tran_database_transactions<br />sys.dm_tran_locks<br />sys.dm_tran_session_transactions<br />sys.dm_tran_top_version_generators<br />sys.dm_tran_transactions_snapshot<br />sys.dm_tran_version_store</font></span></p>
<p><a href="http://sqlgo.files.wordpress.com/2011/04/image34.png"><span style="font-family:tahoma;"><font size="2"><img title="image" border="0" alt="image" src="http://sqlgo.files.wordpress.com/2011/04/image_thumb29.png?w=659&#038;h=388" width="659" height="388"></font></span></a></p>
<p><span style="font-family:tahoma;"><font size="2"><span style="font-size:xx-small;">sys.dm_tran_active_transactions</span> </font></span></p>
<p><span style="font-family:tahoma;"><font size="2">[]’s</font></span></p>
<p><strong><span style="font-family:tahoma;">Andressa Alves Martins</span></strong></p>
<p><span style="font-size:xx-small;"><span style="font-family:tahoma;"><strong>Twitter</strong>: Dre_Martins&nbsp; <strong>Skype</strong>: Dre.alvesm</span></span></p>
<p><span style="font-size:xx-small;"><span style="font-family:tahoma;"><strong>Blog</strong>: </span></span><a href="http://sqlgo.wordpress.com"><span style="font-family:tahoma;color:#0000ff;font-size:xx-small;">http://sqlgo.wordpress.com</span></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=178&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/04/26/lio-3-gerenciandotransaes-parte-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0535386262b50163ae85e8abda2fc77e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drealvesm</media:title>
		</media:content>

		<media:content url="http://sqlgo.files.wordpress.com/2011/04/image_thumb29.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Li&#231;&#227;o 2: Utilizando a cl&#225;usula OUTPUT e a instru&#231;&#227;o MERGE</title>
		<link>http://estudandopara70433.wordpress.com/2011/04/19/lio-2-utilizando-a-clusula-output-e-a-instruo-merge-2/</link>
		<comments>http://estudandopara70433.wordpress.com/2011/04/19/lio-2-utilizando-a-clusula-output-e-a-instruo-merge-2/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 06:41:25 +0000</pubDate>
		<dc:creator>Lucas A. Romão</dc:creator>
				<category><![CDATA[Capítulo 2]]></category>
		<category><![CDATA[Lição 2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2011/04/19/lio-2-utilizando-a-clusula-output-e-a-instruo-merge-2/</guid>
		<description><![CDATA[Olá pessoal! Na lição de hoje estaremos estudando a cláusula OUTPUT e a instrução MERGE, e para entendermos bem como ambas funcionam vejamos o que cada uma delas faz. OUTPUT: Permite que você retorne informações de registros afetadas por instruções como INSERT, UPDATE, DELETE ou pela instrução MERGE, podendo retornar à aplicação como mensagem de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=170&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">Olá pessoal!</font></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">Na lição de hoje estaremos estudando a cláusula <em>OUTPUT</em> e a instrução <em>MERGE, </em>e para entendermos bem como ambas funcionam vejamos o<em> </em>que cada uma delas faz.</font></span></p>
<p align="justify"><span style="font-size:x-small;"><span style="font-family:calibri;"><font size="2"><strong><span style="text-decoration:underline;">OUTPUT:</span></strong> Permite que você retorne informações de registros afetadas por instruções como INSERT, UPDATE, DELETE ou pela instrução MERGE, podendo retornar à aplicação como mensagem de confirmação, variáveis, em tabelas de destino ou views. Uma vez recuperada, estas informações podemos manipulá-las da maneira que nos for mais conveniente.</font></span></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">Abaixo vamos comentar sobre 3 cenários possíveis para a utilização da cláusula OUTPUT, porém faremos o exemplo de apenas 1 as outras 2 fica a cargo de vocês e aguardo feedback! J</font></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">· <span style="text-decoration:underline;">Cenário 1:</span> Muitos ambientes precisam salvar os dados inseridos em uma tabela de auditoria, como exemplo uma empresa pode querer tirar relatóriospara saber quantas linhas foram inseridas em diferentes períodos de tempo.</font></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">· <span style="text-decoration:underline;">Cenário 2:</span> Outra situação é o arquivamento de dados. Por exemplo, suponha que uma empresa queira mover todos os registros de pedidos feitos antes 01 de dezembro de 1997, à partir de uma tabela de Pedidos para a tabela PedidosArchive. Você pode excluir as linhas da tabela Pedidos e movê-los para a tabela PedidosArchive em uma única etapa usando DELETE com a cláusula OUTPUT,</font></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">· Cenário 3: Neste último a idéia é de a empresa poder saber qual o status de antes e depois de uma alteração em uma determinada coluna. Vejamos o exemplo abaixo onde iremos alterar o nome de uma determinada categoria, para isso utilizaremos a base de dados Northwind, a tabela já existente <em>Categories</em> e uma segunda tabela que criamos chamada <em>CategoriasModificadas</em> que possui as colunas <em>CategoryID, CategoryNameDeletado, CategoryNameNovo, DataCriacao e Usuario</em>.</font></span></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">o Na tabela abaixo apresentamos os dados originais.</font></span></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/output00.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="output00" border="0" alt="output00" src="http://estudandopara70433.files.wordpress.com/2011/04/output00_thumb.png?w=446&#038;h=137" width="446" height="137" /></span></a></p>
<p><span style="font-family:calibri;"><font size="2">o Com o código abaixo iremos alterar o dado da coluna CategoryName que possue o CategoryID 1 e popular nossa nova tabela <em>CategoriasModificadas</em> com os dados alterados e recupoerados.</font></span></p>
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:103.28%;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;" id="codeSnippet"><span style="font-family:calibri;"><span style="color:#606060;" id="lnum1">1:</span> <span style="color:#0000ff;">UPDATE</span> Categories </span>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum2">2:</span> <span style="color:#0000ff;">SET</span> CategoryName = <span style="color:#006080;">&#8216;Bebidas&#8217;</span> </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum3">3:</span> <span style="color:#0000ff;">OUTPUT</span> inserted.CategoryID, deleted.CategoryName </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum4">4:</span> , inserted.CategoryName, getdate(), SUSER_SNAME() </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum5">5:</span> <span style="color:#0000ff;">INTO</span> CategoriasModificadas</span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum6">6:</span> <span style="color:#0000ff;">WHERE</span> CategoryID = 1;</span></p>
</p></div>
</p></div>
<p><span style="font-family:calibri;"><font size="2">o Com isso teremos os seguintes resultados respectivamente nas tabelas <em>Categories </em>e <em>CategoriasModificadas</em></font></span></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/output01.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="output01" border="0" alt="output01" src="http://estudandopara70433.files.wordpress.com/2011/04/output01_thumb.png?w=446&#038;h=140" width="446" height="140" /></span></a></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/output02.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="output02" border="0" alt="output02" src="http://estudandopara70433.files.wordpress.com/2011/04/output02_thumb.png?w=446&#038;h=105" width="446" height="105" /></span></a></p>
<p align="justify"><span style="font-size:x-small;"><span style="font-family:calibri;"><font size="2"><strong><span style="text-decoration:underline;">MERGE:</span></strong> Nos permite executar comandos como INSERT, UPDATE ou DELETE baseando-se em duas tabelas sendo uma de origem e outra de destino.</font></span></span></p>
<p align="justify"><span style="font-size:x-small;"><span style="font-family:calibri;"><font size="2">No exemplo abaixo iremos comparar os dados de duas tabelas e quando um destes dados não estiverem na tabela de origem, o valor da coluna <em>Cancelled</em> na tabela de destino será alterado para <em>True.</em></font></span></span></p>
<p align="justify"><span style="font-size:x-small;"><span style="font-family:calibri;"><font size="2">· Neste primeiro momento exibimos os dados iniciais da tabela de origem, observe que ainda temos os registros com o <em>OrderID 10248.</em></font></span></span></p>
<p align="justify"><a href="http://estudandopara70433.files.wordpress.com/2011/04/merge00.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="merge00" border="0" alt="merge00" src="http://estudandopara70433.files.wordpress.com/2011/04/merge00_thumb.png?w=446&#038;h=192" width="446" height="192" /></span></a></p>
<p><span style="font-family:calibri;font-size:x-small;"><font size="2">· Neste instante eu excluí todos os registros que possuíam o <em>OrderID = 10248</em> e executei a seguinte instrução:</font></span></p>
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;" id="codeSnippet"><span style="font-family:calibri;"><span style="color:#606060;" id="lnum1">1:</span> MERGE <span style="color:#0000ff;">INTO</span> [Historico <span style="color:#0000ff;">Order</span> Details] <span style="color:#0000ff;">AS</span> ODH </span>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum2">2:</span> <span style="color:#0000ff;">USING</span> [<span style="color:#0000ff;">order</span> details] <span style="color:#0000ff;">AS</span> OD </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum3">3:</span> <span style="color:#0000ff;">ON</span> ODH.orderid = OD.orderid </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum4">4:</span> <span style="color:#0000ff;">AND</span> ODH.ProductID = OD.ProductID </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum5">5:</span> <span style="color:#0000ff;">WHEN</span> <span style="color:#0000ff;">NOT</span> MATCHED <span style="color:#0000ff;">BY</span> TARGET <span style="color:#0000ff;">THEN</span> </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum6">6:</span> INSERT (OrderID, ProductID, UnitPrice, Quantity, Discount, ModifiedDate, Cancelled) </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum7">7:</span> <span style="color:#0000ff;">VALUES</span> (OrderID, ProductID, UnitPrice, Quantity, Discount, ModifiedDate, <span style="color:#006080;">&#8216;False&#8217;</span>) </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum8">8:</span> <span style="color:#0000ff;">WHEN</span> <span style="color:#0000ff;">NOT</span> MATCHED <span style="color:#0000ff;">BY</span> SOURCE <span style="color:#0000ff;">THEN</span> </span></p>
<p><span style="font-family:calibri;"><span style="color:#606060;" id="lnum9">9:</span> <span style="color:#0000ff;">UPDATE</span> <span style="color:#0000ff;">SET</span> ODH.Cancelled = <span style="color:#006080;">&#8216;True&#8217;</span>; </span></p>
</p></div>
</p></div>
<p><span style="font-family:calibri;font-size:x-small;"><font size="2">· Sendo assim teremos os seguintes resultados em nossas tabelas:</font></span></p>
<p><span style="font-family:calibri;font-size:x-small;"><font size="2">o Na tabela de origem os registros com <em>OrderID = 10248 </em>não mais existem.</font></span></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/merge00a.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="merge00a" border="0" alt="merge00a" src="http://estudandopara70433.files.wordpress.com/2011/04/merge00a_thumb.png?w=446&#038;h=186" width="446" height="186" /></span></a></p>
<p align="justify"><span style="font-family:calibri;font-size:x-small;"><font size="2">o Já na tabela de destino os registros com <em>OrderID = 10248</em> além de estarem presentes a coluna <em>Cancelled</em> foi alterada para <em>True </em>pois estes dados já existiam na tabela de destino e quando executamos a instrução acima atendeu nossa condição de que todos os dados que não estiverem na tabela de origem tivesse os dados da coluna <em>Cancelled </em>alterado para <em>True</em>.</font></span></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2011/04/merge01.png"><span style="font-family:calibri;"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="merge01" border="0" alt="merge01" src="http://estudandopara70433.files.wordpress.com/2011/04/merge01_thumb.png?w=446&#038;h=175" width="446" height="175" /></span></a></p>
<p><span style="font-family:calibri;font-size:x-small;"><font size="2">Espero que tenham entendido, qualquer dúvida fico à disposição.</font></span></p>
<p><span style="font-family:calibri;font-size:x-small;"><font size="2">Grande abraço e sucesso a todos.</font></span></p>
<p><span style="font-family:calibri;"><span style="font-size:x-small;"><font size="2"><strong>Lucas A. Romão            <br /></strong>MSN: </font></span></span><a href="mailto:laromao@oxygenhost.com.br"><span style="font-family:calibri;font-size:x-small;"><font size="2">laromao@oxygenhost.com.br</font></span></a>     <br /><span style="font-family:calibri;font-size:x-small;"><font size="2">Blog: </font></span><a href="http://laromao.wordpress.com/"><span style="font-family:calibri;font-size:x-small;"><font size="2">http://laromao.wordpress.com/</font></span></a><span style="font-family:calibri;font-size:x-small;"><font size="2"> | Twitter: </font></span><a href="http://www.twitter.com/LucasRomao"><span style="font-family:calibri;font-size:x-small;"><font size="2">@LucasRomao</font></span></a>     <br /><a href="http://azureservicesbr.ning.com/profiles/"><span style="font-family:calibri;font-size:x-small;"><font size="2">Líder da Comunidade Azure Services Brasil</font></span></a><span style="font-family:calibri;font-size:x-small;"><font size="2"> | </font></span><a href="http://www.twitter.com/AzureServicesBR"><span style="font-family:calibri;font-size:x-small;"><font size="2">@AzureServicesBR</font></span></a>     <br /><span style="font-family:calibri;"><img alt="" src="http://laromao.files.wordpress.com/2010/11/clip_image001.png?w=510" /></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=170&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2011/04/19/lio-2-utilizando-a-clusula-output-e-a-instruo-merge-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bd53b9e7f957d8cabf51831e15106df?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lucasromao</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/output00_thumb.png" medium="image">
			<media:title type="html">output00</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/output01_thumb.png" medium="image">
			<media:title type="html">output01</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/output02_thumb.png" medium="image">
			<media:title type="html">output02</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/merge00_thumb.png" medium="image">
			<media:title type="html">merge00</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/merge00a_thumb.png" medium="image">
			<media:title type="html">merge00a</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2011/04/merge01_thumb.png" medium="image">
			<media:title type="html">merge01</media:title>
		</media:content>

		<media:content url="http://laromao.files.wordpress.com/2010/11/clip_image001.png?w=510" medium="image" />
	</item>
		<item>
		<title>Cap&#237;tulo 2 &#8211; Modifying Data&#8212;The INSERT, UPDATE, DELETE, and MERGE Statements</title>
		<link>http://estudandopara70433.wordpress.com/2010/11/23/captulo-2-modifying-datathe-insert-update-delete-and-merge-statements/</link>
		<comments>http://estudandopara70433.wordpress.com/2010/11/23/captulo-2-modifying-datathe-insert-update-delete-and-merge-statements/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 03:01:56 +0000</pubDate>
		<dc:creator>Lucas A. Romão</dc:creator>
				<category><![CDATA[Capítulo 2]]></category>
		<category><![CDATA[Lição 1]]></category>
		<category><![CDATA[Lição 2]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">https://estudandopara70433.wordpress.com/2010/11/23/captulo-2-modifying-datathe-insert-update-delete-and-merge-statements/</guid>
		<description><![CDATA[Lição 1: Modifying Data by Using INSERT, UPDATE, and DELETE Statements Olá pessoal, depois de um longo período dedicado a outras atividades eis que retorno às atividades, prometo que desta vez teremos novidades diárias (ou quase)! Mas vamos ao que interessa, nesta lição aprenderemos como inserir dados utilizando o INSERT, alterar dados utilizando o UPDATE, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=143&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Lição 1: Modifying Data by Using INSERT, UPDATE, and DELETE Statements</strong></p>
<p>Olá pessoal, depois de um longo período dedicado a outras atividades eis que retorno às atividades, prometo que desta vez teremos novidades diárias (ou quase)! <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Mas vamos ao que interessa, nesta lição aprenderemos como inserir dados utilizando o <em>INSERT</em>, alterar dados utilizando o <em>UPDATE</em>, e excluir dados utilizando o <em>DELETE</em> dentro de uma determinada tabela.</p>
<p><em><span style="text-decoration:underline;">Utilizando a instrução INSERT</span></em></p>
<p>Para inserir dados em uma tabela você pode inserir dados em determinadas colunas ou em todas, caso opte pela segunda opção vc não necessida indicar o nome das colunas.</p>
<p>Vamos dar uma olhada em ambas formas:</p>
<p>a) Inserindo dados em todas as colunas;</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.63%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> Insert <span style="color:#0000ff;">Into</span> Customers</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span>     <span style="color:#0000ff;">Values</span> (<span style="color:#006080;">'ASBR'</span>, <span style="color:#006080;">'Azure Services Br Corp'</span>, <span style="color:#006080;">'Lucas A. Romão'</span>, <span style="color:#006080;">'Manager'</span>,</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum3" style="color:#606060;"> 3:</span>     <span style="color:#006080;">'Gastão Vidigal, 267'</span>, <span style="color:#006080;">'Piracicaba'</span>, <span style="color:#006080;">'SP'</span>, <span style="color:#006080;">'13418470'</span>, <span style="color:#006080;">'Brazil'</span>,</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum4" style="color:#606060;"> 4:</span>     99999999, 888888888);</pre>
</div>
</div>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/inserttodoscampos.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="insertTodosCampos" src="http://estudandopara70433.files.wordpress.com/2010/11/inserttodoscampos_thumb.png?w=454&#038;h=88" alt="insertTodosCampos" width="454" height="88" border="0" /></a></p>
<p>b) Inserindo dados em algumas colunas, para isso basta adicionar o nome das colunas a que desejamos inserir valores e na sequencia seus valores propriamente ditos.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:98.73%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> Insert <span style="color:#0000ff;">Into</span> Customers</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span>     (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region,</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum3" style="color:#606060;"> 3:</span>     PostalCode, Country)</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum4" style="color:#606060;"> 4:</span>     <span style="color:#0000ff;">Values</span> (<span style="color:#006080;">'EP'</span>, <span style="color:#006080;">'Estudando para 70433'</span>, <span style="color:#006080;">'Lucas A. Romão'</span>, <span style="color:#006080;">'Manager'</span>,</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum5" style="color:#606060;"> 5:</span> <span style="color:#006080;">'Gastão Vidigal, 267'</span>, <span style="color:#006080;">'Piracicaba'</span>, <span style="color:#006080;">'SP'</span>, <span style="color:#006080;">'13418470'</span>, <span style="color:#006080;">'Brazil'</span>);</pre>
</div>
</div>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/insertalgunscampos.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:0 5px;" title="insertAlgunsCampos" src="http://estudandopara70433.files.wordpress.com/2010/11/insertalgunscampos_thumb.png?w=454&#038;h=90" alt="insertAlgunsCampos" width="454" height="90" border="0" /></a></p>
<p>Uma outra forma de inserir dados em uma tabela é com base em uma pesquisa feita em uma outra tabela, veja o exemplo abaixo eu me baseei em uma consulta na tabela <em>EMPLOYEES</em> para inserir alguns dados na tabela <em>CUSTOMERS.</em></p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:99.19%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> INSERT <span style="color:#0000ff;">INTO</span> Customers</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span> <span style="color:#0000ff;">SELECT</span> <span style="color:#0000ff;">SUBSTRING</span>(lastname,1,3), <span style="color:#006080;">'Northwind Traders'</span>, FirstName + <span style="color:#006080;">' '</span> + LastName</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum3" style="color:#606060;"> 3:</span>        , <span style="color:#006080;">'Employee'</span>, Address, City, Region, PostalCode</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum4" style="color:#606060;"> 4:</span>        , Country, HomePhone, <span style="color:#0000ff;">NULL</span></pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum5" style="color:#606060;"> 5:</span> <span style="color:#0000ff;">FROM</span> Employees <span style="color:#0000ff;">WHERE</span> LastName=<span style="color:#006080;">'Fuller'</span></pre>
</div>
</div>
<p>Veja o resultado após um <em>SELECT</em> na tabela <em>CUSTOMERS.</em></p>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/3-insertcomselect.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:0 5px;" title="3 - insertComSelect" src="http://estudandopara70433.files.wordpress.com/2010/11/3-insertcomselect_thumb.png?w=454&#038;h=107" alt="3 - insertComSelect" width="454" height="107" border="0" /></a></p>
<p><em><span style="text-decoration:underline;">Obs: Claro que este SELECT podia ser muito mais complexo utilizando-se , mais de uma tabela inclusive utilizando JOIN.</span></em></p>
<p><em><span style="text-decoration:underline;">Que tal voces montarem um e postar nos comentários? </span></em><em><span style="text-decoration:underline;">Vale um brinde heim!!!!</span></em></p>
<p><em><span style="text-decoration:underline;">Utilizando a instrução UPDATE</span></em></p>
<p>Nos próximos exemplos estarei demonstrando algumas maneiras de como atualizar os dados de uma tabela.</p>
<p>Na primeira forma estarei alterando todos os dados de uma coluna, onde aumentaremos em 1.25 o valor de todos os produtos da coluna <em>UNITPRICE</em> da tabela <em>PRODUCTS</em> e para isso utilizartemos a seguinte instrução.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">UPDATE</span> Products</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span> <span style="color:#0000ff;">SET</span> UnitPrice = UnitPrice + 1.25;</pre>
</div>
</div>
<p>Com apenas essas 2 linhas alteramos os preços de todos os produtos e se executarmos uma instrução <em>SELECT</em> teremos o seguinte resultado.</p>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:0 5px;" title="4 - update figura 1" src="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-1_thumb.png?w=454&#038;h=90" alt="4 - update figura 1" width="454" height="90" border="0" /></a></p>
<p>Agora se quisermos alterar o valor de um único ou determinado grupo de registros, basta utilizarmos a cláusula <em>WHERE</em>, abaixo iremos alterar o valor do Produto <em>CHANG</em> (observe a linha 2 da imagem acima) de <em>20.25</em> para <em>19.99</em>.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">UPDATE</span> Products</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span> <span style="color:#0000ff;">SET</span> UnitPrice = 19.99</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum3" style="color:#606060;"> 3:</span> <span style="color:#0000ff;">WHERE</span> ProductID = 2;</pre>
</div>
</div>
<p>Veja o resultado final.</p>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:0 5px;" title="4 - update figura 2" src="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-2_thumb.png?w=454&#038;h=96" alt="4 - update figura 2" width="454" height="96" border="0" /></a></p>
<p><em><span style="text-decoration:underline;">Você também pode atualizar uma tabela baseando-se em um JOIN entre outras tabelas.</span></em></p>
<p><em><span style="text-decoration:underline;">Utilizando a instrução DELETE</span></em></p>
<p>Para utilizarmos a instrução DELETE podemos utilizá-la das 3 formas mostradas anteriormente, vejamos as 3 formas.</p>
<p>a) Excluindo todas as informaçõe de uma única vez, para isso basta utilizarmos a seguinte sintaxe.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">DELETE</span> <span style="color:#0000ff;">FROM</span> Customers;</pre>
</div>
</div>
<p><span style="color:#ff0000;">PS: Cuidado ao executar esse comando pois ele definitivamente vai limpar sua tabela</span></p>
<p>b) Excluindo um determinado registro com base em uma cláusula <em>WHERE</em>, neste caso iremos excluir um registro que inserimos anteriormente.</p>
<p>Para isto basta utiliza a seguinte sintaxe.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">DELETE</span> <span style="color:#0000ff;">FROM</span> Customers</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span> <span style="color:#0000ff;">WHERE</span> CustomerID = <span style="color:#006080;">'Ful'</span>;</pre>
</div>
</div>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:0 5px;" title="5 - delete 2" src="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-2_thumb.png?w=454&#038;h=105" alt="5 - delete 2" width="454" height="105" border="0" /></a></p>
<p>c) E por último vamos ver como deletar determinadas informações baseadas em um resultado obtido por um JOIN feito em outras tabelas.</p>
<p>Neste exemplo iremos deletar todos os registros da tabela <em>[Order Details]</em> que possua o mesmo ORDER.ID entre ambas as tabelas e possuam o valor da coluna <em>FREIGHT &lt;= 1</em> e o valor da coluna <em>SHIPVIA = 1</em></p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">DELETE</span> <span style="color:#0000ff;">FROM</span> [<span style="color:#0000ff;">Order</span> Details]</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum2" style="color:#606060;"> 2:</span> <span style="color:#0000ff;">FROM</span> ORDERS <span style="color:#0000ff;">JOIN</span> [<span style="color:#0000ff;">Order</span> Details]</pre>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum3" style="color:#606060;"> 3:</span> <span style="color:#0000ff;">ON</span> Orders.OrderID = [<span style="color:#0000ff;">Order</span> Details].OrderID</pre>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span id="lnum4" style="color:#606060;"> 4:</span> <span style="color:#0000ff;">WHERE</span> Freight &lt;= 1 <span style="color:#0000ff;">AND</span> ShipVia = 1</pre>
</div>
</div>
<p><a href="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-join.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="5 - delete join" src="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-join_thumb.png?w=244&#038;h=71" alt="5 - delete join" width="244" height="71" border="0" /></a></p>
<p><em><span style="text-decoration:underline;">Utilizando a instrução TRUNCATE</span></em></p>
<p>Para finalizar temos a instrução <em>TRUNCATE</em>, que possui a mesma função do <em>DELETE</em> para apagar todos os registros de uma tabela, porém com algumas diferenças significativas como por exemplo a velocidade em que os dados são apagados (muito mais rápido), requer menos recursos do servidor além de que se existe uma coluna com valor identity o <em>TRUNCATE TABLE</em> redefine este valor.</p>
<p>Veja sua sintaxe abaixo.</p>
<div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:97.5%;">
<div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;"><span id="lnum1" style="color:#606060;"> 1:</span> <span style="color:#0000ff;">TRUNCATE</span> <span style="color:#0000ff;">TABLE</span> Customers;</pre>
</div>
</div>
<p><span style="color:#ff0000;">PS: Cuidado ao executar esse comando pois ele definitivamente vai limpar sua tabela</span></p>
<p>E é isto pessoal espero que possam ter aproveitado e nos encontramos no próximo post.</p>
<p>Grande abraço e sucesso. <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" src="http://estudandopara70433.files.wordpress.com/2010/11/wlemoticon-winkingsmile.png?w=450" alt="Smiley piscando" /></p>
<p><strong>Lucas A. Romão</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=143&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2010/11/23/captulo-2-modifying-datathe-insert-update-delete-and-merge-statements/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bd53b9e7f957d8cabf51831e15106df?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lucasromao</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/inserttodoscampos_thumb.png" medium="image">
			<media:title type="html">insertTodosCampos</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/insertalgunscampos_thumb.png" medium="image">
			<media:title type="html">insertAlgunsCampos</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/3-insertcomselect_thumb.png" medium="image">
			<media:title type="html">3 - insertComSelect</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-1_thumb.png" medium="image">
			<media:title type="html">4 - update figura 1</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/4-update-figura-2_thumb.png" medium="image">
			<media:title type="html">4 - update figura 2</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-2_thumb.png" medium="image">
			<media:title type="html">5 - delete 2</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/5-delete-join_thumb.png" medium="image">
			<media:title type="html">5 - delete join</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/11/wlemoticon-winkingsmile.png" medium="image">
			<media:title type="html">Smiley piscando</media:title>
		</media:content>
	</item>
		<item>
		<title>Lição 5: Applying Built-in Scalar Functions</title>
		<link>http://estudandopara70433.wordpress.com/2010/08/04/licao-5-applying-built-in-scalar-functions/</link>
		<comments>http://estudandopara70433.wordpress.com/2010/08/04/licao-5-applying-built-in-scalar-functions/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 03:21:54 +0000</pubDate>
		<dc:creator>Lucas A. Romão</dc:creator>
				<category><![CDATA[Capítulo 1]]></category>
		<category><![CDATA[Lição 5]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>

		<guid isPermaLink="false">http://estudandopara70433.wordpress.com/?p=112</guid>
		<description><![CDATA[Olá pessoal! Estou aqui mais uma vez “deitado” sobre o Trainning Kit estudando-o e pesquisando mais material na internet, o conteúdo de hoje é bem tranquilo de assimilar porém de uma grande importância no nosso dia-a-dia. Bom proveito! O SQL Server 2008 nos prove um grande número de funções internas e podemos utilizá-las para aprimoras [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=112&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal!</p>
<p>Estou aqui mais uma vez “deitado” sobre o Trainning Kit estudando-o e pesquisando mais material na internet, o conteúdo de hoje é bem tranquilo de assimilar porém de uma grande importância no nosso dia-a-dia.</p>
<p>Bom proveito! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>O SQL Server 2008 nos prove um grande número de funções internas e podemos utilizá-las para aprimoras nossas queries.</p>
<p>Em muitos casos quando usamos uma função interna frequentemente logo após o nome da função adicionamos os “()” mesmo quando não temos nenhum parâmetro isso pode indicar para que o engine do banco utilize o valor atual, veremos alguns exemplos logo mais.</p>
<p>Bom. Vamos partir para a prática e ver um pouco do que o SQL Server 2008 nos proporciona, iremos ver alguns exemplos das funções mais utilizadas.</p>
<p>As primeiras que iremos ver serão as que trabalham com DATE e TIME.</p>
<p>As primeiras funções que iremos ver serão SYSDATETIME, SYSDATETIMEOFFSET, e SYSUTCDATETIME. todas as 3 nos retornam a hora. Elas são ideais caso tenhamos a necessidade de saber o horário preciso do sistema naquele momento.</p>
<p>Vejamos o exemplo:</p>
<pre><span style="color:#0000ff;">SELECT </span><span style="color:#ff00ff;">SYSDATETIME</span>() <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Hora Exata do Sistema'</span>, <span style="color:#ff0000;">'SYSDATETIME'</span> <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Nome da Função'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">SYSDATETIMEOFFSET</span>(), <span style="color:#ff0000;">'SYSDATETIMEOFFSET'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">SYSUTCDATETIME</span>(), <span style="color:#ff0000;">'SYSUTCDATETIME'</span></pre>
<div id="attachment_113" class="wp-caption alignnone" style="width: 424px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-1.png"><img class="size-full wp-image-113" title="Fig. 30 - Exemplo de utilização de funções Date/Time" src="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-1.png?w=414&#038;h=133" alt="Fig. 30 - Exemplo de utilização de funções Date/Time" width="414" height="133" /></a><p class="wp-caption-text">Fig. 30 - Exemplo de utilização de funções Date/Time</p></div>
<p>Veja que o resultado foi exatamente igual e que para retornarmos a data e hora do sistema é extremamente simples, aproveitando o exemplo ainda colocamos o conceito de UNION que aprendemos na lição passada (Lição 4 – se tiver alguma dúvida volte uma lição e revise o conceito de UNION e suas regrinhas de funcionamento).</p>
<p>Agora se vc não tem a necessidade de tamanha precisão você pode utilizar as funções GETDATE, CURRENT_TIMESTAMP e GETDATE que ainda lhe proporciona um ganho de performance por retornar um conjunto de valores menor dos que as funções mostradas anteriormente.</p>
<p>Vejamos um mesmo modelo de exemplo:</p>
<pre><span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">GETDATE</span>() <span style="color:#0000ff;">AS </span><span style="color:#ff0000;">'Hora Exata do Sistema'</span>, <span style="color:#ff0000;">'GETDATE'</span> <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Nome da Função'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">CURRENT_TIMESTAMP</span>, <span style="color:#ff0000;">'CURRENT_TIMESTAMP'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">GETUTCDATE</span>(), <span style="color:#ff0000;">'GETUTCDATE'</span></pre>
<div id="attachment_114" class="wp-caption alignnone" style="width: 365px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-2.png"><img class="size-full wp-image-114" title="Fig. 31 - Mais funções Date/Time" src="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-2.png?w=355&#038;h=144" alt="Fig. 31 - Mais funções Date/Time" width="355" height="144" /></a><p class="wp-caption-text">Fig. 31 - Mais funções Date/Time</p></div>
<p>A única observação é a de que a função CURRENT_TIMESTAMP não necessita dos parenteses.</p>
<p>Agora se você tem a necessidade de apenas parte das informações podemos utilizar as funções DATEPART e DATENAME.</p>
<p>Vejamos alguns exemplos para melhorar explicar:</p>
<pre><span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATENAME</span>(<span style="color:#ff00ff;">DAY</span>, <span style="color:#ff00ff;">GETDATE</span>()) <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Parte da data do Sistema'</span>, <span style="color:#ff0000;">'DATENAME'</span> <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Nome da Função'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATENAME</span>(<span style="color:#ff00ff;">MONTH</span>, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATENAME'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> (<span style="color:#ff00ff;">YEAR</span>, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATENAME'</span></pre>
<div id="attachment_115" class="wp-caption alignnone" style="width: 336px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-3.png"><img class="size-full wp-image-115" title="Fig. 32 - Exemplo de uso da função DATENAME" src="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-3.png?w=326&#038;h=144" alt="Fig. 32 - Exemplo de uso da função DATENAME" width="326" height="144" /></a><p class="wp-caption-text">Fig. 32 - Exemplo de uso da função DATENAME</p></div>
<p>Com o exemplo acima utilizando o DATENAME a informa que retorna é a especificada dentro da função, em especial quando solicitamos o mês o que nos é retornado é a string com o nome do mês corrente.</p>
<p>Vejamos agora um exemplo com DATEPART que tem a mesma função do exemplo anterior e o que difere as duas é que ela retorna apenas o valor numérico do mês e não mais a string.</p>
<pre><span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEPART</span>(<span style="color:#ff00ff;">DAY</span>, <span style="color:#ff00ff;">GETDATE</span>()) <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Parte da data do Sistema'</span>, <span style="color:#ff0000;">'DATEPART'</span> <span style="color:#0000ff;">AS </span><span style="color:#ff0000;">'Nome da Função'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEPART</span>(<span style="color:#ff00ff;">MONTH</span>, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATEPART'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEPART</span>(<span style="color:#ff00ff;">YEAR</span>, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATEPART'</span></pre>
<div id="attachment_116" class="wp-caption alignnone" style="width: 321px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/datetime-4.png"><img class="size-full wp-image-116" title="Fig. 33 - Exemplo de uso da função DATEPART" src="http://estudandopara70433.files.wordpress.com/2010/08/datetime-4.png?w=311&#038;h=143" alt="Fig. 33 - Exemplo de uso da função DATEPART" width="311" height="143" /></a><p class="wp-caption-text">Fig. 33 - Exemplo de uso da função DATEPART</p></div>
<p>Agora se quisermos adicionar alguns dias, meses ou anos devemos utilizar a função DATEADD, vejamos os exemplos.</p>
<pre> 
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEADD</span>(YY, 5, <span style="color:#ff00ff;">GETDATE</span>()) <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Resultado obtido'</span>
       , <span style="color:#ff0000;">'DATEADD'</span> AS<span style="color:#ff0000;"> 'Nome da função'</span>
       , <span style="color:#ff0000;">'Adicionando 5 anos à partir da data atual' <span style="color:#0000ff;">AS </span>'Observação'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEADD</span>(DD, 25, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATEADD'</span>, <span style="color:#ff0000;">'Adicionando 25 dias à partir da data atual'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">DATEADD</span>(MM, 8, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATEADD'</span>, <span style="color:#ff0000;">'Adicionando 8 meses à partir da data atual'</span></pre>
<div id="attachment_117" class="wp-caption alignnone" style="width: 460px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/datetime-5.png"><img class="size-full wp-image-117" title="Fig. 34 - Exemplo de uso de DATEADD" src="http://estudandopara70433.files.wordpress.com/2010/08/datetime-5.png?w=450&#038;h=120" alt="Fig. 34 - Exemplo de uso de DATEADD" width="450" height="120" /></a><p class="wp-caption-text">Fig. 34 - Exemplo de uso de DATEADD</p></div>
<p>Agora se quisermos o inverso, sabermos quanto tempo se passou, vejamos os seguintes exemplos:</p>
<pre><span style="color:#0000ff;">SELECT </span><span style="color:#ff00ff;">DATEDIFF</span>(<span style="color:#ff00ff;">YEAR</span>, <span style="color:#ff0000;">'1/21/1980'</span>, <span style="color:#ff00ff;">GETDATE</span>()) <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Resultado obtido'</span>
    , <span style="color:#ff0000;">'DATEIFF' <span style="color:#0000ff;">AS</span> 'Nome da função'</span>
    , <span style="color:#ff0000;">'Quantidade em anos que tenho desde o meu nscimento'</span> <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Observação'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> DATEDIFF(<span style="color:#ff00ff;">DAY</span>, <span style="color:#ff0000;">'1/21/2001'</span>, <span style="color:#ff00ff;">GETDATE</span>()), 'DATEIFF'
    , <span style="color:#ff0000;">'Quantidade em dias que tenho desde o meu nscimento'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> DATEDIFF(<span style="color:#ff00ff;">MONTH</span>, <span style="color:#ff0000;">'1/21/2001'</span>, <span style="color:#ff00ff;">GETDATE</span>()), <span style="color:#ff0000;">'DATEIFF'</span>
     , <span style="color:#ff0000;">'Quantidade em meses que tenho desde o meu nscimento'</span></pre>
<div id="attachment_118" class="wp-caption alignnone" style="width: 460px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/datetime-6.png"><img class="size-full wp-image-118" title="Fig. 35 - Exemplo de uso de DATEIFF" src="http://estudandopara70433.files.wordpress.com/2010/08/datetime-6.png?w=450&#038;h=119" alt="Fig. 35 - Exemplo de uso de DATEIFF" width="450" height="119" /></a><p class="wp-caption-text">Fig. 35 - Exemplo de uso de DATEIFF</p></div>
<p>Já que estavamos tratando de hora e data, vamos dar uma olhada em uma função de sistema, apresentando-lhes a função CONVERT que nos auxilia convertendo os formatos de data e hora de acordo com a região e formato necessário.</p>
<p>Vejamos alguns exemplos:</p>
<pre><span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">CONVERT</span>(VARCHAR(30), <span style="color:#ff00ff;">GETDATE</span>()) <span style="color:#0000ff;">AS </span><span style="color:#ff0000;">'Data'</span>, <span style="color:#ff0000;">'Estilo padrão' </span><span style="color:#0000ff;">AS </span><span style="color:#ff0000;">'Descrição'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">CONVERT</span>(VARCHAR(30), <span style="color:#ff00ff;">GETDATE</span>(),103), <span style="color:#ff0000;">'Estilo Britânico/Francês | dd/mm/aaaa'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">CONVERT</span>(VARCHAR(30), <span style="color:#ff00ff;">GETDATE</span>(),111), <span style="color:#ff0000;">'Estilo Japonês | aa/mm/dd'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">CONVERT</span>(VARCHAR(30), <span style="color:#ff00ff;">GETDATE</span>(),105), <span style="color:#ff0000;">'Estilo Italiano | dd-mm-aa'</span></pre>
<div id="attachment_119" class="wp-caption alignnone" style="width: 402px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/datetime-7.png"><img class="size-full wp-image-119" title="Fig. 36 - Exemplo de uso de CONVERT" src="http://estudandopara70433.files.wordpress.com/2010/08/datetime-7.png?w=392&#038;h=168" alt="Fig. 36 - Exemplo de uso de CONVERT" width="392" height="168" /></a><p class="wp-caption-text">Fig. 36 - Exemplo de uso de CONVERT</p></div>
<p>Na tabela acima temos o formato que escolhemos para ser exibido e na segunda coluna a que região este padrão pertence seguido de uma máscara.</p>
<p>Veja tabela completa de estilos de formatação neste link: <a href="http://msdn.microsoft.com/pt-br/library/ms187928.aspx">http://msdn.microsoft.com/pt-br/library/ms187928.aspx</a></p>
<p><strong>String Functions</strong></p>
<p>Vejamos agora as diversas funções que podemos utilizar para com strings.</p>
<ul>
<li><strong>Left – </strong>Retorna o número de caracteres que for definido na função, iniciando da esquerda<strong></strong></li>
<li><strong>Right – </strong>Retorna o número de caracteres que for definido na função, iniciando da direita<strong></strong></li>
<li><strong>Upper – </strong>Retorna a string toda em maiúscula<strong></strong></li>
<li><strong>Lower &#8211; </strong>Retorna a string toda em minúscula<strong></strong></li>
<li><strong>Substring – </strong>Com esta função vc determina de que ponto a que ponto deve-se retornar o trecho da string</li>
<li><strong>Replace </strong>– Pesquisa dentro de uma string um conjunto de caracteres e substitui por outro que definimos</li>
<li><strong>RTrim </strong>– Remove os espaços em branco à direita de uma string</li>
<li><strong>LTrim </strong>– Remove os espaços em branco à esquerda de uma string</li>
</ul>
<p>Vamos aos exemplos:</p>
<pre><span style="color:#0000ff;">SELECT</span> <span style="color:#808080;">LEFT</span>(<span style="color:#ff0000;">'Estudando para 70-433'</span>,5) <span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Resultado Obtido'</span>, <span style="color:#ff0000;">'LEFT' </span><span style="color:#0000ff;">AS</span> <span style="color:#ff0000;">'Função'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#808080;">RIGHT</span>(<span style="color:#ff0000;">'Estudando para 70-433'</span>,5), <span style="color:#ff0000;">'RIGHT'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">UPPER</span>(<span style="color:#ff0000;">'Estudando para 70-433'</span>), <span style="color:#ff0000;">'UPPER'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">LOWER</span>(<span style="color:#ff0000;">'Estudando para 70-433'</span>), <span style="color:#ff0000;">'LOWER'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">SUBSTRING</span>(<span style="color:#ff0000;">'Estudando para 70-433'</span>,3,5), <span style="color:#ff0000;">'SUBSTRING'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">REPLACE</span>(<span style="color:#ff0000;">'Preparando para 70-433'</span>,<span style="color:#ff0000;">'Preparando'</span>,<span style="color:#ff0000;">'Estudando'</span>), <span style="color:#ff0000;">'REPLACE'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">RTRIM</span>(<span style="color:#ff0000;">'Preparando para 70-433         '</span>), <span style="color:#ff0000;">'RTRIM'</span>
<span style="color:#0000ff;">UNION</span>
<span style="color:#0000ff;">SELECT</span> <span style="color:#ff00ff;">LTRIM</span>(<span style="color:#ff0000;">'         Preparando para 70-433'</span>), <span style="color:#ff0000;">'LTRIM'</span></pre>
<div id="attachment_120" class="wp-caption alignnone" style="width: 321px"><a href="http://estudandopara70433.files.wordpress.com/2010/08/datetime-8.png"><img class="size-full wp-image-120" title="Fig. 37 - Exemplo com funções de uso com String" src="http://estudandopara70433.files.wordpress.com/2010/08/datetime-8.png?w=311&#038;h=215" alt="Fig. 37 - Exemplo com funções de uso com String" width="311" height="215" /></a><p class="wp-caption-text">Fig. 37 - Exemplo com funções de uso com String</p></div>
<p>E assim chegamos ao fim de mais uma Lição espero que tenham aproveitado e assimilado bem os conceitos, pois daqui para a frente eles serão essencias para as demais Lições visto que estaremos nos aprofundando cada vez mais e sempre que possível mesclando dois ou mais dos conceitos destas primeiras Lições.</p>
<p>Grande abraço, sucesso e nos encontramos no próximo post. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Lucas A. Romão</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/estudandopara70433.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/estudandopara70433.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/estudandopara70433.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=estudandopara70433.wordpress.com&amp;blog=14045487&amp;post=112&amp;subd=estudandopara70433&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://estudandopara70433.wordpress.com/2010/08/04/licao-5-applying-built-in-scalar-functions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bd53b9e7f957d8cabf51831e15106df?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lucasromao</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-1.png" medium="image">
			<media:title type="html">Fig. 30 - Exemplo de utilização de funções Date/Time</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-2.png" medium="image">
			<media:title type="html">Fig. 31 - Mais funções Date/Time</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/ok-datetime-3.png" medium="image">
			<media:title type="html">Fig. 32 - Exemplo de uso da função DATENAME</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/datetime-4.png" medium="image">
			<media:title type="html">Fig. 33 - Exemplo de uso da função DATEPART</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/datetime-5.png" medium="image">
			<media:title type="html">Fig. 34 - Exemplo de uso de DATEADD</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/datetime-6.png" medium="image">
			<media:title type="html">Fig. 35 - Exemplo de uso de DATEIFF</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/datetime-7.png" medium="image">
			<media:title type="html">Fig. 36 - Exemplo de uso de CONVERT</media:title>
		</media:content>

		<media:content url="http://estudandopara70433.files.wordpress.com/2010/08/datetime-8.png" medium="image">
			<media:title type="html">Fig. 37 - Exemplo com funções de uso com String</media:title>
		</media:content>
	</item>
	</channel>
</rss>
