Dica: Migrando MySQL para PostgreSQL
Migrando MySQL para PostgreSQL
Você pode já ter lido vários artigos sobre esse assunto na web, mas provavelmente conseguiu apenas partes da informação necessária. É hora de colocar tudo junto e na prática.
Você tem um projeto/sistema rodando no MySQL e de repente você descobre que você precisa migrar para PostgreSQL. E você se depara com um SQL diferente para cada plataforma, o MySQL trabalha com SQL e o PostgreSQL trabalha com PL/SQL, mas você não tem tempo para reescrever o código do zero e, logicamente, se você tiver tempo de reestruturar o seu projeto para PostgreSQL, o seu Data Base vai ficar mais organizado e, como um bom Data Base deve ser com relacionamento entre tabelas, trigger, functions e etc.
Na verdade, pode haver boas razões para migrar um Data Base de MySQL para PostgreSQL:
- Você podera vender o seu produto com total tranquilidade (PostgreSQL é licenciada BSD, o diferente de  MySQL)
- Você pode encontrar artigos “Migrando MySQL para PostgreSQL” na web, mas você não vai encontrar nenhuma “Migrando PostgreSQL para MySQL”
- PostgreSQL não pode ser apenas mais um péssimo banco de dados se o Skype, Cisco, Juniper, IMDb, Pandora ou NOVA TV decidiram confiar nele, além de a Sun Microsystems tê-lo tornado como base de dados de escolha (o que é extremamente hilario, já que em janeiro de 2008 ela comprou o MySQL)
No PostgreSQL você ainda pode sentir um pouco como se senti uma pessoa com segurança particular. Existem alguns grandes projetos como o Asterisk, Horde ou DBMail que já reconheceram suas qualidades e que, embora o MySQL tenha sido sua primeira escolha de Banco de Dados, eles estão demonstrando grande esforço para fazer tudo funcionar corretamente.
Convertendo Base de Dados MySQL para PostgreSQL
Primeiro vamos fazer Backup de nossa Data Base MySQL com o software mysqldump do próprio MySQL:
"mysqldump --compatible=postgresql bancodedados > bkp-bancodedados.sql"
Convertendo caracteres para o SQL ficar funcional no PostgreSQL:
"sed "s/\\\'/\'\'/g" bkp-bancodedados.sql"
* Este processo vai demorar muito tempo porque o software "sed" varrerá
 todo o arquivo para fazer a conversão
