<?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/"
	>

<channel>
	<title>Silvio Delgado  &#187; banco de dados</title>
	<atom:link href="http://www.silviodelgado.com.br/tag/banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.silviodelgado.com.br</link>
	<description>ASP.NET, MVC, C#, Design Patterns, jQuery, CSS, Webstandards, SEO et cetera</description>
	<lastBuildDate>Thu, 15 Dec 2011 04:37:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Banco de dados com Chuck Norris</title>
		<link>http://www.silviodelgado.com.br/banco-de-dados-com-chuck-norris/</link>
		<comments>http://www.silviodelgado.com.br/banco-de-dados-com-chuck-norris/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:23:20 +0000</pubDate>
		<dc:creator>Silvio Delgado</dc:creator>
				<category><![CDATA[Assuntos Diversos]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[Chuck Norris]]></category>

		<guid isPermaLink="false">http://www.silviodelgado.com.br/?p=117</guid>
		<description><![CDATA[Bom como todos sabem o CHUCK NORRIS é o maior dos maiores&#8230; E é claro tem a sua forma peculiar de administrar um banco de dados. Vejam: CHUCK NORRIS não faz DELETEs. Ele olha para os registros e eles correm de medo. CHUCK NORRIS não cria PKs. Os registros simplesmente não atrevem-se a duplicar. CHUCK [...]]]></description>
			<content:encoded><![CDATA[<p>Bom como todos sabem o CHUCK NORRIS é o maior dos maiores&#8230;<br />
E é claro tem a sua forma peculiar de administrar um banco de dados. Vejam:</p>
<ul>
<li>CHUCK NORRIS não faz DELETEs. Ele olha para os registros e eles correm de medo.</li>
<li>CHUCK NORRIS não cria PKs. Os registros simplesmente não atrevem-se a duplicar.</li>
<li>CHUCK NORRIS não usa LOG. Ele lembra de todos registros que alterou.</li>
<li>CHUCK NORRIS não usa LOG. Ele não vai falhar.</li>
<li>CHUCK NORRIS não cria INDEXes. Ele sabe que os registros retornarão o mais rápido que puderem.</li>
<li>CHUCK NORRIS sabe todos os erros do ORACLE de cor. Porque ele criou eles.</li>
<li>CHUCK NORRIS não faz cursos de ORACLE. A ORACLE é que faz cursos com ele.</li>
<li>CHUCK NORRIS instala o ORACLE sem ler o manual. (Quem você pensa que é para ter tentado isso?)</li>
<li>CHUCK NORRIS instala o ORACLE em um 486. Rodando KURUMIM. Em 2 minutos.</li>
<li>CHUCK NORRIS instala o MSSQL Server em um Pentium 100MHZ. Rodando Solaris. A partis dos fontes.</li>
<li>CHUCK NORRIS instala o DB2 em um 486. Rodando WINDOWS VISTA. Sem HD.</li>
<li>CHUCK NORRIS não tem Certificação. São as empresas que tentam tirar Certificação em CHUCK NORRIS. Em vão.</li>
<li>CHUCK NORRIS tem IGNORE CONTRAINTS automático. Ninguém restringe nada a CHUCK NORRIS. Ninguém.</li>
<li>CHUCK NORRIS SABE qual o problema de performance do banco. Ele só está dando uma chance do banco se arrepender. 5… 4… 3…</li>
<li>CHUCK NORRIS não cria STORED PROCEDURES. Todas suas Queries já se armazenam no banco, tentanto se esconder. Mas é inútil.</li>
<li>CHUCK NORRIS não faz Modelo de Dados. Ele encara o banco até que ele faça o modelo sozinho.</li>
<li>CHUCK NORRIS instala o ORACLE sem a interface gráfica. E sem a interface texto. (Pergunte a ele você!)</li>
<li>CHUCK NORRIS não dá DROP TABLE. Ele dá ROUNDHOUSE KICK TABLE.</li>
<li>MSSQL SERVER É muito mais rápido que ORACLE. Basta que o DBA seja CHUCK NORRIS.</li>
<li>Uma vez adaptaram o ROUNDHOUSE KICK para o ORACLE. Assim nasceu o TRUNCATE TABLE.</li>
<li>Uma vez CHUCK NORRIS deu um ROUNDHOUSE KICK em um banco poderoso. Hoje ele é conhecido por ACCESS.</li>
<li>SELECT SUM (FORÇA) FROM CHUCK_NORRIS; Internal error. Don ‘ t call the support.</li>
<li>SELECT CHUCK_NORRIS; Drop database sucessful.</li>
<li>SELECT ROUNDHOUSE_KICK FROM CHUC… Lost connection.</li>
<li>DELETE FROM CHUCK_NORRIS. Not Found. (Ele está atras de você, a ponto de dar um ROUNDHOUSE KICK!!!)</li>
<li>Se disser ao DBA CHUCK NORRIS que ” o problema está no banco “, é melhor que esteja se referindo ao Itaú.</li>
<li>TRIGGERS tem este nome porque CHUCK NORRIS sempre ameaçava atirar no banco quando ele não fazia algo automático.</li>
<li>Megabyte, Gigabyte, Terabyte, Petabyte, Exabyte, Chuckbite.</li>
<li>ORACLE tem as versões Personal, Standard, Enterprise e ChuckNorris Edition. Mas nenhum computador é rápido o suficiente para rodá-lo.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.silviodelgado.com.br/banco-de-dados-com-chuck-norris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INNER JOIN x LEFT OUTER JOIN</title>
		<link>http://www.silviodelgado.com.br/inner-join-x-left-outer-join/</link>
		<comments>http://www.silviodelgado.com.br/inner-join-x-left-outer-join/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 03:49:43 +0000</pubDate>
		<dc:creator>Silvio Delgado</dc:creator>
				<category><![CDATA[Assuntos Diversos]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[técnicas]]></category>

		<guid isPermaLink="false">http://www.silviodelgado.com.br/post.php?id=46</guid>
		<description><![CDATA[Banco de dados é uma coisa simples&#8230; quando se quer fazer coisas simples! Às vezes, mesmo para se fazer uma coisa simples, é necessário um procedimento um pouco mais rebuscado. Já para fazer uma coisa complicada&#8230; O que eu quero fazer não é complicado, mas como eu nunca trabalhei com os INNER, LEFT, RIGHT, OUTER [...]]]></description>
			<content:encoded><![CDATA[<p>Banco de dados é uma coisa simples&#8230; quando se quer fazer coisas simples!</p>
<p>Às vezes, mesmo para se fazer uma coisa simples, é necessário um procedimento um pouco mais rebuscado. Já para fazer uma coisa complicada&#8230;</p>
<p>O que eu quero fazer não é complicado, mas como eu nunca trabalhei com os INNER, LEFT, RIGHT, OUTER etc., não foi tão trivial assim.</p>
<p><span id="more-50"></span></p>
<p>Estou desenvolvendo um pequeno sistema de cobrança (sim, em PHP mesmo!) onde, na listagem de clientes, entre outras coisas, é exibida a cidade e uf a que pertencem.</p>
<p>Até aí, tudo bem! Nada demais. Fiz um JOIN simples:</p>
<p><code>SELECT cli.*, cid.nome AS nome_cidade, cid.uf<br />
FROM clientes AS cli, cidades AS cid<br />
WHERE cid.id_cidade = cli.cidade</code></p>
<p>O problema é que, da forma como foi feita, a frase só me retorna os clientes cujo campo cidade esteja preenchido com um valor que conste na tabela cidades. Valores nulos ou inexistentes não retornam os registros.</p>
<p>Uma &#8220;solução&#8221; (ou seria bacalhau?? [1]) para isso seria não permitir a deleção da cidade na sua tabela, mas isso acaba nos limitando, por diversos motivos.</p>
<p>Eu nunca fiz um JOIN que me retornasse registros desta forma (com os correspondentes nulos ou inexistentes), mas chegara a hora de ter de fazê-lo.</p>
<p>Pesquisando um pouco (foi pouco mesmo!), descobri como fazer um JOIN que me retornasse o que a query acima me retorna:</p>
<p><code>SELECT * FROM clientes AS cli<br />
INNER JOIN cidades AS cid ON cli.cidade = cid.id_cidade</code></p>
<p>Bom, até aí, tudo bem! Mas não resolveria o meu problema&#8230;</p>
<p>Lembrando um pouco do que eu já tinha lido sobre o tema, vi o &#8220;INNER&#8221; na frase e lembrei do seu &#8220;oposto&#8221;: &#8220;LEFT OUTER&#8221;, que mantém os registros. Logo cheguei à seguinte formulação:</p>
<p><code>SELECT * FROM clientes AS cli<br />
LEFT OUTER JOIN cidades AS cid ON cli.cidade = cid.id_cidade</code></p>
<p>Ei-lo como qui-lo! (Ou quase&#8230;)</p>
<p>A sentença me retornou todos os campos da tabela de clientes, inclusive aquele registro que tinha o cídogi inválido para a cidade. Agora só faltava manipular os nomes dos campos, por causa da duplicidade (nome do cliente x nome da cidade):</p>
<p><code>SELECT cli.*, cid.nome AS nome_cidade, cid.uf<br />
FROM clientes AS cli<br />
LEFT OUTER JOIN cidades AS cid ON cli.cidade = cid.id_cidade</code></p>
<p>Pronto! Estava resolvido o meu problema. E espero que o seu agora também esteja. <img src='http://www.silviodelgado.com.br/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Até a próxima!</p>
<p>[1] &#8211; O termo provém do antigo ditado que dizia &#8220;pra quem é, bacalhau serve&#8221;, que era um eufemismo para dizer que, para uma pessoa sem muita importância, uma coisa mal-feita já estava bom. Mas isso era no tempo em que bacalhau e manjubinha disputavam clientes no boteco&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.silviodelgado.com.br/inner-join-x-left-outer-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

