SQL: Linguagem de Banco de Dados
Autor: Rogério Nascimento | Publicado: 2010-01-06T13:58:00-08:00

Há inúmeras linguagens no mercado de informática: linguagens orientadas a objeto, estruturadas, de marcação de texto e por aí vai. Entre elas há uma linguagem que voltada para banco de dados, estamos falando do SQL. SQL (Linguagem de consulta estruturada, em português) é uma linguagem que todo programador, técnico ou administrador de banco de dados deve conhecer. Sua aplicação é extremamente ampla no mercado de banco de dados e programação.A definição, linguagem de banco de dados é minha e talvez você não encontre outras referências desta forma. Usei este termo pois na prática ela é uma linguagem de banco de dados.Perguntas e respostas sobre SQL:O que é SQL?A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards Institute - Instituto Nacional de Padronização Americano) para a operação em bancos de dados relacionais. A linguagem SQL foi criada para atender a todos os bancos de dados relacionais e permitir que usuários possam acessar qualquer banco usando a mesma base de conhecimento.SQL é igual em todos os bancos de dados?Inicialmente imagina-se que a linguagem SQL seria a mesma para todos os bancos de dados, porém, algumas empresas desenvolvedoras de banco de dados, entre elas a Microsoft e a Oracle, fizeram aperfeiçoamentos na linguagem SQL e acabaram criando versões próprias de acesso ao seu banco de dados.SQL é a mesma coisa que SQL Server?Não. SQL é uma linguagem universal para trabalhar com banco de dados relacional, SQL Server é um software de banco de dados da Microsoft.Se eu aprender SQL poderei trabalhar então com qualquer banco de dados?Em tese sim, é preciso considerar duas coisas neste caso:   1. Conforme visto acima, alguns bancos de dados tratam a linguagem SQL de forma diferente e é preciso considerar isto   2. Os bancos de dados usam SQL, mas eles têm outras funções também como instalação, sistemas de arquivos e administração em geral que por sua vez são diferentes uns dos outros.Quais os principais comandos do SQL?São eles: Select, Insert, Update e Delete. Há outros comandos como create, drop, alter, entre outros.Dê um exemplo de SQL que rode em todos os bancos de dados?select * from [tabela]Dê um exemplo de SQL que seja específico para determinados bancos de dados?Um caso bem simples é quando você precisa concatenar dois campos. Veja como seria o exemplo em SQL Server e Access.select campoA + campoB from [tabelas]Já em MySQL será necessário usar uma função que o concat. Veja o exemplo abaixo:select concat(campoA, campoB) from [tabelas]Comando select em Mysql, SQL Server e AccessO comando select do SQL é usado para efetuar consultas no banco de dados. Neste post veremos como usar este comando nos bancos de dados Mysql, SQL Server e Access. Estes bancos por sua vez apresentam algumas diferenças na maneira de entender o select. Vamos lá?Estrutura do comando select:    * SELECT - Seleciona as colunas da consulta    * FROM - Seleciona a(s) tabela(s)    * WHERE - Permite criar condições para filtrar os dados retornados na consulta    * GROUP BY Agrupa dados na consulta.    * HAVING Limita o resulta em uma condição estabelecida.    * ORDER BY Especifica a coluna ou as colunas que serão ordenadas na consultaUsando o Select na forma básicaSelect * FROM empregadosNo exemplo acima, usamos as cláusulas Select e From. O * (asterisco) indica que todas as colunas da tabela devem ser retornadas.Em muitos casos é recomendável selecionar algumas colunas apenas e não todas como no exemplo acima, isto deve ser considerado pois quando o tamanho do banco aumentar as consultas poderão ficar lentas em função do grande volume de informações contida nas tabelas.Selecionando colunas específicas para a consultaSELECT nome,salario, cidadeFROM empregadosPara retornar apenas as colunas desejadas, basta indicar os seus nomes na instrução select como no exemplo a seguir, onde selecionamos o nome, salário e cidade.Renomeando colunasSELECT nome, data_nascimento As Aniversario, cidade As residenciaFROM empregadosÉ importante observar que a coluna foi renomeada apenas nesta consulta, mas não houve alteração no nome da coluna no banco de dados.Concatenando colunas em uma consulta.Concatenamos colunas quando queremos unir o resultado de dois campos em um só. Imagine que numa determinada tabela exista o campo nome, sobrenome, rua e numero da casa, neste caso ao fazermos uma consulta seria interessante concatenat o nome com o sobrenome e a rua com o numero da casa.O Mysql trata concatenação de forma diferente do SQL Server e do Access, enquanto que no Mysql usamos a função concat(), no SQL Server e no Access fazemos pelo sinal de adição.Exemplo de concatenação no Mysql:SELECT concat(nome, ' mora em ', cidade, '/', estadoFROM empregadosExemplo de concatenação em SQL Server ou AccessSELECT nome + ' mora em ' + cidade + '/' + estadoFROM empregadosO sinal + (mais) indica concatenação e deve ser usado para concatenar colunas ou uma coluna com um texto. Só poderá ser concatenado colunas do tipo texto, caso for necessário concatenar colunas do tipo data ou numérico, é necessário fazer a conversão dessas colunas para texto.A função CONVERT() do SQL Server é usada para fazer a conversão de valores de uma coluna.Exemplo 1:SELECT nome + ' ganha ' + convert(varchar, salario)FROM empregadosExemplo 2:SELECT nome + ' nasceu em ' + Convert(VarChar, data_nascimento, 103)FROM empregadosNo primeiro caso, estamos convertendo o valor da coluna salário para texto, já que esta coluna é do tipo Decimal.No segundo exemplo, estamos convertendo o valor de uma coluna do tipo data para texto. Perceba que neste caso usamos o 103 na função, isto é necessário para informarmos que queremos que a data seja convertida no formato dd/mm/aaaa.Selecionando valores distintosPara eliminar linhas duplicadas, usamos a palavra-chave DISTINCT na cláusula SELECT.SELECT distinct cidadeFROM empregadosNo exemplo acima, usamos a palavra-chave distinct na coluna cidade, mas é possível relacionar mais de uma coluna, por exemplo, cidade e estado. Neste caso a combinação das duas colunas deve ser distinta.Limitando o nº de linhas em uma consultaLimitar o número de linhas é usado quando não queremos listar todas as linhas de uma tabela, seja pelo volume de linhas ou por não haver necessidade. O Mysql trata esta questão de forma diferente do SQL Server e do Access.Em SQL Server e Access use o Top para indicar o limite de linhas desejado na consulta.SELECT top 7 *FROM empregadosEm Mysql use o Limit para indicar o limite de linhas desejado na consulta.SELECT *FROM empregados limit 0,7O resultado será o mesmo, porém a leitura pode ser um pouco diferente, já que o top vai pegar as sete primeiras linhas e o limit vai pegar a partir de 0 até 7.