4-Introdução à Instrução SELECT em Tabelas
No capítulo anterior estudamos algumas instruções bem básicas, usando SELECT
Nesse capítulo continuamos com a apresentação do SELECT, agora aplicado consultas (básicas) em bancos de dados.
Além da instrução SELECT, vamos ver algumas outras:
show databases;use DATABASE-NOME;show tables;describe tabela-nomeselect ...LIMIT- count
Organização do Banco de Dados
A linguagem SQL e o SGBD Mysql trabalham usam banco de dados estruturados em tabelas.
Uma tabela é uma organização formada por linhas e colunas. As tabelas são "as materializações das relações do modelo relacional.
Na terminologia de Banco de Dados as linhas são os registros (record). Cada linha (registro) representa a instância de um item armazenado. Cada coluna uma informação relativa ao item específico. A cada coluna é associado um tipo de dado.
Na figura dada abaixo, temos uma tabela ultra-simples formada por 5 colunas e 5 linhas, sendo 4 linhas de dados (registros) e uma linha que caracteriza as colunas. Cada coluna possui um tipo de dado: numérico, string ou caractere.
A linguagem SQL possui diferentes tipos de dados, como veremos em detalhe adiante no curso.
Algumas consultas em tabelas
Banco de Dados "empresa"
Exemplo 1: Banco de Dados "empresa"
Nesse primeiro exemplo vamos fazer algumas consultas no banco de dados "empresa". Essa banco contém três tabelas: descontos, pagamentos, empregados.
Para podermos usá-lo nas consulta, temos que defini-lo com o "banco de dados corrente", para isso usamos a instrução use.
Veja:
use empresa;
Podemos usar a instrução show tables para vermos as tabelas do banco.
Opcionalmente, podemos usar a instrução "describe NOME-TABELA" para ver a estrutura de uma tabela (ou seja para "descrever a tabela"). Por exemplo, podemos fazer:
describe descontos;
para ver quais as colunas da tabela "descontos". Ao apresentar o resultado, o mysql apresenta o campo (título da coluna), o tipo de dado que a coluna aceita e características específicas do campo (veremos mais adinte no curso como criar um tabela e definir seus campos).
Usando SELECT
Alguns exemplos do uso da instruçãoselect.
- para ver todas as colunas e linhas da tabela, faça
select * FROM nome-tabela - Exemplo:
select * from descontos: seleciona (e mostra) todas as colunas (ou campos) da tabela "descontos" - Para mostrar as colunas especificadas (c1,c2,...cn) e todas as linhas da tabela, faça
select c1,c2,..,cn FROM nome-tabela - Exemplo:
select * from descontos: seleciona (e mostra) todas as colunas (ou campos) da tabela "descontos"
Observação
Para usar um banco de dados no mysql temos que carregá-lo (a partir de um arquivo externo) ou criá-lo. Para carregar o banco de dados "empresa", veja a explicação aqui.Vejas nas imagens do Exemplo 1 abaixo, as diversas instruções e os resultados das consultas.
Exemplo 1
mysql> use empresa;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_empresa |
+-------------------+
| descontos |
| empregados |
| pagamentos |
+-------------------+
3 rows in set (0.00 sec)
mysql> describe descontos;
+------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------+------+-----+---------+-------+
| codigo_desconto | int | YES | | NULL | |
| codigo_empregado | int | YES | | NULL | |
| valor | decimal(10,2) | YES | | NULL | |
+------------------+---------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> select * from descontos;
+-----------------+------------------+-------+
| codigo_desconto | codigo_empregado | valor |
+-----------------+------------------+-------+
| NULL | 1 | 50.00 |
| NULL | 2 | 20.00 |
| NULL | 5 | 30.00 |
+-----------------+------------------+-------+
3 rows in set (0.00 sec)
mysql> select * from empregados;
+------------------+----------+
| codigo_empregado | nome |
+------------------+----------+
| 2 | Marina |
| 3 | Letícia |
| 1 | Luis |
| 4 | Gustavo |
| 5 | Mateus |
+------------------+----------+
5 rows in set (0.00 sec)
mysql> select * from pagamentos;
+--------------+------------------+--------+
| codigo_pagto | codigo_empregado | valor |
+--------------+------------------+--------+
| NULL | 1 | 100.00 |
| NULL | 1 | 200.00 |
| NULL | 3 | 300.00 |
| NULL | 5 | 400.00 |
| NULL | 5 | 500.00 |
| NULL | 1 | 100.00 |
| NULL | 1 | 200.00 |
| NULL | 3 | 300.00 |
| NULL | 5 | 400.00 |
| NULL | 5 | 500.00 |
+--------------+------------------+--------+
10 rows in set (0.00 sec)
mysql> select codigo_empregado, valor from pagamentos;
+------------------+--------+
| codigo_empregado | valor |
+------------------+--------+
| 1 | 100.00 |
| 1 | 200.00 |
| 3 | 300.00 |
| 5 | 400.00 |
| 5 | 500.00 |
| 1 | 100.00 |
| 1 | 200.00 |
| 3 | 300.00 |
| 5 | 400.00 |
| 5 | 500.00 |
+------------------+--------+
10 rows in set (0.00 sec)
Select com WHERE e LIKE
Usamos a cláusula WHERE para fazer consultas com restrições especificadas. Assim WHERE é seguida de uma expressão lógica.
Quando usamos pesquisa em STRINGS (ou seja campos (colunas) com strings) podemos usar o predicado LIKE para buscar string ou parte delas. Podemos usar o caracter coringa % ou _ para selecionar partes das strings.
Veja alguns exemplos usando o banco de dados empresa.
Exemplo 2 - USANDO LIKE
mysql> select * from empregados where nome ='Mateus';
+------------------+--------+
| codigo_empregado | nome |
+------------------+--------+
| 5 | Mateus |
+------------------+--------+
1 row in set (0.00 sec)
mysql> select * from empregados where nome LIKE 'Mateus';
+------------------+--------+
| codigo_empregado | nome |
+------------------+--------+
| 5 | Mateus |
+------------------+--------+
1 row in set (0.00 sec)
mysql> select * from empregados where nome ='Ma%';
Empty set (0.00 sec)
mysql> select * from empregados where nome like 'Ma%';
+------------------+--------+
| codigo_empregado | nome |
+------------------+--------+
| 2 | Marina |
| 5 | Mateus |
+------------------+--------+
2 rows in set (0.00 sec)
mysql> select * from empregados
-> where nome LIKE '%a';
+------------------+----------+
| codigo_empregado | nome |
+------------------+----------+
| 2 | Marina |
| 3 | Letícia |
+------------------+----------+
2 rows in set (0.00 sec)
Select com WHERE, IN e BETWEEN
Podemos usar os predicados IN e BETWEEN para, respectivamente, procurar valores dentro de uma lista ou entre um intervalo.
Veja os exemplos a seguir.
Exemplo 3- USANDO BETWEEN e IN...-0
mysql> select codigo_empregado AS codigo, valor from pagamentos where valor BETWEEN 200 AND 400;
+--------+--------+
| codigo | valor |
+--------+--------+
| 1 | 200.00 |
| 3 | 300.00 |
| 5 | 400.00 |
+--------+--------+
3 rows in set (0.00 sec)
mysql> select * from empregados
-> where nome IN ('Marina','Leticia');
+------------------+----------+
| codigo_empregado | nome |
+------------------+----------+
| 2 | Marina |
| 3 | Letícia |
+------------------+----------+
2 rows in set (0.00 sec)
Usando Banco de Dados no seu mysql
Vimos nesse capítulo algumas poucas instruções de consulta a partir da instrução SELECT.
Usamos um banco de ados muito simples. No nosso exemplo, quando entramos no sistema, o banco de dados já estava lá. Ou seja, ela já havia sido carregado.
Mas caso você não tenha o banco de dados no seu sistema (e caso você não use o mysql do servidor da escola, você não o terá), você terá que criá-lo ou carregá-lo.
Como carregar um banco de Dados
Como carregar um banco de DadosUma forma simples de se carregar o banco de dados e fazê-lo no instante que você faz o login no mysql.
Para isso você precisa ter um arquivo texto descrevendo o banco de dados, na linguagem SQL (com os comandos/instruções do mysql). Geralmente damos a extensão .sql para esses arquivos.
Assim, quando vamos carregar o banco de dados empresa, usado no Exemplo 1 acima, fizemos, no prompt do terminal linux:
Comando no terminal do Ubuntu
mysql -u fantini -p < empresa.sql
Para obter o arquivo empresa.sql clique aqui.
Exercício 2
Nesse exercício continuamos apresentando instruções básicas de consulta. Veja no arquivo PDF apresentado abaixo, as diferentes consultas realizadas em alguns bancos de dados criados especificamente para testes.
Atente para as instruções e as explicações.
Nos exemplos apresentados usamos os bancos de dados:
- empresa
- world. Esse é um banco criado para testes, disponibilzado pela Mysql.com. Baixe o arquivo sql, clicando aqui.
- employees (https://dev.mysql.com/doc/employee/en/). Esse também é um banco padrão disponibilzado pela Mysql.com (Sample employee database). Ele faz parte de um tutorial básico. Nesse link apresentado você encontra as explicações de como usar o banco e de como estudar a estrutura do banco e usar alguns comandos avançados. Se desejar apenas obter o arquivo sql desse banco, clique aqui.
- uso do AS para criar apelidos (alias)
- Apresentamos a cláusla WHERE
- Apresentamos a cláusla GROUP BY (agrupa valores da listagem)
- Apresentamos a função COUNT() (conta)
- Apresentamos a função SUM() (soma)
- Apresentamos a função AVG() (média)
- Apresentamos a função MAX() (máximo)
- Apresentamos a função MIN() (mínimo)
- Apresentamos a cláusla ORDER BY (ordena a listagem)
Observação
Veremos, mais adiante nos curso, como criar consultas mais elaboradas, com SELECT e funções e cláuslas específicas
Tarefa do Exercício: Estude os exemplos e as explicações, executando as consultas apresentadas aqui