Sunteți pe pagina 1din 11

Guia rpido para consultas SQL

Nossos nmeros
Dicas: 1.314 Cdigos/scripts: 280 Funes de VBScript : 90 Funes JScript : 05 Livros: 1.805 Notcias: 3.030 Artigos: 3.249 Oportunidades: 5.182 Vdeos .Net: 3.265 Esqueci minha senha

quinta-feira, 15 de dezembro de 2011

Busca Loading

Usurio:

Senha:

Log In

:: Participe
Cadastre-se Publique um artigo Publique uma oportunidade Publique uma notcia Publique um evento Publique um curso Publique uma dica Publique um cdigo

Artigos
Por: Helbert Carvalho Tiago [Entre em contato com o autor ]

Ver pgina do autor


O Linha de Cdigo deseja a todos um feliz natal e boas festas

Analista de sistemas, com nfase em sistemas de gesto ERP e banco de dados SQL Server, pode ser contactado atravs do e-mail helbertcarvalho@yahoo.com.br ou http://twitter.com/helbertc

Publicidade

Feed de artigos. Feed de artigos deste autor. Gere seu feed personalizado
Assunto Assunto

:: Oportunidades
Cadastrar oportunidades Gerenciar suas oportunidades Cadastrar nova empresa

Guia rpido para consultas SQL


Este artigo visa auxiliar estudantes que tenham interesse em trabalhar com banco de dados, aprendendo o principal comando: SELECT.

Publicado em: 19/01/2010 Compartilhe

:: Especiais
Bsico de C++

COMANDO SELECT A linguagem SQL foi criada com o objetivo de padronizar os comandos de manipulao de dados em SGBDs. Hoje em dia, apesar da linguagem possuir uma quantidade considervel de extenses e implementaes proprietrias, pode se afirmar que a meta foi alcanada. Conhecendo bem a linguagem possvel acessar os recursos bsicos de qualquer banco relacional, como Oracle, SQL Server ou MySQL, sem praticamente nenhuma mudana. Veremos nesse artigo um pequeno guia de consultas para o comando SELECT, um dos mais importantes da linguagem SQL. SELECT simples O comando SELECT permite recuperar os dados de um objeto do banco de dados, como uma tabela, view e, em alguns casos, uma stored procedure (alguns bancos de dados permitem a criao de procedimentos que retornam valor). A sintaxe mais bsica do comando : SELECT <LISTA_DE_CAMPOS> FROM <NOME_DA_TABELA> Exemplo: SELECT CODIGO, NOME FROM CLIENTES SELECT * FROM CLIENTES O caractere * representa todos os campos. Apesar de prtica, este caractere
Recommended Like Twitter Digg This Stumble It!

C++ Builder Curso ASP.NET 3.5 em VB.NET e C# Guia Prtico de HTML Testes com Visual Studio Team System 2008

Feeds
Oportunidades Notcias Artigos Artigos personalizado (Por assunto) Artigos personalizado (Por autor)

:: Desenvolvimento Share Page Recent Activity


ActionScript ADO.NET ASP ASP.NET Automao Comercial C# C/C++ Coldfusion

Chat with your friends

Os 10+ | Autores do dia


Anderson Patricio Israel Ace Mauricio Junior Jlio Cesar Fabris Battisti Luiz Felipe de Freitas Alessandro de Oliveira Faria

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL


CSS Delphi Disp. Mveis HTML Java Javascript LSL (Second Life) Modelagem PHP Python Sharepoint Silverlight SQL VBA (Office) Visual Basic Visual Basic .NET Visual Fox Pro WCF/WPF Web Services XML

