Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Tutorial SQL. Seu guia prático para execução de consultas – Parte

Aprenda a usar a linguagem SQL para execução de consultas e subconsultas.

Tutorial SQL

Seu guia prático para execução de consultas – Parte I

Reinaldo Viana

Prezado Leitor, nesta série de artigos você terá a oportunidade de aprender a usar a linguagem SQL para execução de consultas e subconsultas. Serão apresentados os conceitos necessários para a realização de consultas através de um encadeamento especialmente preparado para tornar interessante o seu aprendizado.

 

Tenha um ótimo estudo!

Para começar

Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento de dados e recuperação de informações utilizadas em diversas aplicações. Em um SGBD, os dados do banco de dados são mantidos em tabelas, o que torna imprescindível o conhecimento dessa estrutura, detalhada na Nota 1.

 

Nota 1. Anatomia de uma tabela

 A tabela é uma estrutura matricial composta por linhas e colunas. Na prática, cada linha representa um objeto do negócio e cada coluna representa uma característica dele. Por exemplo, a Tabela 1 (CLIENTE) representa um cadastro de clientes. Cada cliente possui código, nome, sexo, CPF, data de nascimento e salário.

 

                                                   CLIENTE

#CODIGO

NOME

SEXO

CPF

NASCIMENTO

SALARIO

1

Alcides

Masculino

111222333-44

1/12/1975

 R$  7.000,00

2

Cristiano

Masculino

222333444-55

12/3/1970

 R$  7.000,00

3

Cristiane

Feminino

333444555-66

20/7/1977

 R$  1.500,00

4

Raquel

Feminino

444555666-77

3/4/1983

 R$  3.400,00

5

Pedro

Masculino

555666777-88

4/4/1976

 R$  1.200,00

Tabela 1. Cliente.

 

As linhas de uma tabela são conhecidas por registros ou tuplas. Já as colunas, por campos ou atributos. No desenho, a primeira linha representa os nomes das colunas.

 

DicaSql: Em expressões SQL, é possível referenciar o conteúdo de qualquer coluna através da convenção NomeTabela.NomeColuna. Por exemplo, para referenciar o campo CPF da tabela CLIENTE, pode-se usar CLIENTE.CPF. A maioria dos SGBDs permite que o usuário omita o nome da tabela, exigindo apenas a sintaxe completa no caso da existência de colunas com mesmo nome.

 

Na prática, a construção de um banco de dados envolve a criação de diversas tabelas relacionadas. O relacionamento entre tabelas ocorre através do uso de um mecanismo denominado chave estrangeira. Para maiores detalhes sobre relacionamentos entre tabelas, observe a Nota 2.

 

Nota 2. Entendendo relacionamentos entre tabelas.

Relacionamentos entre tabelas ajudam a manter íntegros os dados do banco de dados. Para aprender sobre o mecanismo de relacionamento, é interessante estudar as definições de chave primária e de chave estrangeira:

·         A chave primária serve para identificar de forma única cada linha de uma tabela. Para isso, é utilizada uma coluna ou uma combinação de colunas da própria tabela. Quando uma chave primária é escolhida, o próprio SGBD se encarrega de realizar as verificações necessárias para manter a integridade dos dados (a chave primária não pode conter valor nulo). Por exemplo, no modelo composto pelas Tabelas 1 e 2, a chave primária da tabela CLIENTE é o campo Código e a da tabela FONE é representada pelos campos Código, Fone e Tipo.

·         A chave estrangeira serve para realizar ligações entre tabelas. Tais ligações, ou relacionamentos, são essenciais para ajudar a manter íntegros os dados do banco de dados. Por exemplo, na tabela FONE o campo Código representa a chave estrangeira. Na prática, a tabela FONE depende da tabela CLIENTE. Sendo assim, para que determinado telefone seja cadastrado, é necessário que exista um cliente correspondente na tabela CLIENTE. Neste caso, um cliente pode não ter telefone (cliente Pedro) ou pode possuir vários (cliente Alcides, por exemplo).

 

FONE

#CODIGO

#FONE

#TIPO

1

34569789

residencial

1

99009988

celular

3

88223456

celular

4

23459899

residencial

2

87789009

celular

Tabela 2. Fone.

 

 

A vantagem da linguagem SQL reside no fato dela ser declarativa, ou seja, todo o esforço de codificação de nossa parte é resumido na escrita de solicitações que são submetidas ao SGBD, não importando (pelo menos se não pensarmos em otimização de consultas) a forma que o mesmo utilizará para recuperar as informações.

Uma sintaxe para consultas

Estudada a composição de uma tabela e ciente da importância das chaves primária e estrangeira na manutenção da integridade dos dados do banco de dados, é chegada a hora de conhecer os principais comandos utilizados para a realização de consultas. Para isso, observe o código presente na Figura 1, camisa bastante utilizada por diversos leitores desta revista.

 


15-09pic01.JPG 

Figura 1. Sintaxe SQL para a execução de consultas.

A Figura 1 representa a sintaxe SQL utilizada pela maioria dos SGBD. Observe o significado de cada comando:

 