Colocando para funcionar: importando para o PostgreSQL
"psql -h server -d databasename -U username -W < bkp-bancodedados.sql"
Com isso você migrou sua estrutura de Dados de MySQL para PostgreSQL.
Fonte: iMasters
Bancos de dados Gratuitos: Oracle x IBM x Microsoft
As empresas estão cobiçando uma fatia desse mercado gratuito que vem crescendo constantemente para trazer novos adeptos e clientes aos seus produtos, que têm como concorrentes ótimos produtos como MySQL, Firebird e PostGree.
Um dos principais obstáculos encontrados pelas empresas, além de oferecer licenças gratuitas, é como ganhar confiança entre os desenvolvedores Open-Source e produtores independentes de software.
Olhando esse grande problema, a principal tática para conseguir trazer adeptos e futuramente novos clientes, foi utilizar recursos que suas versões pagas utilizam, de forma restrita e limitada, e ao mesmo tempo, usar o peso que o próprio nome da empresa tem no mercado, pois qual produtora de software não gostaria de oferecer seu produto utilizando um banco de dados da Microsoft, Oracle ou IBM?
A primeira empresa a apostar suas fichas foi a Microsoft, trazendo o SQL Server Express, olhando todo esse movimento de marketing em busca de novos clientes do adversário, a Oracle não ficou para trás e lançou o Oracle Express Edition para acompanhar a Microsoft.
A IBM também não queria ficar fora desse jogo, e logo colocou no mercado o IBM Express C, estreitando a fatia de banco de dados Open-Source e aumentando a competição entre as empresas, que já disputam o mercado de licenças pagas.
Com toda essa briga, nos restou saber qual devemos utilizar, já que existem muitas boas opções no mercado, e para conseguir boas soluções em projetos, uma relação dos produtos que possuem versões gratuitas e pagas será comparada a seguir:
Microsoft SQL Server Express
A Microsoft criou SQL Server Express sobre o modelo do seu principal banco de dados, o SQL Server 2005, permitindo uma facilidade de migração para sua versão paga, o SQL Server Express é uma ótima solução para desenvolvedores da plataforma Microsoft, como ASP, Visual Basic e DotNet.
Abaixo seguem alguns recursos que serão encontrados na versão gratuita:
LIMITAÇÃO
Capacidade de Armazenamento: 4GB
Processadores: 1 Processador
Memória: 1 GB
Sistema Operacional: Windows
RECURSOS SUPORTADOS
- Stored Procedures
- SQL Server Configuration Manager
- Views
- Replication *
- Triggers
- Advanced Query Optimizer
- Cursors
- SMO/RMO
- sqlcmd and osql utilities
- Integration with Visual Studio 2005
- Snapshot Isolation Levels
- Service Broker **
- Native XML support, including XQuery and XML Schemas
- SQL CLR
- Transact-SQL language support
- Multiple Active Result Sets (MARS)
- Dedicated Administrator Connection **
- Auto Tuning
- Common Language Runtime and .NET Integration
- Integration with Microsoft Baseline Security Analyzer
* Esse recurso é somente disponÃvel aos usuários que forem assinantes da Microsoft.
** Para utilizar esses recursos há uma limitação, favor consultar a documentação do produto.
Agora, para quem já conhece os recursos do SQL Server, abaixo segue uma relação dos serviços que não são suportados pela versão gratuita:
RECURSOS NÃO SUPORTADOS
- Database mirroring
- SQL Mail
- Online restore
- Fail-over clustering
- Database snapshot
- Distributed partitioned views
- Parallel index operations
- VIA protocol support
- Mirrored media sets
- Log shipping
- Partitioning
- Parallel
- DBCC
- Address Windowing Extensions (AWE)
- Parallel Create Index
- Hot-add memory
- Enhanced Read Ahead and Scan
- Native http SOAP access
- Indexed views (materialized views)
- SQL Mail and Database Mail
- Partitioned views
- Online Index Operations
- SQL Server Agent and SQL Server Agent Service
O problema que a Microsoft pode encontrar para conseguir ganhar espaço nesse mercado é a limitação do seu produto somente em seu próprio sistema operacional Windows, proporcionando custos nos projetos independentes, mas outros pontos positivos podem ser destacados, como:
- Documentação bem elaborada e com exemplos práticos elaborados pelo MSDN.
- Interface gráfica bem fácil de utilizar.
- Administração pelo SQL Server Management Studio Express.
- Integração com a maioria das linguagens de programação do mercado.
Oracle Express Edition
O gigante dos bancos de dados também caprichou na sua versão gratuita, produzindo o Oracle Express Edition (Oracle XE), uma versão que trouxe os recursos mais atualizados encontrados na versão paga do Oracle Database 10G Release 2, a Oracle se destaca por colocar em sua versão gratuita, diversas opções de administração, desempenho, backup e recover, além do Application Express (Apex) um aplicativo de administração de banco de dados desenvolvido para plataforma web, uma customização do seu produto HTMLDB que facilita o gerenciamento do banco de dados e desenvolvimento de pequenos aplicativos para usuários finais, como relatórios e formulários.
Mas, como tudo não é uma maravilha, a Oracle colocou algumas restrições de recursos e limitou seu banco de dados, deixando assim, as produtoras se adaptarem às necessidades do crescimento.
A seguir, estão as limitações e restrições dos recursos que não iremos encontrar no Oracle Express Edition:
LIMITAÇÃO
Capacidade de Armazenamento: 4GB
Processadores: 1 Processador
Memória: 1 GB
Sistema Operacional: Linux ou Windows
Observando as limitações acima, percebe-se que caso sua empresa tenha máquinas poderosas, poderá apenas utilizar os limites impostos, marcando como um ponto negativo, porém outro lado irá lhe recompensar com alguns recursos que somente as versões pagas da Oracle oferecem e outros que somente a versão 10G possui, veja abaixo:
RECURSOS SUPORTADOS
- PL/SQL stored procedures e triggers
- Oracle Developer Tools para Visual Studio.Net
- PL/SQL Server pages
- Active Directory
- PL/SQL native compilation
- DML Triggers
- Drivers JDBC
- Index-organized tables
- Suporte .Net, OLE DB e ODBC
- Temporary table
- Suporte XML
- Objects and Extensibility
- Suporte a LOB (Large Objects)
- Oracle Text
- Function-based index
- SQL Model
- SQL Analytic functions
- Star query transformation
- Globalization support
- Multiple block size support
- Flashback Query
- Online Backup
- Encryption toolkit
- Automatic Memory Management
- External tables
- External procedures
- Distributed transactions
Alguns recursos mais avançados que os profissionais encontram na versão 10G do Oracle não foram disponÃveis, como:
RECURSOS NÃO SUPORTADOS
- Automatic Storage Management
- Virtual Private Database
- Database Resource Manager
- Fine grained auditing
- Flashback Transaction Query
- Fast-Start Selectable Recovery Time
- Block-level media recovery
- Parallel backup and recovery
- Point-in-time tablespace recovery
- Trial recovery
- Flashback Table
- Flashback Database
- Online schema reorganization/redefinition
- Parallel export/import
- Parallel statistics gathering
- Parallel query/DML
- Materialized View Query Rewrite
- Summary Management
- Bitmapped index, bitmapped join index
- Data Compression
- SQLJ
- Database Web services
- Java Server Pages
- Java support in the database
Muitos outros pontos positivos podem ser encontrados quando uma empresa pensar em utilizar o Oracle Express Edition em seus projetos, no quais podemos citar alguns, como:
- Documentação On-line no site da Oracle, desde iniciante ao avançado.
- Integração com diversos aplicativos da Oracle para gerenciamento do banco de dados, como: Oracle Enterprise Manager, Apex, SQL Developer e HTML DB.
- Possibilidade de ajustar o banco de dados e sistema operacional para ganhos de desempenho.
- Drivers compatÃveis para a grande maioria das linguagens de programação.
- Possibilidade de Cold e Hot backup utilizando o RMAN.
IBM DB2 Express C
A IBM desenvolveu a versão gratuita utilizando os recursos de sua versão paga o DB2 UDB Express com uma configuração de pacote menor, uma vantagem que o DB2 Express-C pode lhe oferecer é realizar a migração do seu banco de dados para qualquer outra versão sem a necessidade da paralisar o aplicativo, deixando o aplicativo 100% operante utilizando uma outra tecnologia de banco de dados.
Com o DB2 Express-C você pode encontrar estabilidade e flexibilidade nos diferentes sistemas operacionais e uma gama de aplicativos para gerenciar de modo ágil e fácil todos os banco de dados DB2.
As limitações do DB2 são diferenciadas e mais poderosas como podemos observar abaixo:
LIMITAÇÃO
Capacidade de Armazenamento: Ilimitada
Processadores: 2 Processadores
Memória: 4 GB
Sistema Operacional: Linux ou Windows
O suporte às mais variadas linguagens de programação e as poucas restrições impostas aos seus recursos tornam mais fortes o seu poder de competição no mercado e um objeto de desejo entre os desenvolvedores, abaixo podemos analisar o que o DB2 Express-C pode nos proporcionar:
RECURSOS SUPORTADOS
- Suporte XML
- Suporte .NET
- C/C++
- Java
- PHP
- Suporte a Unix
- Web Services
- ADO e ADO.NET
- SQLJ
- SQL Embutido
- Gerenciamento Autônomo
- WebSphere Studio Application Developer
Alguns profissionais DB2 gostam de dizer que o DB2 Express-C é um pequeno DB2 UDB Express, pelo motivo que quase todos os recursos são encontrados nessa versão, com exceção dos recursos abaixo:
RECURSOS NÃO SUPORTADOS
- Warehouse Manager tools & servers
- Extender support
- DB2 Connect support
- Informix Data Source Replication
- Replication Data Capture
- APPC
- Netbios
- Database Partitioning Feature
- Connection Concentrator
- DB2 Geodetic Extender
- Query Patroller
- Net Search Extender
- pureXML
- DB2 Web tools
- Spatial Extender Client and Samples
- Microsoft Cluster Server support
Outros pontos devem ressaltar quando pensarmos em utilizar o produto em seus projetos, que podem futuramente trazer beneficios ou problemas:
- Pouca documentação sobre o banco de dados.
- Integração com todos os outros aplicativos do fabricante.
- Possibilidade de adquirir recursos extras, conforme a necessidade do aplicativo.
- Estabilidade, confiabilidade e segurança aos desenvolvedores.
Suporte
Para todos os produtos citados, os fabricantes não fornecem suporte técnico, apenas Fórum em seus respectivos sites gerenciados e administrados por profissionais da empresa, exemplo é o suporte oferecido pela Oracle que pode contar com grandes administradores de banco de dados do mercado (DBA), como Thomas Kyte. A Microsoft criou Hot site com fórum de suporte e artigos técnicos no MSDN, o único que trouxe um pouco de dificuldade foi a IBM, que disponibilizou apenas um fórum técnico em seu site que é difÃcil ter retornos e quase nenhum artigo técnico.
Custos
Como não há necessidade de adquirir licenças para os bancos de dados, seu custo fica praticamente zero, é o caso quando se utiliza bancos de dados como MySQL, Firebird e PostGree.
Devemos sempre orientar o profissional que utilizar um Oracle, SQL Server ou DB2, que ele pode, sim, envolver custos e fornecer um crescimento ao seu aplicativo. Esses custos podem estar embutidos na compra de máquinas mais poderosas, mão-de-obra qualificada e aquisição de recursos ou serviços extras fornecidos pelo fabricante.
Portanto, antes de querer implantar algum banco de dados, veja a real necessidade do seu aplicativo e analise todas as funcionalidades que cada versão pode lhe oferecer para não ter arrependimento posteriormente. Eles realmente são capazes de trazer muitas melhorias e total estabilidade ao seu aplicativo, mas sempre com cautela.
Download
Abaixo, estão disponÃveis todos os links úteis para baixar as versões desejadas.
Biblioteca Técnica
Como as versões dos poderosos bancos de dados gratuitos são muito recentes, encontrar e trocar informações sobre os produtos é muito difÃcil, então, abaixo segue uma relação de sites e fórum que possuem dicas, artigos técnicos e troca de experiências entre os profissionais.
Microsoft SQL Server Express
Linha de Código
http://www.linhadecodigo.com.br/artigos.asp?id_ac=947&pag=1
MSDN SQL Server Express
http://www.microsoft.com/express/sql/download/
Oracle Express Edition
OTN
http://www.oracle.com/technology/products/database/xe/index.html
Oracle Express Edition Tutorial
http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm
Máteria sobre Oracle XE em português
Revista SQL Magazine Edição 35
https://ssl.dominal.com/devmedia/loja/edicoes_anteriores3.asp
IBM DB2 Express-C
Viva o Linux
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4687
DB2 Universal Database
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/welcome.htm
SQL Server 2008: Conheça as novidades do novo banco de dados da Microsoft
O SQL Server 2008, ou ‘Katmai’, tem motivos para os usuários do banco de dados da Microsoft ficarem animados. Melhor release do SQL Server até agora, ele traz melhorias em performance e em gerenciabilidade.
Se um novo software não tem cinco melhorias expressivas, nem vale a pena atualizar. Para ambientes como um grande data warehouse, estes cinco recursos do Katmai motivam a atualização: Change Data Capture, Lookup Cache, Data Compression, integração com PowerShell e Policy-Based Management. E não é só isso.
Change Data Capture e Lookup Cache farão sucesso junto aos administradores de banco de dados (ABDs) que querem acelerar processos ETL (Extract, Transformation e Load – extrair, transformar, carregar), assim como as melhorias no Integration Services, agilizando a transferência de dados.
Confira os melhores recursos do SQL 2008:
> Change Data Capture e Inserts não registrados
> Data Compression e Backup Compression
> Reporting Services e Integration Services
Data Compression, integração com PowerShell e Policy-Based Management, sem falar em Server Groups, deverão causar sensação em praticamente qualquer ambiente. Lembre-se de que os benefÃcios proporcionados por Data Compression vão depender da natureza dos dados contidos na sua tabela e de como eles são organizados.
Em resumo, o SQL Server 2008 é um release sólido e tem melhorias importantes. Nem todos os recursos novos são completos, mas alguns estão bem desenvolvidos e muitos são muito úteis. Continue lendo para conhecer mais detalhes sobre o SQL Server Management Studio e avanços em gerenciamento, Resource Governor, Change Data Capture e inserts não registrados, Data Compression, Backup Compression, melhorias em Ãndice, SQL Server Reporting Services e SQL Server Integration Services.
Fonte: http://computerworld.uol.com.br/infra_estrutura/2008/11/17/sql-server-2008-conheca-as-novidades-do-novo-banco-de-dados-da-microsoft/
SQL Server 2008: Data Compression e Backup Compression
A primeira tentativa de Data Compression do SQL Server parece muito boa. Ele tem dois tipos de compactação: linhas e páginas. A compactação de linhas é a verdadeira compactação: espaços não utilizados no fim das colunas são removidos para economizar armazenamento. A compactação de páginas, também conhecida como compactação de dicionário, padroniza os dados em cada página e mantém um ponteiro de pesquisa. No SQL Server 2008, a compactação de páginas inclui compactação de linhas. Se a compactação de páginas estiver ativada, você ganha a compactação de linhas.
A Microsoft fornece um assistente de cálculo de compactação útil que lhe dará uma boa estimativa dos benefÃcios que você pode esperar. O assistente usa um cenário de teste de compactação dos seus dados para cada tipo de compactação (linha e página) e informa qual deveria ser o novo tamanho da tabela. Nos testes, o cálculo desviou dos meus resultados finais apenas 1% ou 2%. É um Ãndice muito bom, se você considerar que o cálculo se baseia em um volume de dados relativamente pequeno.
Até que ponto uma tabela será compactada? Depende tanto do tipo de dados quanto do tipo de compactação. Se seus dados são como os dados SAP, que têm muitos espaços, você ficará bem servido com a compactação no nÃvel da linha. Se você tem muitos dados repetidos, então a compactação no nÃvel da página será a melhor opção.
A ordem dos dados também importa. Tendo em vista que o SQL Server compacta no nÃvel da página, dados repetidos que estão agrupados serão deduplicados. Vale a pena conhecer a natureza e a ordem dos seus dados.
Como o Advanced Compression do Oracle Database 11g, meus resultados com o Data Compression no SQL Server 2008 foram muito variados. Obtive apenas 17% de compactação em alguns conjuntos de dados e até 76% em outros. O teto de 76% foi alcançado em dados de linha de ordem não normalizados (denormalized) em um data warehouse.
Quando se trata de Data Compression, o SQL Server tem uma vantagem sobre o Oracle: o SQL Server compactará tabelas existentes em um único statement. No Oracle Database 11g, você tem que criar uma nova tabela, inserir os dados e depois remover a tabela antiga. Com o SQL Server, você não precisa criar uma cópia adicional dos dados e ainda pode realizar operações na tabela durante a operação de compactação, sem necessidade de tempo de inatividade.
Um recurso novo excelente chamado Sparse Columns permite que você armazene valores null sem consumir nenhum espaço fÃsico. Aqui a Microsoft cometeu um grande erro: Sparse Columns não são compatÃveis com Data Compression. Se você definir Sparse Columns em uma tabela, não pode utilizar Data Compression. Sparse Columns e Data Compression formaria um par perfeito. Tomara que a Microsoft corrija isso em breve.
Backup Compression
O SQL Server 2008 também apresenta o Backup Compression. Em alguns testes preliminares, achei as taxas de compactação quase no mesmo nÃvel das de Quest LiteSpeed e outras ferramentas de backup de terceiros que usei. Ainda assim, o Backup Compression do SQL Server tem muitos aspectos negativos. Em primeiro lugar, Backup Compression só está disponÃvel para a enterprise edition. Mesmo na corporação, só vai servir para dificultar o gerenciamento. O mais provável é que a fatia do leão de instâncias do SQL Server em qualquer organização de tamanho considerável não seja enterprise edition – e não é aceitável que estas instâncias sejam a exceção no plano de backup.
Encare do seguinte modo: você não escolheu a enterprise edition por causa do tamanho do banco de dados. Já que a maioria das versões do SQL Server é capaz de lidar com tamanho de dados ilimitado, a enterprise edition, em geral, é escolhida pelos recursos que oferece. Como resultado, em suas instalações provavelmente você terá muitas máquinas SQL Server com conjuntos de dados muito grandes que não estão na enterprise, e eles também precisam de backups compactados – ou seja, possivelmente você já implementou uma solução de backup de terceiros. Não faz sentido mudar de rotinas de backup para um pequeno subconjunto das suas máquinas SQL Server. Sem dúvida, você vai querer a mesma solução o ambiente inteiro.
Em segundo lugar, ao contrário do SQL Server, as soluções de backup de terceiros fazem restore no nÃvel do objeto, o que pode ser muito prático em várias situações. Se você utiliza Backup Compression do SQL Server para seus servidores empresariais, perde funcionalidade.
Para terminar, as soluções de terceiros têm repositórios centralizados e fornecem relatório e alerta centralizados. Se você usa a compactação nativa do SQL Server, elimina eficazmente o gerenciamento centralizado de backups para estas máquinas.
As soluções de backup de terceiros oferecem outros recursos, mas o Backup Compression do SQL Server não será viável para a maioria das instalações devido, principalmente, a cobertura incompleta, restore no nÃvel do objeto e gerenciamento centralizado de backup.
Fonte: http://computerworld.uol.com.br/infra_estrutura/2008/11/16/sql-server-2008-data-compression-e-backup-compression/
Consultas com JOINS
Quando comecei na área de TI, sempre me deparava com situações no SQL em que precisava pegar campos de outras tabelas não vinculadas diretamente com a que estamos manipulando, e sentia certa dificuldade em amarrar as tabelas pelas suas respectivas chaves, fossem elas código, id, usuário, etc.
Bem, algo que é de extrema ajuda nesses casos são os nossos amigos JOINs (LEFT JOIN, RIGHT JOIN, INNER JOIN e FULL JOIN).
Hoje percebo que muitos daqueles que estão começando na área de TI sentem o mesmo.
Junções, tradução de JOINs, são utilizadas em duas cláusulas especÃficas: FROM e WHERE, eu particularmente prefiro usar na cláusula FROM, por questões de desempenho e organização.
Neste artigo vamos analisar algumas consultas possÃveis com essas poderosas cláusulas. Então: Let s JOIN!
A princÃpio vamos entender o primeiro JOIN mencionado, o LEFT JOIN.
Como podemos observar, e a própria sintaxe indica, essa cláusula trabalha com os dados da tabela “Esqueda” como sendo os dados principais, ou seja, de acordo com o exemplo abaixo, o LEFT JOIN mostrará o que esta na Tabela1 (esquerda), podendo trabalhar também com qualquer outro dado da Tabela2 com a mesma chave encontrada na Tabela1.
Os dados principais que estaremos trabalhando serão os da Tabela1, já que esta, como já mencionado, é a nossa tabela ” Esquerda “.
SELECT Tab1.* FROM Tabela1 Tab1
LEFT JOIN Tabela2 Tab2 ON Tab1.Cod = Tab2.Cod
Podemos fazer a mesma amarração junto à cláusula WHERE assim como no exemplo abaixo onde estamos pegando os mesmos valores do exemplo acima.
SELECT Tab1.* FROM Tabela1 Tab1, Tabela2 Tab2
WHERE Tab1.Cod *= Tab2.Cod
Nesse exemplo os sinais ” *= ” indicam a condição LEFT JOIN.
Partiremos agora para o irmão mais próximo do LEFT JOIN, o RIGHT JOIN.
O RIGHT JOIN retorna o que estiver na Tabela1 e Tabela2 com a mesma chave, e sendo o inverso do LEFT JOIN a tabela principal se torna a tabela da ” Direita “, ou seja a Tabela2.
SELECT Tab2.* FROM @Tabela1 Tab1
RIGHT JOIN @Tabela2 T2 ON Tab1.Cod = Tab2.Cod Do mesmo modo que podemos utilizar o LEFT JOIN na cláusula WHERE podemos fazer assim também com o RIGHT JOIN.
SELECT Tab2.* FROM @Tabela1 Tab1, @Tabela2 Tab2
WHERE T1.Cod =* T2.Cod
Observe que o sinal no RIGHT JOIN é diferente do LEFT JOIN, de “Asterisco =”mudamos para”= asterÃsco “.
Alteramos o asterisco da esquerda para a direita, o que se torna uma ajuda para não confundirmos as cláusulas.
LEFT JOIN - Asterisco à esquerda;
RIGHT JOIN – Asterisco à direita.
Desse ponto partiremos para os dois últimos JOINS, o INNER JOIN e o FULL JOIN.
O INNER JOIN nos retorna apenas o que esta na Tabela1 e Tabela2 com a mesma chave.
Exemplo:
SELECT * FROM @Tabela1 T1
INNER JOIN @Tabela2 T2 ON T1.Cod = T2.Cod
Assim como o LEFT JOIN e o RIGHT JOIN, podemos da mesma forma fazer essa amarração junto à cláusula WHERE, como segue o exemplo:
SELECT * from @Tabela T1, @Tabela2 T2
WHERE T1.Cod = T2.Cod
Nesse exemplo o sinal ” = ” indica a função INNER JOIN.
Já O FULL JOIN retorna o que estiver na Tabela1 e Tabela2 levando em conta o seu significado FULL, ou seja, completo. Portanto o FULL JOIN retorna tudo o que há nas Tabelas selecionadas
SELECT * FROM @Tabela1 T1
FULL JOIN @Tabela2 T2 ON T1.Cod = T2.Cod
Bem, essas são as 4 cláusulas mais utilizadas para fazermos amarrações entre tabelas ou pegarmos valores relacionados. Com certeza é de grande ajuda para todos os que fazem uso de banco de dados independentemente de qual seja.
Em anexo está um exemplo de todas as cláusulas tratadas aqui, porém com banco e tabelas reais.
Este exemplo foi baseado no Microsoft SQL Server. As sintaxes das consultas não irão mudar, porém para àqueles que forem executar os exemplos em outros bancos terão de modificar os scripts de criação das tabelas.
Espero que esta matéria tenha sido de grande ajuda para àqueles que estão começando ou sentem dificuldades nesse assunto.
Aliases do SQL Server
Um Alias nada mais é que um apelido que desejamos colocar em uma instância.
Imaginemos a seguinte situação:
Você tem uma instância do SQL Server instalado em um cliente chamada Imasters e as suas aplicações acessam os bancos de dados dessa instância com a seguinte string de conexão:
"Provider=SQLOLEDB.1;Password=Pa$$w0rd;Persist Security Info=True;User
ID=sa;Initial Catalog=Noticias;server=Imasters"
Este cliente precisa que sejam feitas algumas alterações em seu sistema de notÃcias e você, como um bom desenvolvedor, traz a versão instalada no cliente para a sua máquina para que possa alterar e fazer testes antes de atualizar a aplicação no cliente.
Mas, como eu já mencionei, a sua instância de teste não tem o nome Imasters e sim ClientesTeste. Aplicando o método que irei ensinar passo-a-passo, não haverá o trabalho de mudar todas as string de conexão.
Como criamos tais Aliases do SQL Server?
Siga o procedimento abaixo:
SQL Server 2000
Vá em:
- Iniciar
- Todos os programas
- Microsoft SQL Server
- Client Network Utility
Na janela que irá se abrir, selecione a aba Alias e clique no botão Adicionar.
Para adicionar um novo Alias, você deverá digitar o nome do Alias, ou seja, o apelido que deseja colocar na instância, o tipo de biblioteca de rede (tcp/ip, named pipes, etc), e os parâmetros de conexão. Neste caso coloque o nome da instância de teste que seria ClientesTeste.
Configurando um Alias no SQL Server 2000
SQL Server 2005
Vá em:
- Iniciar
- Todos os programas
- Microsoft SQL Server 2005
- Configuration Tools
- SQL Server Configuration Manager
Na janela que irá se abrir, selecione a opção à esquerda “Configuração do SQL Native Client”.
Clique com o botão direito na opção Aliases e clique em Novo Alias.
Similar à configuração do 2000, para adicionar um novo Alias você deverá digitar o nome do Alias, ou seja, o apelido que deseja colocar na instância. Selecione o protocolo e coloque o número da porta (caso necessário), e o nome do servidor, neste caso coloque o nome da instância de teste que seria ClientesTeste.

Configurando um Alias no SQL Server 2005
Percebam que, tanto na versão 2000 como na 2005, colocamos o apelido de Imasters justamente por que queremos que a instância ClientesTeste seja apelidada de Imasters para que quando a aplicação procure por Imasters ela a encontre.
Deve-se ficar atento aos seguintes pontos:
- O usuário e a senha deverão ser o mesmo utilizado no cliente caso o acesso seja feito via SQL Server Atuthentication
- Cuidado ao utilizar os Aliases: Um erro de digitação pode causar grandes estragos.
Só para citar um caso de erros na utilização de Alias.
Um DBA que trabalhava comigo trocou a senha do usuário SA pelo SQL Server Management Studio. Ele achou que estava com o Alias criado corretamente apontando para a instância de testes que se encontrava na máquina dele, e realmente estava criado, mas por causa de uma letra que ele digitou errado no Alias ele acabou acessando o servidor real e aà já viu né!?
Não que vá acontecer, mas é bom tomarmos cuidado ao utilizar tal funcionalidade.