no muito utilizado, pois, para o SGBD, mais rpido receber o comando com todos os campos explicitados. O uso do * obriga o servidor a consultar quais so os campos antes de efetuar a busca dos dados, criando mais um passo no processo. COMANDO WHERE A clusula Where permite ao comando SQL passar condies de filtragem. Veja o exemplo: SELECT CODIGO, NOME FROM CLIENTES WHERE CODIGO = 10 SELECT CODIGO, NOME FROM CLIENTES WHERE UF = RJ SELECT CODIGO, NOME FROM CLIENTES WHERE CODIGO >= 100 AND CODIGO <= 500 SELECT CODIGO, NOME FROM CLIENTES WHERE UF = MG OR UF = SP Os parnteses corretamente utilizados do mais poder as consultas: SELECT CODIGO, NOME FROM CLIENTES WHERE UF = RJ OR (UF = SP AND ATIVO = N) Neste comando, todos os clientes do Rio de Janeiro e apenas os clientes inativos de So Paulo seriam capturados. SELECT CODIGO, NOME FROM CLIENTES WHERE (ENDERECO IS NULL) OR (CIDADE IS NULL) Aqui todos os clientes que no possuem endereo ou cidade cadastrada sero selecionados. FILTRO DE TEXTO SELECT CODIGO, NOME FROM FUNCIONARIOS WHERE DEPARTAMENTO = VENDAS Para busca parcial de string, o SELECT fornece o operador LIKE SELECT CODIGO, NOME FROM CLIENTES WHERE NOME LIKE MARIA% Neste comando, todos os clientes cujos nomes iniciam com Maria sero retornados. Se quisermos retornar os nomes que contenham MARIA tambm no meio, podemos alterar para: SELECT CODIGO, NOME FROM CLIENTES WHERE NOME LIKE %MARIA% O uso de mscara no inicio e no fim da string fornece maior poder de busca, mas causa considervel perda de performance. Este recurso deve ser utilizado com critrio. OBS: Em alguns bancos de dados a mscara de filtro no representada por %. Consulte a referncia do banco para verificar o caractere correto. Por padro a SQL diferencia caixa baixa de caixa alta. Para eliminar essa diferena, utiliza a funo UPPER SELECT CODIGO, NOME FROM CLIENTES WHERE UPPER(NOME) LIKE MARIA %SILVA% ORDENAO A ordenao pode ser definida com o comando ORDER BY. Assim como no comando WHERE, o campo de ordenao no precisa estar listado como campo de visualizao: SELECT CODIGO, NOME FROM CLIENTES ORDER BY NOME

Eric C M Oliveira Ramon Dures Alfred Reinold Baudisch Robert Martim

Os 10+ | Artigos do dia


HTML Bsico Comandos bsicos em SQL - insert, update, delete e select Palavra de Status na DarumaFramework.dll Principais Instrues em SQL HTML Avanado Como configurar Conexo Remota no SQL Server 2005 Excel: Como verificar se existe valores duplicados Tutorial de Tabelas Dinmicas no Excel Parte 1 ASP.NET 2.0 - Explorando o GridView Trabalhando com valores Date/Time no SQL Server 2000

:: Infra
BizTalk Server CRM Exchange Server ForeFront / Antigen / IAG Interoperabilidade ISA Server Linux MOF MS Dynamics CRM Network OCS / LCS Outlook Powershell e Scripts Redes Segurana System Center e Gerenciamento Virtualizao Windows Windows Server

:: Banco de Dados

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL


Access Cach Firebird Interbase MySQL Oracle SQL Server Sybase

