SQL - Selecionandos dados com SQL
Fico impressionado com a quantidade de consultas postadas em fóruns com dúvidas básicas a respeito da linguagem SQL . Não que eu seja um expert em SQL , longe disto , mas eu creio que a linguagem é muito intuitiva e que reservando algum tempo para dar uma olhada nos comandos principais em pouco tempo temos uma visão geral do funcionamento da linguagem.
O SQL usado pelo Visual Basic com arquivos Access tem recursos para selecionar , atualizar , excluir , editar , criar tabelas , índices , chave primárias fazer agrupamentos , gerar registros oriundos de diversas tabelas dentre outros recursos. Já deu para sentir que é importante saber onde você esta pisando ao usar o SQL para aplicações com acesso a dados no VB.
Neste artigo vou mostrar um roteiro básico sobre SQL voltada para o Microsoft Jet SQL ( o SQL suportado pelo Access). A sintaxe da SQL é determinada por um comitê que é parte do ANSI. O motor do Microsoft Jet DataBase utiliza SQL ANSI (ANSI SQL-89) com algumas pequenas diferenças de implementação. Tenha em mente que nem todos os comandos que você usa na SQL do Jet irão funcionar com outros banco de dados relacionais.
Para testar as instruções SQL usadas neste artigo eu vou usar o aplicativo Visdata e o banco de dados Biblio.mdb ambos vem junto com o VB5/6 .
Abra o Visual Basic
No menu principal do VB selecione a opção Add-Ins e a seguir selecione - Visual Data Manager.
Se você instalou o aplicativo com o seu VB você verá a tela de abertura do programa. Selecione então a opção File , a seguir Open DataBase... e depois Microsoft Access... (conforme figura abaixo)
A seguir selecione o banco de dados que você deseja abrir. Nós vamos trabalhar com o banco de dados Biblio.mdb que também vem junto com VB
Você verá a janela DataBase Window relacionando as tabelas do banco de dados a esquerda e a direita a janela SQL Statement onde iremos executar as instruções SQL deste artigo. Para que os dados seja exibidos em uma grade clique no ícone do DBGrid conforme mostrado abaixo.
Nota : Vou utilizar os comandos SQL em caixa alta , embora o VB não se importe se o comandos estão em caixa alta ou baixa.
SQL - O Básico
O comando mais simples do SQL é selecionar dados de uma tabela do banco de dados: SELECT / FROM
Este comando possui duas partes :
Uma lista de uma ou mais colunas das tabelas a selecionar
Uma lista de um ou mais tabelas que contém as colunas requisitadas
Ex: : SELECT Au_Id , Author FROM Authors
A instrução SQL acima irá selecionar(SELECT) as colunas Au_Id , Author da tabela(FROM) Authors
Nota: A sintaxe padrão SQL usa a palavra coluna para descrever o campo e linha para descrever um registro.
É claro que você deve conhecer a estrutura da tabela para nomear as colunas corretamente.
Para Selecionar todos os registros da tabela Authors podemos usar o asterisco (*) ao invés de informar a relação de colunas separadas por vírgula. Teremos:
SELECT * FROM Authors
Digite esta instrução na janela SQL Statement do Visdata e clique em Execute. Você verá a relação de todos as colunas da tabela exibidas conforme abaixo:
A cláusual ORDER BY
Para exibir os registros em ordem usamos a cláusula ORDER BY
Colocando as palavras chaves ASC e DESC depois de cada coluna estamos indicando a ordem na qual você quer ordenar a coluna .
ASC indica ordem ascendente (do menor para o maior) e DESC indica ordem descendente.
Ex: SELECT * FROM Authors ORDER BY Author ASC
Abaixo temos o resultado desta seleção onde a ordenação é feita pelo campo Author na ordem ascendente (ASC)
Nota : você pode combinar em uma mesma instrução SQL a ordenação usando ASC e DESC.
Ex: SELECT * FROM Authors ORDER BY Au_Id DESC, Author ASC
A clásusula WHERE
Usamos a cláusula WHERE para controlar o resultado obtido pelo comando SELECT. Existem duas maneiras duas maneiras de fazer isto:
Quando for selecionar e exibir registros de dados de um tabela usando SELECT , SEMPRE use a cláusula WHERE. Você faz isto definindo um critério para filtrar os dados da retornados: WHERE coluna = critério
SELECT Name , State FROM Publishers WHERE state = 'CA'
A instrução SQL
selecione as colunas Name e State da tabela Publishers
do banco de dados
Biblio.mdb. A cláusula WHERE acima filtra os dados retornados pelo comando SELECT e retorna somente os registros cuja coluna state for igual a CA. Perceba que a palavra CA esta entre aspas simples pois é uma string Se a coluna requerer como critério um valor numérico não há necessidade de envolver o critério por aspas simples; A instrução SQL para selecionar somente registros da tabela Publishers cuja coluna PubID for menor que 10 será : SELECT PubId, Name , State FROM Publishers WHERE PubId < 10 Podemos também usar mais de um critério na instrução SQL , assim : SELECT PubId, Name , State FROM Publishers WHERE PubId < 10 AND state= 'CA' |
Além do operador AND você também pode usar o operador OR e ainda pode usar também os operadores de comparação : = , <> , < , > , >= , <=.
Se a coluna for do tipo Date devemos usar a cerquilha(#) entre o valor de data do critério.
Ex: criterio = #12/09/1957#
Além disto o VB suporta a utilização da cláusula BETWEEN / AND na cláusula WHERE. Vejamos um exemplo:
SELECT PubId, Name , State , City FROM Publishers WHERE PubId BETWEEN 10 AND 15
O resultado será a seleção das colunas indicadas quando a coluna PubId estiver entre 10 e 15 conforme abaixo:
A palavra IN também pode ser usada para ser usada como critério contra uma lista de opções. Veja :
SELECT PubId, Name , State , City FROM Publishers WHERE State IN ('NY' , 'CA' , 'RI')
seleciona as colunas da tabela Publishers quando a coluna State coincidir com um dos seguintes valores : 'NY' , 'CA' . Iremos obter :
Outro recurso interessante é a função LIKE que pode ser usado com WHERE . Ela retorna todas as linhas cujo conteúdo das colunas for igual ao literal passado na função.
SELECT PubId, Name , State FROM Publishers WHERE State LIKE ('B%')
O comando acima exibe todas as colunas indicadas da tabela Publishers onde a coluna state for iniciada com a letra B.
Nota: Você deve usar o caractere % ao invés do asterístico (*).
Resumo das exigências da sintaxe contidas nas instruções SQL
Elemento | Contém | Exemplos | Quando usar |
Dados Numéricos | Nenhum | ||
Dados de texto(Strings) | Aspas simples(') ou duplas(") | 'macoratti' ou "SP" | Sempre |
Dados de datas | cerquilha(#) | #12/09/2004# | Sempre |
Nomes de campos | Colchetes([]) | [Nome],[Ano Final] | Quando o nome do campo tiver espaços |
Nome de tabelas | Colchetes([]) | [Detalhes Pedido] | Quando o nome do campo tiver espaços |
DICA-Como toda a instrução
SQL vem entre aspas duplas(") , os dados de texto no interior da instrução SQL
requerem aspas simples(')
Ex: sql = "SELECT
[nome] , [cidade], [cep] FROM Clientes WHERE [UF] =
'SP' "
Se o texto contido possuir aspas simples(') você deverá incluir aspas duplas. Ex:
sql = "SELECT [nome] , [cidade], [cep] FROM Clientes WHERE [Nome] = ""Joe's King""
E eu vou ficando por aqui, em breve retornarei ao assunto...
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: