Já vimos anteriormente como incluir, alterar e excluir informações das tabelas de um Banco de Dados. Vamos agora entender como efetuar consultas sobre essas informações. O comando que vamos abordar agora é um dos mais utilizados na maioria das aplicações que envolvem bancos de dados.

O comando SELECT

Com esse comando podemos selecionar todas as linhas de uma ou mais tabelas, ou apenas uma parte dessas linhas.

Sintaxe:

SELECT <campo1>, <campo2>, ... , <campoN> FROM <tabela1>,<tabela2>, ... <tabelaN> WHERE <condições>;

Você pode fazer uso do * (asterisco) para selecionar todos os dados.

Ex: Se no lugar de <campo1> você colocar * serão retornados todos os campos da tabela.

Se a cláusula WHERE não for informada, também serão mostrados todos os registros da tabela.

Inicialmente antes de começarmos a efetuar o exemplo peço que você exercite um pouco os conhecimentos obtidos nos artigos anteriores;

Vamos criar então o banco de dados: bdcarros, com duas tabelas carros e categorias, para isso basta você acessar o phpMyAdmin em seguida clicar na opção Banco de Dados e no topo, clicar na aba SQL, lá você pode digitar os comandos SQL conforme mostra o código a seguir:

1º - Criando o banco de dados:

CREATE DATABASE bdcarros;


2º - Criando as tabelas:

CREATE TABLE carros (

codigo_carro smallint NOT NULL,

nome_carro varchar(80) NOT NULL,

descricao_carro text,

preco float NOT NULL,

cod_categoria smallint NOT NULL,

fabricante varchar(50)

);

CREATE TABLE categorias (

codigo_categoria smallint NOT NULL,

nome_categoria varchar(60) NOT NULL

);


Em seguida precisamos atribuir alguns registros para as tabelas, novamente na aba SQL digite o código que segue abaixo(se preferir copie e cole):

INSERT INTO carros VALUES (

1,

'GOL',

'Modelo popular da marca.',

27000,

1,

'Volkswagen'

);

INSERT INTO carros VALUES (

2,

'FOX',

'Modelo médio da marca.',

30000,

1,

'Volkswagen'

);

INSERT INTO carros VALUES (

3,

'KA',

'Modelo popular da marca.',

23000,

1,

'Ford'

);

INSERT INTO carros VALUES (

4,

'Palio',

'Modelo médio da marca.',

26000,

1,

'Fiat'

);

INSERT INTO carros VALUES (

5,

'Uno Mille',

'Modelo popular da marca.',

23000,

1,

'Fiat'

);

INSERT INTO carros VALUES (

6,

'Corsa Sedan',

'Modelo médio da marca.',

37000,

2,

'Chevrolet'

);

INSERT INTO carros VALUES (

7,

'Corsa Classic',

'Modelo médio da marca.',

29000,

2,

'Chevrolet'

);

INSERT INTO carros VALUES (

8,

'Prisma',

'Modelo médio da marca.',

29900,

2,

'Chevrolet'

);

INSERT INTO carros VALUES (

9,

'Voyage',

'Modelo médio da marca.',

30400,

2,

'Volkswagen'

);

INSERT INTO carros VALUES (

10,

'Fiesta Sedan',

'Modelo médio da marca.',

39990,

2,

'Chevrolet'

);


Agora que o banco está criado juntamente com as tabelas e registros podemos começar a aprender como utilizar o comando SELECT.
Ex: Vamos então selecionar todos os registros da tabela carros, novamente na aba SQL digite:
SELECT * FROM carros;
Resultado:

Se você não quiser visualizar todos os campos da tabela carros, basta substituir o asterisco pelos campos os quais deseja visualizar:

SELECT codigo_carro, nome_carro, preco FROM carros;


Operadores de Comparação e Lógicos

Outro exemplo agora usando a tabela categorias, aqui vamos visualizar qual o nome da categoria referente ao código = 1:

SELECT nome_categoria FROM categorias WHERE codigo_categoria = 1;

Resultado da consulta:


Vamos complicar um pouquinho mais as coisas, queremos agora selecionar os registros da tabela e mostrar os nomes dos carros que possuem valor maior ou igual a R$ 30000, então vamos ter que utilizar operadores de comparação, como mostra o exemplo a seguir:

SELECT nome_carro FROM carros WHERE preco >= 30000;

Vamos mostrar mais um exemplo: Quero selecionar todos os registros da tabela carros nos quais o código da categoria seja igual a 2, o que significa, onde a categoria seja Sedan Compacto, exibindo assim o nome e o preço dos carros da categoria desejada, para isso utilizamos o seguinte código:

SELECT nome_carro, preco FROM carros WHERE cod_categoria =2;