SELECT CODIGO, NOME FROM CLIENTES ORDER BY UF, NOME A utilizao da palavra DESC garante a ordenao invertida SELECT CODIGO, NOME FROM CLIENTES ORDER BY NOME DESC SELECT CODIGO, NOME FROM CLIENTES ORDER BY UF DESC JUNO DE TABELAS O SELECT permite juntar duas ou mais tabelas no mesmo resultado. Isso pode ser feito de vrias formas: SELECT CLIENTES.CODIGO, CLIENTES.NOME, PEDIDOS.DATA FROM CLIENTES, PEDIDOS WHERE CLIENTES.CODIGO = PEDIDOS.CODCLIENTE Nesta linha as tabelas relacionadas CLIENTES e PEDIDOS so unificadas atravs do campo chave, em uma operao de igualdade. Repare que os nomes dos campos passam a ser prefixados pelo nome das tabelas, resolvendo duplicidades. Uma verso resumida desse comando pode ser: SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR FROM CLIENTES A, PEDIDOS B WHERE A.CODIGO = B.CODCLIENTE O uso de aliases no cdigo SQL torna a manuteno mais simples. No comando abaixo temos vrias tabelas unificadas em uma mesma clusula: SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR, C.QTD, D.DESCRIC FROM CLIENTES A, PEDIDOS B, ITENS C, PRODUTOS D WHERE A.CODIGO = B.CODCLIENTE AND B.CODIGO = C.CODPEDIDO AND C.CODPRODUTO = D.CODIGO Neste comando unificamos as tabelas relacionadas CLIENTES, PEDIDOS, ITENS e PRODUTOS. Veja mais alguns exemplos: SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR FROM CLIENTES A, PEDIDOS B WHERE A.CODIGO = B.CODCLIENTE AND A.UF = RJ Observe que a juno atravs da igualdade de campos traz como resultado somente os registros que possuem referncias nas duas tabelas. Observe o comando abaixo: SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO FROM PROUTOS A, COMPONENTES B WHERE A.CODIGO = B.CODPRODUTO Os produtos que no possuem componentes no so selecionados. Caso seja necessrio criar uma listagem incluindo tambm os registros que no possuem correspondncia, deve se utilizar o comando JOIN. COMANDO JOIN A juno de tabelas no comando SELECT tambm pode ser feita com o comando JOIN. Este comando deve ser utilizado com a palavra reservada INNER ou com a palavra OUTER: INNER: Semelhante ao uso do operador = na juno de tabelas. Aqui os registros sem correspondncias no so includos. Esta clusula opcional e pode ser omitida no comando JOIN. OUTER: Os registros que no se relacionam tambm so exibidos. Neste caso, possvel definir qual tabela ser includa na seleo, mesmo no tendo correspondncia. Para exemplificar, temos as tabelas abaixo:

:: Gerncia
Arquitetura Ciclo de Vida de Desenvolvimento Controle de Verso Estimativas Metodologias MOF Qualidade e Testes

:: Design
Corel Flash Photopaint Photoshop

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

Observe os exemplos e o resultado produzido: SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO, B.QTD FROM PRODUTOS A INNER JOIN COMPONENTES B ON (A.CODIGO = B.CODPRODUTO)

Este comando pode ser escrito na verso resumida abaixo: SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO FROM PRODUTOS A JOIN COMPONENTES B ON (A.CODIGO = B.CODPRODUTO) Como mostrado no resultado, os produtos que no possuem componentes no so includos na seleo. SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO, B.QTDE FROM PRODUTOS A LEFT OUTER JOIN COMPONENTES B ON (A.CODIGO = B.CODPRODUTO)

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

Neste comando todos os produtos sero includos na seleo, independente de possurem um componente. Observe que a palavra LEFT se refere primeira tabela do relacionamento. O mesmo comando poderia ser descrito da forma: SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO FROM COMPONENTES A RIGHT OUTER JOIN PRODUTOS B ON (A.CODIGO = B.CODPRODUTO) A ordem das tabelas foi invertida mas o resultado o mesmo. Observe mais alguns exemplos: SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO, B.QTDE FROM PRODUTOS A JOIN COMPONENTES B ON (A.CODIGO = B.CODPRODUTO) WHERE A.CATEGORIA = 1

SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO FROM PRODUTOS A JOIN COMPONENTES B ON (A.CODIGO = B.CODPRODUTO) WHERE A.CATEGORIA = 1 OR A.CATEGORIA = 2 ORDER BY A.CATEGORIA, A.DESCRICAO

FULL OUTER JOIN Podemos ainda combinar o uso de INNER e OUTER atravs do comando FULL OUTER JOIN. Neste caso, todos os registros das duas tabelas envolvidas sero exibidas, tendo ou no relacionamento. Observe:

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

