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

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (10)  (0)

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!!

Leia também

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?