Como mostra os comandos digitado acima, WHERE deve ser seguido por uma ou mais condições, podem conter os operadores: >,<,>=,<=,= e <>. Se houver mais de uma condição a ser analisada, utilizamos operadores lógicos AND e OR.

Agora gostaria de mostrar um exemplo utilizando operadores lógicos. A seguir quero que seja exibido como resultado o código do carro e o nome, quando o código da categoria for igual a 1, ou seja, quando a categoria for igual hatch compacto e o valor menor ou igual a 25000.

SELECT codigo_carro, nome_carro FROM carros WHERE cod_categoria=1 AND preco <= 25000;

Novamente vamos executar mais um exemplo utilizando operadores lógicos, quero que seja exibido o nome do carro e o nome da categoria, onde o codigo dessa categoria seja igual a 1. Note que os campos os quais desejo obter como resultado fazem parte de tabelas diferentes.

SELECT nome_carro, nome_categoria FROM carros, categorias WHERE cod_categoria = 1 AND codigo_categoria = 1;

Veja que cod_categoria pertence a tabela carros e codigo_categoria a tabela categorias, por isso existe a necessidade da comparação lógica.


Operador LIKE e NOT LIKE

Esses operadores possuem grande utilidade, com eles podemos efetuar pesquisa dentro do conteúdo dos campos que estiverem no formato caractere.

Por exemplo, se eu quiser que sejam exibidos todos os registros da tabela carros no qual o conteúdo dos registros do campo nome_carro inicie com a letra C, basta utilizar o seguinte código:

SELECT * FROM carros WHERE nome_carro LIKE 'C%';

Como resultado serão exibidos todos os registros e campos dos carros que iniciam com a letra C:

Esse comando é utilizado com o simbolo %, que representa a sequencia de caracteres, ou com o simbolo _ , que representa um caractere qualquer.

Você pode utilizar esse operador para efetuar vários tipos de pesquisa, como segue abaixo:

OPERADOR DESCRIÇÃO

LIKE '_B%' Indica que busca qualquer conteúdo em que a letra B esteja na segunda posição.

LIKE '%A' Busca qualquer conteúdo que termine com a letra A.

LIKE 'B%A%A' Busca qualquer conteúdo que começa com a letra B, termine com a letra A, e possua no meio a letra A

novamente.

NOT LIKE '%@%' Retorna aqueles que não possuem o caractere @ no meio. Serve para testar por exemplo a digitação

de e-mails.


OBS: Lembre-se sempre de que os dados devem ser armazenados no Banco de Dados de forma diferente do nosso exemplo, sempre totalmente em maiúsculas ou minúsculas, para facilitar as pesquisas. Pois no caso do comando acima se colocassemos c em minúsculas, nenhum resultado seria retornado. E posteriormente através da linguagem de programação que fará uso dos dados seu formato poderá ser alterado.


DISTINCT

Esse comando evita que o mesmo conteúdo exibido como resultado seja repetido várias vezes.

Por exemplo, imagine se por algum motivo seja necessário saber quais são todos os fabricantes dos carros cadastrados em nossa tabela. Se digitarmos o código:

SELECT fabricantes FROM carros;

Vamos ter vários resultados repetidos:

Imagine se a nossa tabela tivesse mais de 1000 registros, não teria como identificar os fabricantes!

Para resolver esse tipo de problema, utilizamos então o comando DISTINCT conforme mostra o exemplo a seguir:

SELECT DISTINCT (fabricante) FROM carros;

Você terá como resultado sem repetições:


Outras Funções

COUNT - Usado para contar os registros existentes.

SUM - Soma os valores de determinado campo da tabela.

MAX e MIN - Mostra qual o valor mais alto ou baixo de um campo.

AVG - Calcula a média dos valores de um determinado campo.


Exemplos:

Quero saber quantos registros estão cadastrados para categoria hatch compacto que tem como código o número 1.

SELECT COUNT(*) FROM carros WHERE cod_categoria = 1;

Resultado, existem 5 carros nesta categoria:


Ex: Quero somar todos os valores dos carros existentes em minha tabela.

SELECT SUM (preco) FROM carros;

Resultado, valor total de todos os carros da tabela:


Ex: Quero saber qual é o carro mais caro da minha tabela de carros.

SELECT MAX(preco) FROM carros;

Como resultado o carro mais caro da tabela custa:


Ex: Quero a média de todos os valores de carros que tenho em minha tabela.

SELECT AVG(preco) FROM carros;

Resultado:


Por hoje paramos aqui, mais esse artigo terá mais informações complementares explicando como utilizar GROUP BY o qual agrupa resultados de uma pesquisa e ORDER BY que serve para ordenar os registros retornados de uma consulta.

Até breve