UNION Existe ainda uma segunda forma de juntar tabelas com o comando SELECT. Atravs do parmetro UNION, possvel colar o contedo de duas tabelas. Veja o exemplo: SELECT CODIGO, NOME FROM CLIENTES UNION SELECT CODIGO. NOME FROM FUNCIONARIOS O resultado deste comando a listagem de todos os clientes e a listagem de todos os funcionrios, dentro do mesmo result set. Repare que no comando JOIN unio horizontal e no UNION a unio vertical. Por default, os registros duplicados so eliminados na clusula UNION. No exemplo anterior, se tivssemos um cliente com o mesmo nome e cdigo de um funcionrio, apenas o registro da primeira tabela seria exibido. Para incluir todos os registros, independente de duplicidade, utilize a palavra ALL: SELECT CODIGO, NOME FROM CLIENTES UNION ALL SELECT CODIGO, NOME FROM FUNCIONARIOS FUNES DE AGRUPAMENTO So cinco as funes bsicas de agrupamento: AVG: Retorna a mdia do campo especificado SELECT AVG(VALOR) FROM PEDIDOS MIN/MAX/SUM: Respectivamente retorna o menor valor, o maior e o somatrio de um grupo de registros: SELECT MIN(VALOR) FROM PEDIDOS SELECT MAX(VALOR) FROM PEDIDOS SELECT AVG(VALOR) FROM PEDIDOS COUNT: Retorna a quantidade de itens da seleo: SELECT COUNT(CODIGO) FROM CLIENTES AGRUPAMENTO Um poderoso recurso do comando SELECT o parmetro GROUPY BY. Atravs dele podemos retornar informaes agrupadas de um conjunto de registros, estabelecendo uma condio de agrupamento. um recurso muito utilizado na confeco de relatrios. Para exemplificar, temos as tabelas CLIENTES E PEDIDOS

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

SELECT CODCLIENTE, MAX(VALOR) FROM PEDIDOS GROUP BY CODCLIENTE O comando acima retorna o maior valor de pedido de cada cliente. Observe o resultado:

SELECT CODCLIENTE, COUNT(*) FROM PEDIDOS GROUPY BY CODCLIENTE Aqui vemos quantos pedidos foram feitos por cada cliente.

HAVING Atravs do comando HAVING podemos filtrar a clusula GROUP BY. Observe o comando abaixo: SELECT CODCLIENTE, COUNT(*) FROM PEDIDOS GROUPY BY CODCLIENTE HAVING COUNT(*) >= 2

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

Somente os clientes com 2 ou mais pedidos sero selecionados. Repare que o HAVING utilizado, geralmente com alguma funo de agrupamento. Para filtros normais, pode se utilizar o comando WHERE. Observe o exemplo abaixo: SELECT CODCLIENTE, COUNT(*) FROM PEDIDOS WHERE DATA > 06/10/2002 GROUPY BY CODCLIENTE HAVING COUNT(*) >= 2

Repare que o cliente nmero 3 apresentou apenas dois pedidos, visto que o primeiro no possui data maior que 06/10.
Curtir Voc curtiu Guia rpido para consultas SQL. Pgina do administrador Informaes Erro

Compartilhe

Classificaes(45)
Classificao mdia:

Deseja contribuir? ParticiparouLogin

Participar deste site


Google Friend Connect

Membros (925) Mais

Programador tem, mas ninguem aqui far a sua lio de casa por voc. A no ser claro que voc pagu... Mais Fourmigao 12/12 tem algum programado ai de php sergiogomes 12/7 12)Dado modelo, ano de fabricao e cor de 2 carros, faa um algoritmo que: Imprima quantos so, ... Mais sergiogomes 12/7 8) Escreva um programa em PHP que receba a altura(H) e o sexo de uma pessoa, calcule e imprima seu ... Mais sergiogomes 12/7 6) Exiba todos os pares de 500 at 10. sergiogomes 12/7
T d i P i

J um membro?Fazer login

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

Inclua um comentrio sobre o artigo


Elogios e crticas so muito bem vindos, porm o comentrio deve ter referncia ao artigo em pauta. O portal e o autor agradecem.

Topo

Nome: E-mail: Comentrios:

Digite a palavra abaixo:

Para dvidas tcnicas, NO UTILIZE ESTE ESPAO, utilize nosso frum de discusso. http://linhadecodigo.com.br/cs2/forum

Comentrios sobre o artigo

Ver Todos comentrios

Oi Jean, pelo que entendi voc deseja fazer um SELECT com ordenao que inclua uma condio onde uma coluna com o nome visivel fosse igual a "SIM. A sintaxe seria: SELECT (COLUNA1,COLUNA2,COLUNA3) WHERE VISIVEL = "SIM" ORDER BY COLUNA1 Obs: Qualquer dvida, entre no meu twitter ou me encaminha um e-mail helbertcarvalho@yahoo.com.br Quem enviou: Helbert Postado em: 13/09/2010 00:00:00 Ol, achei muito rico o contedo, mas estou com uma dvida de como fazer um SELECT usando o ORDER BY e VISIVEL ='Sim' com o mysql. Se puder me ajudar. Quem enviou: Jean Postado em: 08/09/2010 00:00:00 Muito bom este guia! Esta de parabens! Quem enviou: ALESSANDRO LOZZI Postado em: 13/06/2010 00:00:00 parabns Helbert pelo artigo! Bem conciso, bons exemplos e de grande valia para quem est comeando. Eu teria uma pequena observao, contudo. WHERE e JOIN no seriam propriamente "comandos", certo? Creio que "clusulas", seria mais adequado. Abs Eduardo Morelli Quem enviou: Eduardo Morelli Postado em: 10/02/2010 00:00:00 Obrigado. Consultas SQL o meu ponto fraco. Valeu!!! Quem enviou: Gelson Postado em: 20/01/2010 00:00:00

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL

Outros artigos do autor


Change Management ou a Gesto da Mudana Comandos bsicos em SQL - insert, update, delete e select Introduo a modelagem utilizando UML Desafios na implantao de sistemas ERP Aspectos relevantes em implantao de ERP Mudanas e impactos organizacionais com adoo de sistemas ERP Benefcios e dificuldades na implantao de sistemas ERP Implantao de softwares ERP

Topo

Artigos relacionados
Tunning Index com o DTA Tunning Index com o DTA Dica Importante SQL Server 2008 Management Studio Tratamento de Erros com o Try/Catch Dica para buscar nome de tabelas ou stored procedures dentro do banco de dados Insert Top (N) X Insert Select Top (N) Aperfeioar UPDATE e DELETE x Cursores Trabalhando com Procedures no .NET Criando e trabalhando com SQL - Tabela gTabela Dez razes para adotar o Linq nas aplicaes .Net Funo de tratamento de erros (RAISERROR) Tratando a concorrncia de dados com LINQ TO SQL Foreach Loop Container Task Como exibir informaes com mltiplas instrues SQL Stored Procedure Dinmica Conhecendo o SQL Server 2005 Express Edition Trabalhando com valores Date/Time no SQL Server 2000 SQL: Utilizando o Operador UNION e UNION ALL Utilizando cursores Comandos e funes no suportados na migrao para SQL 2005 - Parte II Comandos e funes no suportados na migrao para SQL 2005 - Parte I Conhecendo o LINQ (Language Integration Query) Melhoras no Transact SQL 2005 - TOP, OUPTUP, CTE, CRIPTOGRAFIA SQL SERVER 2005 breve viso de alguns novos recursos Inovaes na linguagem TSQL do SQL Server 2005

Topo

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

Guia rpido para consultas SQL


SQL Server: Funes de usurio (User Functions) Trabalhando com Isolation Level e Hints Melhoramentos no T-SQL do SQL Server 2005 - Clusula TOP e Clusula OUTPUT Melhoramentos no T-SQL para SQL Server 2005 SQL Server: Views Indexadas

DevMedia - tutoriais, videos e cursos sobre .net www.linhadecodigo.com.br Poltica de privacidade e de uso | Anuncie | Cadastre-se | Fale conosco

http://www.linhadecodigo.com.br/Artigo.aspx?id=2741[15/12/2011 23:42:26]

S-ar putea să vă placă și