SELECT [DISTINCT | ALL] {*|table.*|[table].field1}

 

·         Esta linha serve para apresentar ao usuário as colunas (field) especificadas;

·         As colunas podem existir em alguma tabela, ou podem ser calculadas através do uso de alguma função especial (AVG, SUM, COUNT, etc);

·         As linhas resultantes de uma consulta podem apresentar mesmo conteúdo. Utiliza-se DISTINCT para remover linhas repetidas. Para que sejam apresentadas linhas iguais, utiliza-se opção ALL. Na prática, esta opção é utilizada como padrão na maioria dos SGBDs;

·         table.* indica a recuperação de todas (*) as colunas de determinada tabela da consulta. Para recuperar apenas determinado atributo, substitui-se o * pelo nome da coluna [table].field1.

 

- FROM table [, ...]

 

·         Nesta linha são declaradas as tabelas envolvidas na consulta;

·         Em consultas envolvendo várias tabelas, é necessário indicar os campos que fazem parte do relacionamento para que o SGBD possa recuperar corretamente as informações.

·         É interessante notar que o nome de qualquer tabela pode ser virtualmente modificado, principalmente para facilitar a escrita das consultas.

 

[WHERE criteria]

 

·         Aqui são declarados os mecanismos (conjunto de condições e filtros) necessários à obtenção da informação;

·         É possível compor diversos critérios de filtro, usando-se para esse fim uma combinação de operadores lógicos (AND, OR, NOT), subconsultas, operadores de pesquisa em cadeia de caracteres, funções de data, entre outros;

·         Em consultas envolvendo várias tabelas, pode-se estabelecer a condição de ligação entre elas.

 

[GROUP BY groupfieldlist]

 

·         Esta opção é utilizada para agrupar informações em uma consulta;

·         Em groupfieldlist declara-se um conjunto de atributos os quais o SGBD considerará um grupo,

·         Quando utilizado em conjunto com funções de agregação (por exemplo, AVG e SUM), os resultados dessas funções são calculados para cada grupo declarado em groupfieldlist.

 

[HAVING groupcriteria]

 

·         De maneira semelhante à WHERE, esta opção serve para realizar filtros na consulta;

·         Os filtros realizados por HAVING são executados após a operação de grupamento ter sido executada. Neste caso, é possível utilizar funções de agregação como critérios de filtro.

 

[ORDER BY field1 [ASC | DESC]

 

·         É utilizada para ordenar o resultado da consulta;

·         É possível escolher, para cada coluna, o tipo de ordenação (ascendente ou descendente);

·         A maioria dos SGBD utiliza como padrão a ordenação ascendente, neste caso tornando desnecessária a declaração do critério ASC.

 

Neste artigo, realizamos uma breve revisão sobre conceitos do mundo relacional de dados, além da apresentação de uma sintaxe SQL para recuperação de informação. Na segunda parte desse artigo serão estudados diversos exemplos úteis ao seu aprendizado.

Até a próxima!!





    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Albuquerque
preciso fazer uma pesq por data de emissao dos cheques,apos retorno dos dados preciso imprimi-los, uso o datetimepicker,dbgrid,button para pesq. se alguem poder me ajudar,desde ja agradeço..


em 3/11/2006 16:02 - Responder

 

  Marcos
Bom voçe pode usar esse bloco de comandos abaixo mas existem outras formas ok. ShortDateFormat := "yyyy/mm/dd"; with Q_sua_query do begin Close; SQL.Clear; SQL.Add("Select * from suatabela"); SQL.Add("where data_emissao = """ DateToStr(DateTimePicker1.date) """"); ShowMessage(Q_sua_query.SQL.Text); Open; end; ShortDateFormat := "dd/mm/yyyy"; esse comando ShortDateFormat := "dd/mm/yyyy"; e para inverter a data, pode ser dizer assim do datetimer isso porque o Sql se for o seu caso trabalha com o formato de data assim : "ano/mes/dia" Espero ter ajudado. tira as aspas duplas e coloque as simples deu erro na hora de postar


em 15/11/2006 09:34 - Responder
 

Luiz Kawano
Prezado Reinaldo, sou um entre muitos interessados em aprender sobre BD. Estou constantemente plugado na Internet, prá ver se acho algo legal sobre a matéria, por isso é que envio este e-mail para perguntar algo concernente ao BD. Reinaldo, estou lendo um manual sobre BD, mas ele é compacto e momentaneamente fico sem enterder algumas coisas. Vamos ao que interessa. Dentro dos comandos SQL (com tabela e tudo mais, tem campos que vem vazios, por quê?


em 2/2/2007 21:43 - Responder

 



Autor
Reinaldo Viana Alvares

Reinaldo Viana Alvares (reinaldoviana@gmail.com) é Tecnólogo em Processamento de Dados pela UNAMA – Universidade da Amazônia ( www.unama.br ), Especialista em Análise de Sistemas pela UFPA – Universidade Federal do Pará ( www.ufpa.br ), Mestre em Computação pela UFF – Universidade Federal Flum...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
5   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da SQL Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03