Comando select em Mysql, SQL Server e Access
Autor: Fernando S.Costa | Publicado: 2009-01-15T07:38:00-08:00

O 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 consultaFROM - Seleciona a(s) tabela(s)WHERE - Permite criar condições para filtrar os dados retornados na consultaGROUP 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, cidade FROM 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 residencia FROM 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, '/', estado FROM empregadosExemplo de concatenação em SQL Server ou AccessSELECT nome + ' mora em ' + cidade + '/' + estado FROM 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 cidade FROM 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.até a próxima!