<?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>0fx66 &#187; SQL</title>
	<atom:link href="http://0fx66.com/blog/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://0fx66.com/blog</link>
	<description>O blog do von</description>
	<lastBuildDate>Sat, 04 Feb 2012 22:19:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>[Artigo] Programando em C com SQLite3</title>
		<link>http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/</link>
		<comments>http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/#comments</comments>
		<pubDate>Sat, 14 May 2011 18:32:39 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Linguagem C]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQlite3]]></category>

		<guid isPermaLink="false">http://0fx66.com/blog/?p=4204</guid>
		<description><![CDATA[Neste artigo apresento o banco de dados SQLite, um banco pequeno e simples que dispensa a necessidade de um complexo SGDB, por ele ser embutido na própria aplicação.<p class="read-more"><a href="http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/">Ler mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/" title="[Artigo] Programando em C com SQLite3"></a><h1>Programando em C com SQLite3</h1>
<p><strong>Autor: Herberson da Silva Miranda</strong></p>
<h2>1 – Introdução</h2>
<p>O SQLite3 fornece recursos para que os desenvolvedores possam armazenar os dados de suas aplicações em tabelas e manipular esses dados através de comandos SQL ou seja criando bancos de dados para seus softwares. A grande vantagem em utilizar SQLite para armazenar essas informações que seu uso dispensa a necessidade de um SGDB de grande porte, como MySQL ou PostgreSQL, em suas aplicações, podendo armazenar tudo em um simples arquivo.</p>
<p><span id="more-4204"></span></p>
<h2>2 – Conhecendo o SQLite3</h2>
<p>O SQLite é constituído por dois componentes a SQLite library (biblioteca SQLite) e o SQLite3, a biblioteca foi escrita em C entretanto  diversas linguagens suportam o seu uso; como TCL, C/C++, PHP, Java entre outras; o SQLite3 e um front-end (a parte do software onde o usuário efetua a interação com o software) em modo texto para que possamos efetuar  a criação de bases, tabelas, execução de comandos SQL e  gerenciamento da base de dados. Podem fazer o download da biblioteca neste link, sua instalação e sem mistérios, em sistemas Linux baseados no sistema Debian podem estuar a instalação utilizando a ferramenta apt-get, em sistemas baseados no Red Hat utilizem o yum.</p>
<h2>3 – Pré-requisitos e ferramentas utilizadas</h2>
<p>Para compreensão total deste artigo é altamente recomendado o conhecimento básico na linguagem SQL e na linguagem C, todos os exemplos de códigos contidos neste artigo seguem o C ANSI, o compilador utilizado foi o GCC (GNU C Compiler) versão 4.4.5, o sistema usado foi o Ubuntu 10.10 (AMD64), os códigos foram escritos utilizando o editor VIM versão 7.2.330. A versão do sqlite3 utilizada no artigo foi a 3.7.2</p>
<h2>4 – Começando</h2>
<p>A primeira tarefa e cria um banco de dados, criamos com o comando:</p>
<pre>$ sqlite3 nome_do_banco.db</pre>
<p>Após o comando ser executado será aberto um shell (interface de linha de comando) neste shell será onde os comandos deverão ser inseridos, para sair do shell do sqlite3 use o comando <em>&#8216;.q&#8217;</em>.Dentro do shell do sqlite3 iremos criar a nossa tabela com o comando:</p>
<pre name="code" class="sql">CREATE TABLE cadastro ('id' INTEGER PRIMARY KEY, nome VARCHAR(50), idade INTEGER);</pre>
<div id="attachment_4205" class="wp-caption aligncenter" style="width: 598px"><img class="size-full wp-image-4205  " title="cod01" src="http://imagens.0fx66.com/2011/05/cod01.png" alt="Criação da tabela no sqlite3" width="588" height="70" /><p class="wp-caption-text">Criação da tabela no sqlite3</p></div>
<p>A tabela e bastante simples e composta por 3 colunas, id, nome e idade. Agora que temos nossa primeira tabela criada podemos dar inicio a programação. Vamos efetuar o acesso a está tabela. O código abaixo demonstra claramente como efetuamos o acesso.</p>
<pre name="code" class="cpp">
#include &lt;stdio.h&gt;
#include &lt;sqlite3.h&gt; //Biblioteca requerida pelo sqlite3

int main()
{

int abrir;    //Variavel que sera usada para validar a conexao com o banco de dados.

sqlite3 *db;    //Variavel que sera usada nas funcoes posteriores.

abrir = sqlite3_open("banco1.db",&amp;db);    //Cria a conexao

//Valida a conexao
if(abrir)
{
printf("Erro na conexao!\n");
}
else
{
printf("Conectado ao banco com sucesso.\n");
}

sqlite3_close(db); //Encerra a conexao

return 0;
}</pre>
<h3>4.1 &#8211; Explicado o código00.c</h3>
<p>O código é bastante simples, ele efetua a conexão com o banco1.db, caso consiga efetua  a conexão, ele informa que está conectado ao banco, caso negativo informa que não foi possível se conectar ao banco. A conexão e efetuada com a função sqlite3_open(), ela requer dois parâmetros:</p>
<ul>
<li>Nome do banco de dados;</li>
<li>Um ponteiro 	utilizado pelas funções do sqlite3 para localizar o banco.</li>
</ul>
<p>No bloco do if-else e feita a verificação para a conexão, a função sqlite3_open() e do tipo int e retorna um valor 0 caso a conexão tenha sido efetuada e o valor 1 em caso de erro. Dentro dos blocos if-else e informado o resultado da conexão utilizando as funções printf().  A função sqlite3_close() fecha a conexão, toda conexão criada precisa ser fechada. Para compilar utilizando o GCC deve-se incluir a opção -l sqlite3 no final, da seguinte forma:</p>
<pre>$ gcc sqlite00.c -o sqlite00 -l sqlite3</pre>
<h3>4.2 – Inserindo dados</h3>
<p>Para inserirmos dados utilizamos a função sqlite3_exec(), seu protótipo é o seguinte:</p>
<div id="attachment_4206" class="wp-caption aligncenter" style="width: 521px"><img class="size-full wp-image-4206  " title="cod04" src="http://imagens.0fx66.com/2011/05/cod04.png" alt="Protótipo da função sqlite3_exec()" width="511" height="103" /><p class="wp-caption-text">Função sqlite3_exec()</p></div>
<p>Vamos fazer algumas alterações no codigo00, inserindo a função sqlite3_exec() ficando da seguinte forma:</p>
<pre name="code" class="cpp">
#include &lt;stdio.h&gt;
#include &lt;sqlite3.h&gt;

int main()
{
sqlite3 *db;
char comando[] = "insert into cadastro (nome,idade) values ('Pedro','25')";

if(sqlite3_open("banco1.db",&amp;db))  //Abre e testa a conexao
{
printf("Nao foi possivel conectar!\n");
}

else
{
printf("Conectado!\n");
sqlite3_exec(db,comando,0,0,0); //Executa a instrucao.
}

sqlite3_close(db); //Fecha a conexao

return 0;
}</pre>
<p>A função sqlite3_exec() requer 5 parâmetros, o primeiro é o banco que será acessado, segundo a instrução SQL a ser executada, o terceiro campo e utilizado para criamos statement (stmt), o quarto campo é onde os parâmetros que serão passados para a função que irá criar o stmt serão colocados., o ultimo campo será a onde a mensagem de erro será escrita, caso tenha algum erro.</p>
<h2>5 – Conclusão</h2>
<p>Neste curto artigo foi possível ter uma introdução ao uso da biblioteca Sqlite3 em aplicações C, sua g rande vantagem esta na facilidade em embuti-lo nos programas,<a title="Documentação do SQLite" href="http://www.sqlite.org/docs.html" target="_blank"> sua API é bastante rica </a>e não faz feio perto de outros SGDB como MySQL ou postgreSQL.</p>
<h2>6 – Referências</h2>
<ul>
<li>Command Line Shell For SQLite disponível em <a title="http://www.sqlite.org/sqlite.html" href="http://www.sqlite.org/sqlite.html" target="_blank">http://www.sqlite.org/sqlite.html</a>, acessado em: 25 de fevereiro de 2011.</li>
<li>[Tutorial]Usando Sqlite com linguagens C e C++ <a title=" [Tutorial]Usando Sqlite com linguagens C e C++" href="http://forum.imasters.com.br/topic/383367-tutorial-usando-sqlite-com-linguagem-c-e-c/" target="_blank">http://forum.imasters.com.br/topic/383367-tutorial-usando-sqlite-com-linguagem-c-e-c/</a>, acessado em: 28 de fevereiro de 2011.</li>
<li>SQlite 03 disponível em <a title="SQlite 03" href="http://www.bibliotecaunix.org/index.php/SQLite3 " target="_blank">http://www.bibliotecaunix.org/index.php/SQLite3</a>, acessado em: 25 de fevereiro de 2011.</li>
<li>SQlite tutorial disponível em <a title="SQlite tutorial " href=" http://freshmeat.net/articles/sqlite-tutorial" target="_blank">http://freshmeat.net/articles/sqlite-tutorial</a>, acessado em 27 de fevereiro de 2011.</li>
<li>SQlite disponível em <a title="SQlite" href=" http://en.wikipedia.org/wiki/SQLite3" target="_blank">http://en.wikipedia.org/wiki/SQLite3</a>, acessado em 27 de fevereiro de 2011.</li>
<li>[Programação]SQlite e seu acesso em C, disponível em<a title="[Programação]SQlite e seu acesso em C " href="http://onbytes.blogspot.com/2009/04/programacao-sqlite-e-seu-acesso-em-c.html" target="_blank"> http://onbytes.blogspot.com/2009/04/programacao-sqlite-e-seu-acesso-em-c.html</a>, acessado em: 05 de março de 2011.</li>
</ul>
<p>[]&#8216;s</p>
<h3  class="related_post_title">Textos Relacionados:</h3><ul class="related_post"><li><a href="http://0fx66.com/blog/programacao/programacao-utilizando-argumentos-em-c-ou-que-diabos-e-esse-argc-e-argv/" title="[Programação] Utilizando argumentos em C ou que diabos é esse argc e argv ?">[Programação] Utilizando argumentos em C ou que diabos é esse argc e argv ?</a></li><li><a href="http://0fx66.com/blog/programacao/programacao-aleatoriedade-gerador-de-senhas-em-c/" title="[Programação] Números aleatórios  em C + gerador de senhas em C">[Programação] Números aleatórios  em C + gerador de senhas em C</a></li><li><a href="http://0fx66.com/blog/programacao/funcoes-hiperbolicas-em-c/" title="[Programação] Funções hiperbólicas em C">[Programação] Funções hiperbólicas em C</a></li><li><a href="http://0fx66.com/blog/programacao/concatenando-string-em-c/" title="[Programação] Concatenando String em C">[Programação] Concatenando String em C</a></li><li><a href="http://0fx66.com/blog/programacao/criando-seus-proprios-tipos-de-variaveis/" title="[Programação] Criando seus próprios tipos de variáveis em C">[Programação] Criando seus próprios tipos de variáveis em C</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comandos de SQL</title>
		<link>http://0fx66.com/blog/programacao/comandos-de-sql/</link>
		<comments>http://0fx66.com/blog/programacao/comandos-de-sql/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 02:00:41 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Dica]]></category>
		<category><![CDATA[PGsql]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://0fx66.com/blog/?p=1348</guid>
		<description><![CDATA[Uma lista com 85 comandos de sql<p class="read-more"><a href="http://0fx66.com/blog/programacao/comandos-de-sql/">Ler mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://0fx66.com/blog/programacao/comandos-de-sql/" title="Comandos de SQL"></a><p>Segue abaixo uma lista de comandos de sql</p>
<p><span id="more-1348"></span></p>
<p><code>ABORT -- abort the current transaction<br />
ALTER DATABASE -- change a database<br />
ALTER GROUP -- add users to a group or remove users from a group<br />
ALTER TABLE -- change the definition of a table<br />
ALTER TRIGGER -- change the definition of a trigger<br />
ALTER USER -- change a database user account<br />
ANALYZE -- collect statistics about a database<br />
BEGIN -- start a transaction block<br />
CHECKPOINT -- force a transaction log checkpoint<br />
CLOSE -- close a cursor<br />
CLUSTER -- cluster a table according to an index<br />
COMMENT -- define or change the comment of an object<br />
COMMIT -- commit the current transaction<br />
COPY -- copy data between files and tables<br />
CREATE AGGREGATE -- define a new aggregate function<br />
CREATE CAST -- define a user-defined cast<br />
CREATE CONSTRAINT TRIGGER -- define a new constraint trigger<br />
CREATE CONVERSION -- define a user-defined conversion<br />
CREATE DATABASE -- create a new database<br />
CREATE DOMAIN -- define a new domain<br />
CREATE FUNCTION -- define a new function<br />
CREATE GROUP -- define a new user group<br />
CREATE INDEX -- define a new index<br />
CREATE LANGUAGE -- define a new procedural language<br />
CREATE OPERATOR -- define a new operator<br />
CREATE OPERATOR CLASS -- define a new operator class for indexes<br />
CREATE RULE -- define a new rewrite rule<br />
CREATE SCHEMA -- define a new schema<br />
CREATE SEQUENCE -- define a new sequence generator<br />
CREATE TABLE -- define a new table<br />
CREATE TABLE AS -- create a new table from the results of a query<br />
CREATE TRIGGER -- define a new trigger<br />
CREATE TYPE -- define a new data type<br />
CREATE USER -- define a new database user account<br />
CREATE VIEW -- define a new view<br />
DEALLOCATE -- remove a prepared query<br />
DECLARE -- define a cursor<br />
DELETE -- delete rows of a table<br />
DROP AGGREGATE -- remove a user-defined aggregate function<br />
DROP CAST -- remove a user-defined cast<br />
DROP CONVERSION -- remove a user-defined conversion<br />
DROP DATABASE -- remove a database<br />
DROP DOMAIN -- remove a user-defined domain<br />
DROP FUNCTION -- remove a user-defined function<br />
DROP GROUP -- remove a user group<br />
DROP INDEX -- remove an index<br />
DROP LANGUAGE -- remove a user-defined procedural language<br />
DROP OPERATOR -- remove a user-defined operator<br />
DROP OPERATOR CLASS -- remove a user-defined operator class<br />
DROP RULE -- remove a rewrite rule<br />
DROP SCHEMA -- remove a schema<br />
DROP SEQUENCE -- remove a sequence<br />
DROP TABLE -- remove a table<br />
DROP TRIGGER -- remove a trigger<br />
DROP TYPE -- remove a user-defined data type<br />
DROP USER -- remove a database user account<br />
DROP VIEW -- remove a view<br />
END -- commit the current transaction<br />
EXECUTE -- execute a prepared query<br />
EXPLAIN -- show the execution plan of a statement<br />
FETCH -- retrieve rows from a table using a cursor<br />
GRANT -- define access privileges<br />
INSERT -- create new rows in a table<br />
LISTEN -- listen for a notification<br />
LOAD -- load or reload a shared library file<br />
LOCK -- explicitly lock a table<br />
MOVE -- position a cursor on a specified row of a table<br />
NOTIFY -- generate a notification<br />
PREPARE -- create a prepared query<br />
REINDEX -- rebuild corrupted indexes<br />
RESET -- restore the value of a run-time parameter to a default value<br />
REVOKE -- remove access privileges<br />
ROLLBACK -- abort the current transaction<br />
SELECT -- retrieve rows from a table or view<br />
SELECT INTO -- create a new table from the results of a query<br />
SET -- change a run-time parameter<br />
SET CONSTRAINTS -- set the constraint mode of the current transaction<br />
SET SESSION AUTHORIZATION -- set the session user identifier and the current user identifier of the current session<br />
SET TRANSACTION -- set the characteristics of the current transaction<br />
SHOW -- show the value of a run-time parameter<br />
START TRANSACTION -- start a transaction block<br />
TRUNCATE -- empty a table<br />
UNLISTEN -- stop listening for a notification<br />
UPDATE -- update rows of a table<br />
VACUUM -- garbage-collect and optionally analyze a database</code></p>
<h3  class="related_post_title">Textos Relacionados:</h3><ul class="related_post"><li><a href="http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/" title="10 Dicas para começar a usar o PostgreSQL">10 Dicas para começar a usar o PostgreSQL</a></li><li><a href="http://0fx66.com/blog/programacao/programando-em-c-com-sqlite3/" title="[Artigo] Programando em C com SQLite3">[Artigo] Programando em C com SQLite3</a></li><li><a href="http://0fx66.com/blog/linux/conhecendo-fslint/" title="[Dica] Conhecendo FSlint">[Dica] Conhecendo FSlint</a></li><li><a href="http://0fx66.com/blog/programacao/visualizando-codigo-ascii/" title="Visualizando código ASCII ">Visualizando código ASCII </a></li><li><a href="http://0fx66.com/blog/linux/gerando-senhas-aleatorias/" title="Gerando senhas aleatórias">Gerando senhas aleatórias</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://0fx66.com/blog/programacao/comandos-de-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuidados ao instalar/usar o PgSQL.</title>
		<link>http://0fx66.com/blog/linux/cuidados-ao-instalarusar-o-pgsql/</link>
		<comments>http://0fx66.com/blog/linux/cuidados-ao-instalarusar-o-pgsql/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 18:01:51 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://0fx66.com/blog/?p=356</guid>
		<description><![CDATA[cuidados com o pgsql<p class="read-more"><a href="http://0fx66.com/blog/linux/cuidados-ao-instalarusar-o-pgsql/">Ler mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://0fx66.com/blog/linux/cuidados-ao-instalarusar-o-pgsql/" title="Cuidados ao instalar/usar o PgSQL."></a><p>Resolvi escrever este artigo, pois já  encontrei muitos e muitos servidores neste estado, o que não chega ser um problema do <a title="Link da tag postgresql." href="http://0fx66.com/blog/tag/postgresql/" target="_blank">postgresql</a>, mas sim uma falta de atenção do seu administrador.</p>
<p><span id="more-356"></span></p>
<p><strong>Descrição do Problema:</strong></p>
<p>Qualquer usuário normal (que tenha shell) no servidor consegue acesso  owner em todas as bases do pgsql sem digitar nenhuma senha. Isso acontece por que existem muitos administradores de DB PgSQL que acabam deixando as suas permissões padrões.</p>
<p><strong>Veja o exemplo:</strong><br />
Primeiro descubra qual o usuário Owner das bases (normalmente pgsql ou postgres).</p>
<p>depois digite:</p>
<p><code><br />
(/home/gamk)&gt; psql -u -l<br />
Username: pgsql<br />
Password:</code><br />
<code><br />
datname  |datdba|encoding|datpath<br />
---------+------+--------+------<br />
template1      |    70       |       0           |template1<br />
gamk             |     0        |       0           |gamk<br />
linuxsec         |     0        |       0           |linuxsec<br />
teste             |     0        |       0           |teste<br />
(4 rows)<br />
</code><br />
Quando pedir o nome do usuário digite o Owner do DB (normalmente pgsql ou postgres). Logo após será pedida a senha, pressione apenas ENTER (sem digitar nada) e pronto, você tem a lista de todas as Bases que o Banco possui. Para entrar em uma delas como owner basta repetir o processo, (ex: base linuxsec) digite &#8220;psql -u linuxsec&#8221; e repita o processo de senha. Pronto você já está como Owner na base e pode fazer o que quiser, inclusive   ALTERAR, INCLUIR, EXCLUIR dados, até mesmo destruir as tabelas&#8230;</p>
<p>Ps: Isso também funciona com os comandos (createdb, destroydb, createuser&#8230;) Pois é, realmente muito grave!!!</p>
<p>Vamos à causa e à solução: Editando o arquivo pg_hba.conf (normalmente em /usr/local/pgsql/data), você tem as seguintes linhas (descomentadas):</p>
<p><code><br />
local         all                                                           trust<br />
host         all         127.0.0.1     255.255.255.255   trust<br />
</code></p>
<p>Esta linha libera todas as bases com permissão trust (em localhost), a permissão trust dá acesso as bases sem requisição de senha (mesmo que o user tenha uma senha). A solução é simples basta alterar a linha por:</p>
<p><code><br />
local         all                                                          password<br />
host         all         127.0.0.1     255.255.255.255   password<br />
</code></p>
<p>E, de preferência, definir senhas para os usuários, (você pode usar o ALTER USER, e o CREATE USER). Existem outros tipos de &#8220;permissões&#8221; como (ident, reject, crypt, krb4, krb5), leia o arquivo pg_hba.conf que ele tem uma boa &#8220;documentação&#8221; sobre o assunto. Uma coisa tão simples, que nos pode poupar algumas noites sem dormir. Espero ter sido útil.</p>
<p>Boa Sorte :-D</p>
<p><strong>Autor: Diego Linke &#8211; GAMK</strong> &lt;<a href="mailto:gamk@gamk.com.br">gamk@gamk.com.br</a>&gt;</p>
<h3  class="related_post_title">Textos Relacionados:</h3><ul class="related_post"><li><a href="http://0fx66.com/blog/linux/linux-fixando-um-processo-em-um-nucleo-do-processador/" title="[Linux] Fixando um processo em um núcleo do processador">[Linux] Fixando um processo em um núcleo do processador</a></li><li><a href="http://0fx66.com/blog/linux/reflexao-bloatware-o-problema-do-amarok-firefox-smartphones-e-tablets/" title="[Reflexão] O problema do Amarok, Firefox, Smartphones e Tablets">[Reflexão] O problema do Amarok, Firefox, Smartphones e Tablets</a></li><li><a href="http://0fx66.com/blog/linux/sed-introducao-ao-sed-parte-2/" title="[SED] Introdução ao SED &#8211;  parte 2">[SED] Introdução ao SED &#8211;  parte 2</a></li><li><a href="http://0fx66.com/blog/linux/sed-introducao-ao-sed/" title="[SED] Introdução ao sed">[SED] Introdução ao sed</a></li><li><a href="http://0fx66.com/blog/linux/revista-espirito-livre-numero-31/" title="Revista Espírito Livre Número 31">Revista Espírito Livre Número 31</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://0fx66.com/blog/linux/cuidados-ao-instalarusar-o-pgsql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Dicas para começar a usar o PostgreSQL</title>
		<link>http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/</link>
		<comments>http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 16:00:12 +0000</pubDate>
		<dc:creator>VonNaturAustreVe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[PGsql]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://0fx66.com/blog/?p=345</guid>
		<description><![CDATA[<a href="http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/" title="10 Dicas para começar a usar o PostgreSQL"></a><a href="http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/" title="10 Dicas para começar a usar o PostgreSQL"></a>Aprenda inglês! Mais importante que fazer faculdade ou um curso de informática é aprender inglês. Se você pretende fazer algum investimento a curso prazo e não sabe ler bem em inglês, este é um ponto de partida obrigatório. Os melhores &#8230;<p class="read-more"><a href="http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/">Ler mais &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/" title="10 Dicas para começar a usar o PostgreSQL"></a><div class="postbody">
<p><span style="font-weight: bold;"> Aprenda inglês!</span></p>
<p>Mais importante que fazer faculdade ou um curso de informática é aprender inglês. Se você pretende fazer algum investimento a curso prazo e não sabe ler bem em inglês, este é um ponto de partida obrigatório. Os melhores profissionais de informática são aqueles que tem a capacidade de aprender sozinhos. E quando você começar a estudar por conta própria, vai descobri duas coisas:</p>
<ul>
<li>A Internet é o meio mais barato, rápido e rico para achar material para se atualizar e para descobrir coisas novas.</li>
<li>Os melhores artigos, sites de notícias, blogs, livros, revistas, listas de discussão, canais de IRC, etc estão todos em inglês. Uma porcentagem muito pequena deste material é traduzida para o português e quando isto acontece costuma estar sempre um pouco desatualizado. Isto não significa que não existem excelentes materiais em português. Significa que a maioria dos profissionais de TI no mundo todo se comunicam através do idioma inglês.</li>
</ul>
<p><span style="font-weight: bold;"> O mais importante de tudo é achar um desafio real e tentar encontrar uma solução real.</span></p>
<p>Quando eu comecei a aprender, meu primeiro banco de dados era sobre a minha coleção de Discos e vinil. Depois montei um banco de dados para uma loja de discos e por aí fui. Encontrar soluções para um problema real faz você encontrar problemas reais e desafia você a pesquisar soluções.</p>
<p><span style="font-weight: bold;">LEIA a documentação do banco de dados que você vai utilizar.</span></p>
<p>Faça alguns exercícios para testar, mesmo se forem coisas aparentemente simples. No começo, a interface e a sintaxe de cada SGDB sempre confunde os novatos. No site do PostgreSQL existe uma excelente documentação, melhor que a maioria dos livros sobre SGDBs proprietários que você pode encontrar em livrarias por aí. Leia pelo menos as partes I, II e alguns capítulos da parte III.</p>
<p><span style="font-weight: bold;">Evite usar interfaces com bancos de dados que facilitem muito o trabalho por você.</span></p>
<p>Se você realmente quer aprender, use primeiro interfaces no modo texto. Existem excelentes razões para isto:</p>
<ul>
<li>No modo texto você sempre sabe o que está acontecendo.</li>
<li>No modo texto você é obrigado a aprender a sintaxe correta dos comandos</li>
<li>Pessoas que aprendem a trabalhar no modo texto aprendem rapidamente a trabalhar no modo gráfico. O contrário nem sempre é verdade.</li>
<li>Ao executar rotinas pesadas, o modo texto é sempre mais confiável e apresenta melhor desempenho.</li>
<li>Interfaces no modo texto dificilmente apresentam bugs e dificilmente travam. Algumas vezes uma operação complexa apresenta erro devido a uma falha na interface gráfica e não sua.</li>
<li>Na interface em modo texto todas as operações avançadas do banco de dados estão disponíveis. No modo gráfico isto nem sempre ocorre.</li>
<li>Para usuários mais experientes o modo texto costuma ser mais produtivo.</li>
<li>Se um dia você precisar operar um servidor em produção em ambiente crítico, ele provavelmente (se for um servidor bem configurado) não terá uma interface gráfica instalada. Se um dia você precisar operar o servidor localmente, você precisará usar a interface em modo texto. Isto ocorre geralmente em momentos críticos onde o tempo que você demorar para resolver o problema pode custar o emprego de toda uma equipe.</li>
</ul>
<p><span style="font-weight: bold;">Participe da comunidade de Software Livre.</span></p>
<p>A comunidade é um excelente local para conhecer muita gente interessante, receber ajuda e ajudar outras pessoas. Você conhecerá pessoas muito que lhe ajudarão muito. Em breve você será capaz de ajudar um pouco outras pessoas também. Com uma pequena quota de ajuda, você será recompensado com incontáveis contribuições de todo o planeta. Você pode participar de listas de discussão por e-mail, canais de IRC, fóruns web e eventos presenciais. As listas de discussão costumam ser um ponto de partida obrigatório. Existe no entanto algumas dicas essenciais para que entra em uma, que são sempre citadas, mas muitas vezes ignoradas:</p>
<ul>
<li>Leia o manual primeiro!</li>
<li>Escreva corretamente utilizando boa gramática. Não use gírias e evite abreviações.</li>
<li>Procure no histórico da lista para ver se a sua dúvida já não foi respondida antes. Os novatos costumam sempre ter o mesmo tipo de dúvida que acabam sendo respondidas várias vezes. Responder centenas de vezes a mesma pergunta é desestimulante mesmo para os mais altruístas.</li>
<li>Nunca utilize como assunto de um e-mail coisas como “preciso de ajuda” ou “não funciona”. Muitas listas têm um tráfego diário de dezenas de e-mails por dia. Logo se torna impossível de ler todas as mensagens recebidas. As pessoas selecionam o que vão ler pelo assunto da mensagem. Procure colocar um assunto curto e que dê idéia sobre qual o tipo de problema que você tem.</li>
<li>NUNCA mande spam ou mensagens cujo conteúdo não seja diretamente relacionado com a lista em questão. Você poderá ser banido da lista, ou no mínimo será mau visto pelos demais participantes.</li>
<li>Não entre em discussões acaloradas (flame wars) que não levam a lugar nenhum. Estas discussões dificilmente contribuem para o todo. Se tiver uma crítica que julgar indispensável, faça-a de forma polida, respeitosa e de preferência não envie para a lista e sim direto para o destinatário.</li>
<li>O Google e outros sites rastreiam boa parte do conteúdo das listas de discussão que são públicas. Isto significa que tudo o que você escrever ficará publicado para o mundo inteiro por muitos anos. Pense nisso antes de escrever. Muitas oportunidades são perdidas por assumirmos posições radicais em um determinado momento da vida, ou por não demonstrar maturidade profissional. A primeira coisa que qualquer pessoa faz antes de contratar alguém na área de TI é colocar o nome da pessoa no Google e ver o que acontece.</li>
</ul>
<p><span style="font-weight: bold;">Procure saber o que você sabe e saber o que você não sabe.</span></p>
<p>Isto significa, conhecer os seus limites, ser humilde e ter bom senso. Saiba quais são seus limites pessoais. Procure se informar em várias fontes de informação antes de emitir uma opinião, nunca de respostas fáceis ou aceite desafios sem saber exatamente o risco que você está assumindo. No começo é comum se empolgar no momento em que você começa a ter familiaridade com um SGDB e se sentir mais a vontade. No entanto, um ambiente de teste e um ambiente de produção costumam ter diferenças que às vezes dependem de anos de experiência para se aprender como tuning, segurança, fail over, replicação, etc. Isto não significa que você não deve se lançar a novos desafios, significa que é sempre bom poder contar com uma boa retaguarda antes de explorar o desconhecido. Mesmo que isto implique a diminuir algumas vantagens circunstanciais.</p>
<p><span style="font-weight: bold;">Valorize o conhecimento e as pessoas e não o dinheiro.</span></p>
<p>Ninguém que está começando ganha dinheiro imediatamente. O mercado de trabalho está repleto de profissionais de informática com baixa qualificação. No início de carreira prefira oportunidades de emprego que lhe dêem possibilidade de aprender mais à um bom salário.</p>
<p><span style="font-weight: bold;">Procure entender o que você faz ao invés de aceitar receitas prontas.</span></p>
<p>Um how-to ou um tutorial, podem ser um bom ponto de partida para se começar a ter contato com uma nova tecnologia. Mas se seu trabalho realmente depender dela, você terá que se aprofundar nela e entender como ela realmente funciona. Tutoriais curtos que ensinam as coisas passo-a-passo só funcionam para ambientes ideais em circunstâncias específicas. Quando as coisas dão errado, este tipo de documentação pouco ajuda.<br />
Uma tradição entre os profissionais de TI, que é importante ter em mente, é que os DBAs costumam ser as pessoas mais conservadoras da equipe.</p>
<p>Eles dificilmente confiam em coisas novas. São sempre os últimos a quererem migrar qualquer coisa ou dar ouvidos aos modismos de mercado. Isto ocorre por um motivo muito simples, o maior patrimônio de TI costuma ficar sob sua responsabilidade: os dados! Qualquer possibilidade de um problema degenerar os dados de forma lenta e imperceptível leva toda uma empresa a uma situação catastrófica e irreversível. Existem empresas que chegam a fechar as portas por causa destas coisas. Funcionários e máquinas são substituíveis em TI. Os dados históricos acumulados por anos em uma empresa não. Outra coisa que reforça posições conservadoras é que apesar de existirem inúmeros softwares sendo lançados a cada dia, os SGBDs costumam ter um ciclo de desenvolvimento muito longo e a maior parte da teoria de bancos de dados relacional ainda é a mesma enunciada na década de 70.</p>
<p><span style="font-weight: bold;">Conheça a diferença entre os diferentes SGDBs existentes no mercado.</span></p>
<p>O PostgreSQL é uma excelente solução, mas em alguns casos específicos, outros bancos de dados podem apresentar algumas vantagens. Entre os SGDBs livres, se destacam, além do PostgreSQL, o MySQL, o Firebird, o SQLite. Entre os proprietários, os SGDBs mais expressivos são o Oracle, o IBM DB/2 e o MS SQL Server. Há também uma nova e polêmica geração de bancos de dados orientados a objeto que pretendem substituir os bancos de dados relacionais em situações específicas. Em todo caso, independente do SGDB com o qual você pretende iniciar seus estudos ou se especializar, é sempre importante manter a mente aberta e saber que cada solução possui vantagens e desvantagens. O estado de arte é saber quando vale pena utilizar outro SGDB.</p>
<p><span style="font-weight: bold;">Alguns links interessantes para quem quer começar a Mexer com PostgreSQL:<br />
</span></p>
<p>0 -<a class="postlink" href="http://en.wikipedia.org/wiki/Data_base_management_system%20Artigo">http://en.wikipedia.org/wiki/Data_base_management_system Artigo</a> no Wikipedia sobre SGDBs.</p>
<p>1 &#8211; <a class="postlink" href="http://www.postgresql.org/">http://www.postgresql.org</a> Site oficial do PostgreSQL</p>
<p>2 &#8211; <a class="postlink" href="http://www.postgresql.org.br/">http://www.postgresql.org.br</a> Site oficial do PostgreSQL no Brasil</p>
<p>3 &#8211; <a class="postlink" href="http://pgfoundry.org/">http://pgfoundry.org</a> Site com projetos relacionados ao PostgreSQL com licenças livres</p>
<p>4 &#8211; <a class="postlink" href="http://planetpostgresql.org/">http://planetpostgresql.org</a> Blogs sobre PostgreSQL em inglês</p>
<p>5 &#8211; <a class="postlink" href="http://planeta.postgresql.org.br/">http://planeta.postgresql.org.br</a> Blogs brasileiros sobre PostgreSQL</p>
<p>6 &#8211; <a class="postlink" href="https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral">https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral</a>Lista de discussão do PostgreSQL no Brasil</p>
<p>7- <a class="postlink" href="http://www.postgresql.org/community/lists">http://www.postgresql.org/community/lists</a> Listas de discussão do PostgreSQL em inglês</p>
<p>8 &#8211; <a class="postlink" href="http://www.postgresql.org/community/weeklynews">http://www.postgresql.org/community/weeklynews</a> Notícias semanais sobre PostgreSQL em inglês</p>
<p>9 &#8211; <!-- m --><a class="postlink" href="irc://irc.freenode.net/#postgresql-br">irc://irc.freenode.net/#postgresql-br</a><!-- m --> Canal brasileiro no IRC sobre PostgreSQL</p>
<p>10 &#8211; <!-- m --><a class="postlink" href="irc://irc.freenode.net/#postgresql">irc://irc.freenode.net/#postgresql</a><!-- m --> Canal oficial no IRC sobre PostgreSQL em inglês</p>
<p>11 &#8211; <a class="postlink" href="http://www.postgresql.org/docs">http://www.postgresql.org/docs</a> Documentações oficiais do PostgreSQL em inglês</p>
<p>12 &#8211; <a class="postlink" href="http://pgdocptbr.sourceforge.net/pg80/index.htm">http://pgdocptbr.sourceforge.net/pg80/index.htm</a> Tradução parcial da documentação da versão 8.0 do PostgreSQL</p>
<p>13 &#8211; <a class="postlink" href="http://www.postgresql.org/docs/techdocs">http://www.postgresql.org/docs/techdocs</a> &#8211; <!-- m --><a class="postlink" href="http://www.varlena.com/GeneralBits/pt.php">http://www.varlena.com/GeneralBits/pt.php</a><!-- m --> Artigos sobre PostgreSQL</p>
<p>14 &#8211; <a class="postlink" href="http://www.midstorm.org/%7Etelles/?p=59">http://www.midstorm.org/~telles/?p=59</a> &#8211; <!-- m --><a class="postlink" href="http://www.midstorm.org/%7Etelles/?p=60">http://www.midstorm.org/~telles/?p=60</a><!-- m --> &#8211; <!-- m --><a class="postlink" href="http://www.midstorm.org/%7Etelles/?p=63">http://www.midstorm.org/~telles/?p=63</a><!-- m --> Artigo meu em 3 partes com links</p>
<p>Texto originalmente publicado em<a class="postlink" href="http://www.midstorm.org/%7Etelles/2006/09/10/10-dicas-para-comecar-a-usar-o-postgresql">http://www.midstorm.org/~telles/2006/09/10/10-dicas-para-comecar-a-usar-o-postgresql</a> Copyright (c) 2006 por Fábio Telles Rodriguez (<!-- e --><a href="mailto:fabio.telles@gmail.com">fabio.telles@gmail.com</a><!-- e --> &#8211; <!-- m --><a class="postlink" href="http://www.midstorm.org/%7Etelles">http://www.midstorm.org/~telles</a><!-- m -->) Esse texto é licenciado sob a licença Creative Commons Atribuição-Compartilhamento pela mesma Licença 2.5 Brasil License</p>
<p><a class="postlink" href="http://wiki.postgresql.org/wiki/10_Dicas_para_come%C3%A7ar_a_usar_o_PostgreSQL">Fonte</a></p>
</div>
<h3  class="related_post_title">Textos Relacionados:</h3><ul class="related_post"><li><a href="http://0fx66.com/blog/programacao/comandos-de-sql/" title="Comandos de SQL">Comandos de SQL</a></li><li><a href="http://0fx66.com/blog/linux/linux-fixando-um-processo-em-um-nucleo-do-processador/" title="[Linux] Fixando um processo em um núcleo do processador">[Linux] Fixando um processo em um núcleo do processador</a></li><li><a href="http://0fx66.com/blog/linux/shellscript-converter-strings-maiusculas-para-minusculas-e-vice-versa/" title="[Shellscript] Converter strings maiúsculas para minusculas e vice-versa">[Shellscript] Converter strings maiúsculas para minusculas e vice-versa</a></li><li><a href="http://0fx66.com/blog/linux/instalando-emesene-no-ubuntu/" title="Instalando Emesene no Ubuntu">Instalando Emesene no Ubuntu</a></li><li><a href="http://0fx66.com/blog/linux/mplayer-vs-mplayer2/" title="Mplayer vs Mplayer2">Mplayer vs Mplayer2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://0fx66.com/blog/linux/10-dicas-para-comecar-a-usar-o-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

